概述

今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。

参考:

http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT003

https://docs.oracle.com/database/121/NEWFT/chapter12101.htm#NEWFT348


1、不可见字段(Invisible columns)

在 12c R1中,可以在表中创建不可见字段。当一个字段为不可见时,这一字段就不会出现在查询结果中,除非显式在 SQL 语句或条件中指定,或是在表定义中有 DESCRIBED。

实例:

创建一张表TEST,将其中一列设置为invisible,字段查询观察结果。

1.1、建表

create table emp (id number,name varchar2(20) invisible);insert into emp(id,name) values(1,'tom');insert into emp(id,name) values(2,'mike');commit;

1.2、字段查询

select * from emp;select id,name from emp;

1.3、PLSQL查看


2、相同字段上的多重索引(Multiple indexes on the same set of columns)

在12c中可使用invisible参数,对表同一字段创建不同类型的索引

实例:

2.1、建表及索引

create table dup(name varchar2(10),sex varchar2(10),adr varchar2(200),id number(10),birth date);create index idx_dup_adr on dup(adr);create bitmap index bitidx_dup_adr on dup(adr) invisible;SELECT OWNER,INDEX_NAME,INDEX_TYPE,TABLE_NAME,STATUS,VISIBILITY FROM DBA_INDEXES WHERE TABLE_NAME='DUP';

2.2、如果要使bitmap索引生效,将btree索引设为隐藏

alter index idx_dup_adr invisible;alter index bitidx_dup_adr visible;

3、DDL日志

DDL log开启之后可在记录的xml文件中找到对应的时间戳以及主机ip。

以下的 DDL 语句可能会记录在 xml 或日志文件中:

  • CREATE|ALTER|DROP|TRUNCATE TABLE
  • DROP USER
  • CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENCE

3.1、开启 DDL 日志功能

 ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;

3.2、删除表dup

 drop table dup;

3.3、查看日志

 $cat  /u01/app/oracle/diag/rdbms/srm/SRM/log/ddl/log.xml 

4、新的备份用户特权

在11g R2中,引入了SYSASM特权来执行ASM的特定操作。同样地,在12c中引入了SYSBACKUP特权用来在 RMAN中执行备份和恢复命令。因此,你可以在数据库中创建一个本地用户并在不授予其SYSDBA权限的情况下,通过授予SYSBACKUP权限让其能够在RMAN中执行备份和恢复相关的任务。

grant sysbackup to adminrmanconnect target "admin/oracle@pdb as sysbackup"

5、 数据泵的增强

5.1、关闭redo日志的生成

在导入大型表时可以通过增加TRANSFORM选项,关闭redo日志的生成,从而加快导入。

impdp admin/oracle@pdb directory=dump dumpfile=admin.dmp logfile=admin_nolog.log schemas=admin TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y

5.2、导出将视图转换为表

expdp admin/oracle@pdb directory=dump dumpfile=admin.dmp logfile=admin.log views_as_tables=view_test

6、完整可传输导出/导入 迁移数据库(Full transportable export/import)

Oracle 数据库 12c 的完整可传输导出/导入(Full Transportable Export/Import)功能来使用较少的停机时间,将数据库升级/迁移到 Oracle 数据库 12c (12.1.0.2以上)中。(支持单实例迁移到RAC集群)

可以使用full transportable export/import功能将整个数据库从一个数据库实例复制到另一个数据库实例。可以使用Data Pump来生成一个导出dump文件,如果需要将这个dump文件传输到目标数据库,然后导入dump文件。另外也可以使用Data Pump跨网络来复制数据库。

数据库中要被传输的表空间可以是字典管理或本地管理表空间。源数据库中的表空间的块大小不必与目标数据库中标准块大小相同。

这种传输数据库的方法要求直到完成导出dump文件之前所要传输的用户创建的表空间必须设置为只读状态。如果不能满足这个条件那么可以使用备份功能来完成传输表空间。

这个后面单独演示一下。。。

使用导出dump文件方式来传输数据库必须执行以下步骤:
1)在源数据库上,将每个用户表空间设置为只读状态。在执行导出操作时要确保设置参数transportable=always与full=y。如果源数据库的版本是11.2.0.3或11G之后的版本,那么还必须设置version=12或更高版本号。导出的dump文件包含了存储在用户表空间中对象的元数据与存储在管理表空间(比如system与sysaux)中用户创建对象的元数据与实际数据。

2)将导出的dump文件传输到目标数据库

