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. oracle备份脚本

    利用EXP导出全库,必须用SYSTEM或者DBA用户来导出. 具体脚本实现如下 全库导出(fullbackup): #!/bin/bash bname=`date +%Y%m%d` cd /backu ...

  2. 零基础入门学习UI设计指南

    第一步:认识设计启蒙必备知识 学习一项技能,尤其是已经有一定沉淀并在各行各业有广泛应用的技能,就一定要对它先有充分的认知.在开始正式学习前,你需要花足够的经历去了解和查阅它的起源.发展.应用.未来. ...

  3. keepalive配置文件详解

    第一部分:全局定义块 1.email通知.作用:有故障,发邮件报警. 2.Lvs负载均衡器标识(lvs_id).在一个网络内,它应该是唯一的. 3.花括号“{}”.用来分隔定义块,因此必须成对出现.如 ...

  4. 云片-语音验证码--短信验证码 - PHP接口

    ///////////////////////语音验证///////////////////////////// /**  * 发送短信(语音验证码)云片语音服务  * @param  $apikey ...

  5. 模拟jquery链式访问

    一直写代码写代码,博客都快荒废了,眼看一月要过完,不能不留下点记忆,嘿嘿,刚研究了下jquery的链式访问,这么好用的技能我赶紧get了下,研究后略微修改,模拟一个简单的链式访问,下面这段代码支持修改 ...

  6. CodeFirst的一些操作!!

    CodeFirst的一些操作!! 转载 2016-08-05 21:03:32 1 首先是codefirst怎么做,这个首先肯定要引入EntityFramework,然后在model中创建实体类,例如 ...

  7. xml学习_上篇

    xml简介: XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. xml小示例: /************************ ...

  8. [SinGuLaRiTy] 2017-03-27 综合性测试

    [SinGuLaRiTy-1013] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 这是 三道 USACO 的题...... 第一题:奶牛飞 ...

  9. ajax VS websocket

    一. ajax VS websocket总结 http://blog.csdn.net/qiuhuanmin/article/details/50719114 二.用Websocket代替Ajax来开 ...

  10. 老李分享:持续集成学好jenkins之安装

    老李分享:持续集成学好jenkins之安装   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...