概述
1:分区迁移
SQL>ALTERTABLEtable_name MOVE PARTITION|SUBPARTITION partition_nameTOtablespace tablespace_name;
SQL>ALTERTABLEtable_name MOVE PARTITION|SUBPARTITION partition_nameTOtablespace tablespace_nameUPDATEINDEXES ONLINE;
2:分页
之前版本中需要借用ROWNUM对查询结果设置“标号”实现分页查询
12c中引入OFFSET 和 FETCH 实现快捷分页方式
3:
不可见字段
在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件。在12c R1中,你可以在表中创建不可见字段。当一个字段定义为不可见时,这一字段就不会出现在通用查询中,除非在SQL语句或条件中有显式的提及这一字段,或是在表定义中有DESCRIBED。要添加或是修改一个不可见字段是非常容易的,反之亦然。
当字段定义为不可见时,在描述表结构时它们将不会显示。然而,你可以通过在SQL*Plus提示符下进行以下设置来显示不可见字段的相关信息:
实例:
create table test (id number(10),name varchar(10),sal number(10) invisible);
desc test
sal不可见
insert into test values(....) 报错
insert into test(id,name,sal) 正常
select * from test; 将看不到sal
select id,name,sal from test; 可以看到sal;
4:ddl 日志
在之前的版本中没有可选方法来对DDL操作进行日志记录。而在12c R1中,你现在可以将DDL操作写入xml和日志文件中。这对于了解谁在什么时间执行了create或drop命令是十分有用的。要开启这一功能必须对ENABLE_DDL_LOGGING 初始参数加以配置。这一参数可以在数据库或会话级加以设置。当此参数为启用状态,所有的DDL命令会记录在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路径下的xml和日志文件中。一个xml中包含DDL命令,IP地址,时间戳等信息。这可以帮助确定在什么时候对用户或表进行了删除亦或是一条DDL语句在何时触发。
开启DDL日志功能
SQL>ALTERSYSTEM|SESSIONSETENABLE_DDL_LOGGING=TRUE;
以下的DDL语句可能会记录在xml或日志文件中:
CREATE|ALTER|DROP|TRUNCATE TABLE
DROP USER
CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENC
5:限制PGA的大小
在Oracle 12c R1之前,没有选项可以用来限制和控制PGA的大小。虽然你设置某个大小为PGA_AGGREGATE_TARGET 的初始参数,Oracle会根据工作负载和需求来动态地增大或减小PGA的大小。而在12c中,你可以通过开启自动PGA管理来对PGA设定硬性限制,这需要对PGA_AGGREGATE_LIMIT 参数进行设置。因此,你现在可以通过设置新的参数来对PGA设定硬性限制以避免过度使用PGA。
SQL>ALTERSYSTEMSETPGA_AGGREGATE_LIMIT=2G;
SQL> ALTERSYSTEMSETPGA_AGGREGATE_LIMIT=0;--disables the hard limit
重要提示:
当超过了当前PGA的限制,Oracle会自动终止/中止会话或进程以保持最合适的PGA内存。
截断表CASCADE
在之前的版本中,在子表引用一个主表以及子表存在记录的情况下,是不提供截断此主表操作的。而在12c中的带有CASCADE操作的TRUNCATE TABLE可以截断主表中的记录,并自动对子表进行递归截断,并作为DELETE ON CASCADE服从外键引用。由于这是应用到所有子表的,所以对递归层级的数量是没有CAP的,可以是孙子表或是重孙子表等等。
这一增强摈弃了要在截断一个主表之前先截断所有子表记录的前提。新的CASCADE语句同样也可以应用到表分区和子表分区等。
SQL> TRUNCATE TABLE CASCADE;
SQL> TRUNCATE TABLE PARTITION CASCADE;
如果对于子表的外键没有定义ON DELETE CASCADE 选项,便会抛出一个ORA-14705错误
Oracle12c升级
数据库升级改进
每当一个新的Oracle版本发布,DBA所要面临的挑战就是升级过程。该部分我将介绍12c中引入的针对升级的两个改进。
预升级脚本
在12c R1中,原有的utlu[121]s.sql 脚本由一个大为改善的预升级信息脚本preupgrd.sql所取代。除了预升级检查验证,此脚本还能以修复脚本的形式解决在升级过程前后出现的各种问题。
可以对产生的修复脚本加以执行来解决不同级别的问题,例如,预升级和升级后的问题。当手动升级数据库时,脚本必须在实际升级过程初始化之前加以手动执行。然而,当使用DBUA工具来进行数据库升级时,它会将预升级脚本作为升级过程的一部分加以自动执行,而且会提示你去执行修复脚本以防止报错。
如何执行脚本:
SQL> @$ORACLE_12GHOME/rdbms/admin/preupgrd.sql
以上脚本会产生一份日志文件以及一个[pre/post]upgrade_fixup.sql 脚本。所有这些文件都位于$ORACLE_BASE/cfgtoollogs 目录下。在你继续真正的升级过程之前,你应该浏览日志文件中所提到的建议并执行脚本以修复问题。
注意:你要确保将preupgrd.sql和utluppkg.sql 脚本从12c Oracle的目录home/rdbms/admin directory拷贝至当前的Oracle的database/rdbms/admin路径。
并行升级功能
数据库升级时间的长短取决于数据库上所配置的组件数量,而不是数据库的大小。在之前的版本中,我们是无法并行运行升级程序,从而快速完成整个升级过程的。
在12c R1中,原有的catupgrd.sql 脚本由catctl.pl 脚本(并行升级功能)替代,现在我们可以采用并行模式运行升级程序了。
以下流程说明了如何初始化并行升级功能(3个过程);你需要在升级模式下在启动数据库后运行这一脚本:
cd $ORACLE_12_HOME/perl/bin
$ ./perl catctl.pl –n 3 -catupgrd.sql
以上两个步骤需要在手动升级数据库时运行。而DBUA也继承了这两个新变化。
最后
以上就是乐观路灯为你收集整理的Oracle分页查询时可以添加别的字段,Oracle12c新特性(迁移分区,分页,不可见字段,PGA,ddl 日志)...的全部内容,希望文章能够帮你解决Oracle分页查询时可以添加别的字段,Oracle12c新特性(迁移分区,分页,不可见字段,PGA,ddl 日志)...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复