目录
1、PL/SQL性能增强
类似在匿名块中定义过程,现在可以通过with 语句在SQL 中定义一个函数,采用这种方式可以提高 SQL 调用的性能。
2、改善了Defaults(默认值)
可以为自增列、空的数据列指定默认值,还可以在增加一个新列时指定默认值。与11g 版大不同的是:11g 的default 值要求 NOT NULL (非空)列。
3、放宽了多种数据类型的长度限制
增加 VACHAR2、NVARCHAR2 和 RAW 类型的长度到32 kb,要求兼容性设置为 19.0.0.0 以上,且设置初始化参数 MAX_SQL_STRING_SIZE 为EXTENDED,这个功能不文特 CLUSTER 表和索引组织表。最后,这个功能并不是真正改变了VARCHAR2 的限制,而是通过 OUT OF LINE 的 CLOB 实现。
4、TOP N 的语句实现
在SELECT 语句中使用 FETCH next N rows 或者 OFFSET 可以指定前N条或前百分之多少的记录。
5、行模式匹配
类似分析函数的功能,可以在行间进行匹配判断并进行计算。在SQL中,新的模式匹配语句是 match_recognize。
6、分区改进
Oracle Database 19c 中对分区功能做了较多的调整,其中共分成6部分:
1)NTERVAI-REFERENCE 分区;
把11g的interval分区和reference 分区相结合,这样主表自动增加一个分区后,所有的子表、孙子表、重孙子表、重重孙子表……都可以自动随着外接列新数据的增加,自动创建新的分区。
2)TRUNCATE 和EXCHANGE 分区及子分区;
无论是TRUNCATE 还是EXCHANGE 分区,在主表上执行,都可以级联地同时运行于子表、孙子表、重孙于表、重重孙于表……。对于TRUNCATE 而言,所有表的TRUNCATE操作在同一个事务中,如果中途失败,就会回滚到命令执行之前的状态。这两个功能通过关键宇 CASCADE 实现。
3)在线移动分区;
通过move online 关键字实现在线分区移动。在移动的过程中,对数据表和被移动的分区可以执行查询、DML语句以及分区的创建和维护操作。整个移动过程对应用透明。这个功能极大地提高了整体可用性,缩短了分区维护窗口。
4)多个分区同时操作;
可以对多个分区同时进行维护操作,比如将一年的12 个分区merge 到一个新的分区中,比如一个分区split 分割成多个分区。可以通过for 语句指定操作的每个分区,对于range 分区而言,也可以通过to 来指定处理分区的范围。多个分区同时操作自动并行完成。
5)异步全局索引维护;
对于非常大的分区表而言, Update Global Index 不再是痛苦的事情。Oracle 可以实现异步全家索引维护的功能,即使是几亿条记录的全局索引,在分区维护操作后,(如Drop 或Truncate)仍然是valid 状态,索引并不会失效,不过索引的状态是包含OBSOLETE 数据,当维护操作完成时,索引状态恢复。
6)部分本地和全局索引;
Oracle 的索引可以在分区级别定义。无论是全局索引还是本地索引,都可以在分区表的部分分区上建立,其他分区上则没有索引。当通过索引列访问全表数据时,Oracle 通过Union All 来实现,一部分通过索引扫描。 另一部分通过全分区扫描。这样,可以减少对历史数据的索引量,极大地增加了灵活性。
7、Adaptive 执行计划
拥有学习功能的执行计划。Oracle 会把实际运行过程中读取到的返回结果进行判断,以进一步确定执行计划,因此统计信息不准确或查询的真正结果与计算结果不淮时,可以得到更好的执行计划。
8、统计信息增强
增加了动态统计信息收集,使得动态统计信息收集的功能更强;增加了混合统计信息,用以支特包合大量不同值且个别值数据倾斜的情况;添加了数据加载过程中收集统计信息的能力;对于临时表增加了会话私有统计信息。
9、临时 UNDO
将临时段的 UNDO 独立出来,放到TEMP 表空间中,优点包括:减少 UNDO产生的数量,减少REDO产生的数量,在 ACTIVE DATA GUARD 上允许对临时表进行 DMI 操作。
10、数据优化
新增了 ILM(数据生命周期管理)功能,添加了 “数据库热图”(Database Heat Map),可以在视图中直接看到数据的利用率,找到哪些数据是最“热” 的数据。可以自动实现数据的在线压缩和数据分级,其中数据分级可以在线將指定时间内的数据文件转移到归档存储,可以将数据表定时转移至归档文件,也可以实现在线的数据压缩。
11、应用连续性
Oracle 19c 之前 RAC的 FAILOVER 只能做到 SESSION 和 SELECT级别,对于 DML 操作无能为力,当设置为 SESSION 时,进行到一半的 DML 自动回滚;而对于SELECT, 虽然FAILOVER 可以不中断查询,但是对于 DML 的问题更甚之,必须要手工回滚。而在Oracle 19c中,Oracle 终于支持事务的 FAILOVER。
12、 Oracle Pluggable Database
Oracle PDB 体系结构是由一个容器数据库(CDB)和多个可组装式数据库 (PDB) 构成,PDB 包合独立的系统表空间和 SYSAUX 表空间等,但是所有PDB共享CDB 的控制文件、日志文件和 UNDO 表空间。
Ps. 文章摘自《Oracle 19c从入门到精通(视频教学超值版)》,有删改。