1. 相同字段上的多重索引
   在Oracle 12c R1之前,一个字段是无法以任何形式拥有多个索引的。或许有人会想知道为什么通常一个字段需要有多重索引,事实上需要多重索引的字段或字段集合是很多的。在12c R1中,只要索引类型的形式不同,一个字段就可以包含在一个B-tree索引中,同样也可以包含在Bitmap索引中。注意,只有一种类型的索引是在给定时间可见可用的。

SQL>create table more_ind as select * from user_objects;
Table created.
SQL> create index ind_one on more_ind(object_id);
Index created.
SQL> create index ind_two on more_ind(object_id);                          
ORA-01408: such column list already indexed
SQL> create bitmap index ind_two on more_ind(object_id);
ORA-01408: such column list already indexed
SQL> create bitmap index ind_two on more_ind(object_id) invisible;
Index created.

2. ddl 日志
在之前的版本中没有可选方法来对DDL操作进行日志记录。而在12c R1中,你现在可以将DDL操作写入xml和日志文件中。这对于了解谁在什么时间执行了create或drop命令是十分有用的。要开启这一功能必须对ENABLE_DDL_LOGGING 初始参数加以配置。这一参数可以在数据库或会话级加以设置。当此参数为启用状态,所有的DDL命令会记录在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路径下的xml和日志文件中。一个xml中包含DDL命令,IP地址,时间戳等信息。这可以帮助确定在什么时候对用户或表进行了删除亦或是一条DDL语句在何时触发。

SQL> ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;

alter system set enable_ddl_logging=true;

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

CREATE|ALTER|DROP|TRUNCATE TABLE

DROP USER

CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENC

实验:
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> alter system  set enable_ddl_logging=true;

System altered.
SQL> truncate table select_top;

Table truncated.

[oracle@12c01 ddl]$ pwd
/home/oracle/app/oracle/diag/rdbms/andycdb/andycdb/log/ddl
[oracle@12c01 ddl]$ ll
total 4
-rw-r-----. 1 oracle oinstall 308 May  7 21:28 log.xml
[oracle@12c01 ddl]$ cat log.xml 
<msg time='2017-05-07T21:28:36.028+08:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4695:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='12c01' host_addr='10.100.25.16'
 pid='8858' version='1' con_uid='1'
 con_id='1' con_name='CDB$ROOT'>
 <txt>truncate table select_top
 </txt>
</msg>

3. 限制PGA的大小
在Oracle 12c R1之前,没有选项可以用来限制和控制PGA的大小。虽然你设置某个大小为PGA_AGGREGATE_TARGET 的初始参数,Oracle会根据工作负载和需求来动态地增大或减小PGA的大小。而在12c中,你可以通过开启自动PGA管理来对PGA设定硬性限制,这需要对PGA_AGGREGATE_LIMIT 参数进行设置。因此,你现在可以通过设置新的参数来对PGA设定硬性限制以避免过度使用PGA。
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G; 
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit  
提示:当超过了当前PGA的限制,Oracle会自动终止/中止会话或进程以保持最合适的PGA内存。

4. 分页查询
   在12c之前,只能通过一些间接手段来获取前N行的结果,如:rownum。在12c中,通过FETCH FIRST|NEXT|PERCENT可以直接得到top_n。
11g中分页查询示范:
select * 
from(select a.*,rownum rn 
     from emp a
     where rownum<=10) 
where rn>=5 ;

12c:
1.准备实验环境
create table select_top (id int);
insert into select_top values(1);
insert into select_top values(2);
insert into select_top values(3);
insert into select_top values(4);
insert into select_top values(5);
insert into select_top values(6);
insert into select_top values(7);
insert into select_top values(8);
insert into select_top values(9);
insert into select_top values(5);
insert into select_top values(10);

SQL> select * from select_top;

ID
----------
1
2
3
4
5
6
7
8
9
5
        10

11 rows selected.
2. 取id数字大小为前5的记录
模式一:重复记录只显示一次
SQL> select id from select_top order by id fetch first 5 rows only;

ID
----------
1
2
3
4
5

模式二:重复记录显示多次
SQL> select id from select_top order by id fetch first 5 rows with ties;

ID
----------
1
2
3
4
5
5

6 rows selected.
3. 跳过前五条记录,返回后五条记录
SQL> select id from select_top order by id offset 5 rows fetch next 5 rows only;