3)将所有用户表空间的所有数据文件传输到目标数据库,如果源平台与目标平台不同,那么需要检查字节编码,可以通过查询v$transportable_platform视图进行查看。如果源平台与目标平台的字节编码不一样,那么使用以下方法来转换数据文件:
(1)使用dbms_file_transfer包中的get_file或put_file过程来传输数据文件。这些过程会将源数据文件自动转换为目标平台的字节编码方式。
(2)使用rman的convert命令将源数据文件转换为目标平台的字节编码方式

4)可选操作,将源数据库中的将被传输的表空间设置为读写状态

5)在目标数据库中导入数据,当导入完成后,用户表空间将会设置为读写状态。


7、扩展数据类型长度32k Strings

VARCHAR2, NAVARCHAR2 以及 RAW 这些数据类型的 大小可以从 4K 以及 2K 字节扩展至32K 字节。

开启方法:

7.1、关闭cdb

 alter pluggable database SRMPDB close;

7.2、启动数据库到upgrade模式

 startup upgrade;

7.3、在cdb内修改初始化参数MAX_STRING_SIZE

ALTER SESSION SET CONTAINER=CDB$ROOT;ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;

7.4、以sys用户执行扩展脚本

 @?/rdbms/admin/utl32k.sql

7.5、重启数据库到normal模式

shutdown immediate;startup;

7.6、执行脚本编译无效对象

 @?/rdbms/admin/utlrp.sql

8、在SQL语句中通过with语句定义函数(12.1.0.2)

ORACLE 12C可以在sql语句中编写函数,在read only或者不想新建函数,可通过这种方法实现。

如下创建一个函数,用来判断输入数据是否是数字,如果是数字输出Y,如果不是输出N.

with function Is_Number      (x in varchar2) return varchar2 is        Plsql_Num_Error exception;         pragma exception_init(Plsql_Num_Error, -06502);     begin       if (To_Number(x) is NOT null) then         return 'Y';       else         return '';      end if;    exception     when Plsql_Num_Error then       return 'N';    end Is_Number;

用select语句调用Is_Number函数

select is_number('1') from dual; /

9、在线移动并重命名数据文件

当数据文件正在传输时,终端用户可以执行查询,DML 以及 DDL 方面的任务

--移动数据文件并且重命名(容器数据只能移动自己所属数据文件)alter database move datafile '/u01/app/oracle/oradata/orcl/pdborcl/admin.dbf' to '/home/oracle/admin1.dbf';--文件系统移动到ASM磁盘(如果rac环境中数据文件创建在某个节点,移动数据文件之后,需要在另外节点重启cdb)alter database move datafile '/home/oracle/admin.dbf' to '+DATA/pdborcl_admin.dbf';

10、高级索引压缩(COMPRESS ADVANCED LOW)

在使用高级索引压缩之后,可以一定程度下降低数据库IO。

场景实验;a表普通索引,b表压缩索引,简单看看段大小

10.1、a表创建普通索引

create table a(id int,object_name varchar2(20));insert into a values(1,'hwb');create index idx_obname_a on a(object_name);select segment_name,bytes/1024/1024 from dba_segments where segment_name =upper('idx_obname_a');

10.2、b表创建压缩索引

create table b(id int,object_name varchar2(20));insert into b values(1,'hwb');create index idx_obname_b on b(object_name) COMPRESS ADVANCED LOW;select segment_name,bytes/1024/1024 from dba_segments where segment_name =upper('idx_obname_b');

我这里数据量太少了,一个段的空间都没占满,所以看到的都是一样。


11、PGA大小限制(PGA Size Limit)

在12C之前,对于PGA内存的管理是使用PGA_AGGREGATE_TARGET参数来控制的,但这个参数只是一个目标值,可以超过设定的大小,无法直接对pga限定大小。

在12C中可使用PGA_AGGREGATE_LIMIT参数来限制Oracle实例PGA使用内存的上限,如果超过限制就采取终止会话的方式来降低PGA内存的使用量。

备注:如果使用ASMM,PGA_AGGREGATE_LIMIT大小为2G(初始化参数未超过2G)或者PGA_AGGREGATE_TARGET的2倍(超过2G)


12、RMAN 表级恢复

在Oracle 12C之前RMAN只能在数据库级(数据文件)、表空间级进行完全恢复或者不完全恢复。如果是某张表发生了截断或者删除,可通过闪回表或者闪回数据库快速恢复,或者是dmp文件。然而到了12C,RMAN可以通过备份将数据表恢复到故障时间点,而其他表不受影响。其过程是在恢复过程中创建辅助实例,还原系统数据文件(system、sysaux、undotbs),基于redo或者archivelog应用,最后通过数据泵导入目标shemas,恢复之后自动创建的辅助实例会被自动删除。


13、In-Memory选件

启用IMO非常简单,12.1.0.2及之后版本下,设置INMEMORY_SIZE 为非0值便可启用IM column store特性。

INMEMORY_SIZE 是个实例级参数,默认为0,设置一个非0值时,最小值为100M。

通常情况下,sys用户下的对象及SYSTEM、SYSAUX表空间上的对象无法使用IMO特性,但通过设置“_enable_imc_sys”隐含参数也可以使用

开启DB In-Memory过程如下:

1)修改INMEMORY_SIZE参数:

SQL> ALTER SYSTEM SET INMEMORY_SIZE=1G SCOPE=SPFILE;

2)检查sga参数的设置,确保在设置完inmemroy_size参数之后数据库实例还可以正常启动。如果数据库使用了ASMM,则需要检查sga_target参数。如果使用了AMM,则需要检查MEMORY_TARGET参数,同时也需要检查SGA_MAX_TARGET(或MEMORY_MAX_TARGET)。

备注:从 12.2 开始,可以动态增加 In-Memory 区域的大小,为此,只需 通过 ALTER SYSTEM 命令增加 INMEMORY_SIZE 参数值即可

3)重启数据库实例

4)查看IM特性是否开启

 SHOW PARAMETER inmemory;

14、全库缓存(Force Full Database Caching Mode)

通常情况下,Oracle会决定哪些数据会留在缓冲区中。当没足够的空间时,数据会被写出内存。此外,为了避免大量读取将有用的信息挤出缓冲区,Oracle对有些操作也许会采取绕过缓冲区的措施。Oracle12cR1 (12.1.0.2)引入了全数据缓冲的概念。如果Oracle认为缓冲区大的足以容纳整个数据库,那么,它将会缓冲所有的数据块。此外,可以强制启用全数据缓冲模式。

要想强制开启该模式,需要先将关闭并将库置于mount状态,否则,在打开的数据库上执行该ALTER DATABASE命令将会报错。

开启强制全库缓存模式数据库兼容性级别必须是12.0.0或者更高;

14.1、查看是否启用全数据库缓存

SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE;

14.2、启用全数据库缓存

startup mount;ALTER DATABASE FORCE FULL DATABASE CACHING;ALTER DATABASE OPEN;

15、Sharding Database

Oracle Sharding是Oracle 12.2版本推出的新功能,也称为数据分片,适用于online transaction processing (OLTP). Oracle Sharding基于表分区技术,是一种在数据层将数据水平分区存储到不同的数据库的技术. Sharding可以实现将一个分区表的不同分区存储在不同的数据库中,每个数据库位于不同的服务器,每一个数据库都称为shard, 这些shard组成一个逻辑数据库,称为sharded database (SDB). 这个table也称为sharded table, 每个shard数据库中保存该表的不同数据集(按照sharding key分区), 但是他们有相同的列(columns)。

Shard是一种shared-nothing技术,每个shard数据库使用独立的服务器硬件(CPU,内存等)。Shard可以运行在单机数据库或者DATAGUARD/ADG数据库。


16、在线把非分区表转为分区表(12.2.0.1)

在Oracle12.2版本之前,如果想把一个非分区表转为分区表常用的有这几种方法:

1)建好分区表然后insert into select 把数据插入到分区表中;

2)使用在线重定义(DBMS_REDEFINITION)的方法。

Oracle12cR2版本中提供了一种新特性,一条语句就可以把非分区表转换为分区表,例如:

alter table tablename modifypartition by range (字段) interval (10)( partition p1 values less than (10),partition p2 values less than (20)) online;

17、表在线移动

在11g以及12C R1,如果通过alter table move降低高水位,表的索引在move之后会失效。在12C R2中可通过独有关键字online子句以及update indexes在线移动表,并且索引不会失效。

 alter table tablename move online;

18、DataGuard通过网络恢复数据文件

在Oracle 12C中可以通过rman指定网络服务名方式,在主备库之间恢复数据库文件,有如下几种方式:

  • 数据库级别: restore database from service 恢复数据文件、控制文件、参数文件。
  • 表空间: restore tablespace from service
  • 控制文件: restore controlfile to ‘指定的位置’ from service
  • SPFILE: restore spfile from service

19、In-Database Archiving数据库内归档