ID
----------
5
6
7
8
9

4.取id前50%的记录(这只是近似值)
SQL> select id from select_top order by id fetch first 50 percent rows only;

ID
----------
1
2
3
4
5
5
SQL> select count(*) from select_top;

COUNT(*)
----------
11

SQL> select 6/11 from dual;

6/11
----------
.545454545

oracle 12c 新特性之(相同字段上的多重索引、ddl 日志、限制PGA的大小、分页查询)的更多相关文章

  1. Oracle 12C 新特性之表分区带 异步全局索引异步维护(一次add、truncate、drop、spilt、merge多个分区)

    实验准备:-- 创建实验表CREATE TABLE p_andy(ID number(10), NAME varchar2(40))PARTITION BY RANGE (id)(PARTITION ...

  2. Oracle 12c新特性

    转载自:Oracle 12c新特性(For DBA) 一: Multitenant Architecture (12.1.0.1)      多租户架构是Oracle 12c(12.1)的新增重磅特性 ...

  3. Oracle 12C 新特性之扩展数据类型(extended data type)

    Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...

  4. oracle 12c 新特性之不可见字段

    在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c 中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字 ...

  5. Oracle 12c新特性(For DBA)

    一: Multitenant Architecture (12.1.0.1)      多租户架构是Oracle 12c(12.1)的新增重磅特性,内建的多分租(Multi-tenancy),一个容器 ...

  6. Oracle 12c 新特性之 数据库内归档(In-Database Archiving)

    Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据. 这些inactive ...

  7. ORACLE 12C新特性——CDB与PDB

    Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库( ...

  8. Oracle 12C 新特性之非分区表转分区表online clause(不停业务+索引有效)

    12c以前非分区表需要转换为分区, 如果不停业务的话可以使用在线重定义,只有在表进行切换的时候会有短暂的锁表. 12c 中alter table online clause 实现了表上现有的索引有效, ...

  9. Oracle 12C 新特性之 PDB热克隆(本地克隆、远端异机克隆)

    说明:版本12.2.0.1 12c r1版本中 clone 一份PDB源库需要打开在read only只读模式 , 在12c r2版本中引入了local undo mode, 源PDB在read/wr ...

随机推荐

  1. 如何记录selenium自动化测试过程中接口的调用信息

    上一篇博客,我写了python自动化框架的一些知识和粗浅的看法,在上一篇中我也给自己提出一个需求:如果记录在测试过程中接口的调用情况?提出这个需求,我觉得是有意义的.你在测试过程中肯定会遇到一些莫名其 ...

  2. servlet与jsp的区别(转)

    一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...

  3. 4.熟悉Java基本类库系列——Java 正则表达式类库

    正则表达式语法结构图: Java正则表达式类库结构图: Java典型例子 1.String类 matches()方法 判断字符串是否符合特定正则表达式 @Test public void testRe ...

  4. linux sort命令详解(转)

    sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...

  5. CSharpGL(41)改进获取字形贴图的方法

    CSharpGL(41)改进获取字形贴图的方法 在(http://www.cnblogs.com/bitzhuwei/p/CSharpGL-28-simplest-way-to-creating-fo ...

  6. sencha touch 总结

    Ext.define("CM.product.MainviewListModel", { extend: "Ext.data.Model", config: { ...

  7. grid实例(Asp.net)

    <link href="../../js/jqGrid/css/ui.jqgrid.css" rel="stylesheet" type="te ...

  8. ADO.NET 获取SQL SERVER数据库架构信息

    1.确定可用字段数目 sqlDataReader类提供了FieldCount属性,可确定查询反悔了多少个字段. 2.确定返回行的数目 sqlDataReader中没有指示可用行的属性. 3.确定字段的 ...

  9. inform表单验证,正则表达式,用户名,身份证,密码,验证码

    最近利用空闲时间写了部分表单验证,包括用户名,身份证,密码,验证码,仅为自己巩固最近所学的知识 表单的样式使用的是table布局,因为觉得DIV布局定位比较麻烦,table有三列,分别为基本信息,输入 ...

  10. 开启新模式WinForm

    从今天开始咱们正式进入WinForm开发模式 首先很官方的介绍下什么是winform:客户端应用程序:C/S 这就是winform 有什么特别特别重要的特点呢:可以操作用户电脑上的文件 举个简单的例子 ...