通常,在应用程序开发中对表做设计时,不可避免的会对表中的数据做删除处理,如果直接使用硬删除,则不能有效地对已删除的数据进行追踪;如果采用软删除(例如表中增加了删除标记的字段delete_flag),虽然可以对已删除的字段进行追踪,但如果使用未删除的数据时,需要加上delete_flag='N',这种带删除标记的数据对应用来说是可见的,而且占用一定的存储空间。

Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据。 这些inactive的数据行可以通过压缩进一步优化,且对应用来说默认不可见。该特性可以对现有代码做最少改动的情况下,实现了这种“标记删除”的功能和需求。


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

12c oracle 修改内存_关于Oracle数据库12c 新特性总结相关推荐

  1. 12c oracle 修改内存_还在等12.2吗?Oracle 12c后这个观念要改改!

    原标题:还在等12.2吗?Oracle 12c后这个观念要改改! 上周三(7月20日)北京城暴雨肆虐的场景想必不少人还印象深刻.数据显示,"7.20"降雨总量已超四年前的" ...

  2. oracle 查看内存参数配置,Oracle内存参数配置及版本问题

    Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...

  3. 12c oracle 修改内存_Oracle Database 12c In-Memory(内存数据库) 基本原理与简介

    转    https://blog.csdn.net/stevensxiao/article/details/51437274 参考文献 https://www.zhihu.com/question/ ...

  4. 12c oracle 修改内存_Oracle 12C 内存数据库测试

    1   内存数据库测试 在pdba下创建一张表: create table inmem_test as select * from dba_source; SQL> select count(* ...

  5. 12c oracle 修改内存_Oracle12c中性能优化功能增强新特性之重大突破——内存列存储新特性...

    Oracle12c中内存列存储 内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数 ...

  6. 12c oracle 修改内存_Oracle12c中性能优化amp;功能增强新特性之重大突破——内存列存储新特性...

    内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数据存在内存中的好处显而易见,而列 ...

  7. oracle mysql 乱码_解决Oracle数据库中文乱码

    查询当前Oracle所用编码 在服务器上查看数据库服务器字符集 select userenv('language') from dual; USERENV('LANGUAGE') ---------- ...

  8. oracle修改10到20,Oracle 10.2.0.5 RMAN迁移并升级11.2.0.4一例

    一.环境介绍 1. 源数据库环境 操作系统版本: OEL 5.4 x64 数据库版本  : 10.2.0.5 x64 数据库sid名 : orcl Oracle 10g 10.2.0.5(64bit) ...

  9. Oracle修改表存储参数,Oracle存储结构之参数文件

    Oracle的参数文件非常之多,但最重要的当属数据库参数文件.而数据库参数文件有pfile和spfile两类.pfile需手动修改,是文本文件 Oracle的参数文件非常之多,但最重要的当属数据库参数 ...

最新文章

  1. 图数据库Neo4j简介
  2. 爬虫+数据分析,制作一个世界疫情人数增长动态柱状竞赛图2
  3. 安卓手机chroot linux,在Android设备上安装 GNU/Linux Chroot 环境
  4. Ubuntu系统---以virtualenv方式安装Tensorflow-CPU
  5. 方差和协方差的数据意义
  6. vue Method 事件
  7. 【python】pycharm启动 一直index,无法运行
  8. 开发springboot项目,遇到的一些问题总结
  9. 照顾好自己才能照顾好别人_6种照顾数字外观的方法
  10. ofo回应发币传闻:从未参与虚拟货币的发行 与GSE Lab合作已终止
  11. 【Unity新闻】如何使用Unity进行机器人模拟? | AR/VR全球需求率激增1400%
  12. sql server高可用_SQL Server 2019常规可用性和安装概述
  13. 对数周期天线hfss建模_07 HFSS软件二次开发在对数周期天线设计中的应用
  14. shell编程三大神器之grep
  15. android动画入门
  16. AMiner推荐论文:Strongly coupled N-doped graphene quantum dots/Ni(Fe)OxHy electrocatalysts with accelerat
  17. 复试21天Day 20
  18. ceph rbd扩容
  19. 计算机基础在线网络课程,欢迎访问大学计算机基础网络课程
  20. 【蓝桥杯单片机组实战】2、高级计算器

热门文章

  1. IdentityServer4之JWT签名(RSA加密证书)及验签
  2. 走进 Cake for .NET
  3. 站在巨人肩上的.NET Core 2.1
  4. AutoMapper在asp.netcore中的使用
  5. Postman高级应用——流程控制、调试、公共函数、外部数据文件
  6. 活动: 北京Xamarin分享会第4期(2017年7月8日)
  7. 微软说它深爱着Linux,现在它用行动证明了
  8. 高可用架构可行性方案
  9. 将域名绑定到ip上,并实现访问不同二级子域名对应不同目录
  10. 从listView1中选择记录到listView2中