oracle 12c 新特性之(相同字段上的多重索引、ddl 日志、限制PGA的大小、分页查询)
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的大小、分页查询)的更多相关文章
- Oracle 12C 新特性之表分区带 异步全局索引异步维护(一次add、truncate、drop、spilt、merge多个分区)
实验准备:-- 创建实验表CREATE TABLE p_andy(ID number(10), NAME varchar2(40))PARTITION BY RANGE (id)(PARTITION ...
- Oracle 12c新特性
转载自:Oracle 12c新特性(For DBA) 一: Multitenant Architecture (12.1.0.1) 多租户架构是Oracle 12c(12.1)的新增重磅特性 ...
- Oracle 12C 新特性之扩展数据类型(extended data type)
Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...
- oracle 12c 新特性之不可见字段
在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c 中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字 ...
- Oracle 12c新特性(For DBA)
一: Multitenant Architecture (12.1.0.1) 多租户架构是Oracle 12c(12.1)的新增重磅特性,内建的多分租(Multi-tenancy),一个容器 ...
- Oracle 12c 新特性之 数据库内归档(In-Database Archiving)
Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据. 这些inactive ...
- ORACLE 12C新特性——CDB与PDB
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库( ...
- Oracle 12C 新特性之非分区表转分区表online clause(不停业务+索引有效)
12c以前非分区表需要转换为分区, 如果不停业务的话可以使用在线重定义,只有在表进行切换的时候会有短暂的锁表. 12c 中alter table online clause 实现了表上现有的索引有效, ...
- Oracle 12C 新特性之 PDB热克隆(本地克隆、远端异机克隆)
说明:版本12.2.0.1 12c r1版本中 clone 一份PDB源库需要打开在read only只读模式 , 在12c r2版本中引入了local undo mode, 源PDB在read/wr ...
随机推荐
- Asp.NetCore1.1版本没了project.json,这样来生成跨平台包
本章将要和大家分享的是Asp.NetCore1.1版本去掉了project.json后如何打包生成跨平台包, 为了更好跟进AspNetCore的发展,把之前用来做netcore开发的vs2015卸载后 ...
- 3.WP8.1开发_为控件增加动画
示例: 把一个按钮的宽度从100变到500 根据WPF的经验,会把代码写成如下: <Grid> <Button x:Name="btn" Content=&quo ...
- MVC插件实现
本人第一篇随笔,在园子里逛了这么久,今天也记录一篇自己的劳动成果,也是给自己以后留个记录. 最近领导让我搞一下插件化,就是实现多个web工程通过配置文件进行组装.之前由于做过一个简单的算是有点经验,当 ...
- 【子非鱼】归并排序过程呈现之java内置GUI表示
在网上看到一个视频将各种排序用视频表示出来,配上音乐,挺好玩的样子,就算是不会编程的人看到也会觉得很舒服,碰巧我也正在写归并算法,于是就用java的GUI实现一个. 归并排序的时间复杂度是T(n)=O ...
- iOS开发之JSON解析
JSON解析步骤: - (NSArray *)products { if (_products == nil) { //第一步:获取JSON文件的路径: NSString *path = [[NSBu ...
- flask mega-tutorial 1.0 documentation学习记录
本文主要是记录在[用户登录]一节中出现的问题: 报错位置是在 if g.user is not None and g.user.is_authenticated(): return redirect( ...
- WebApi client 的面向切面编程
.Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服务方法“切”为很多面,日志面.验证面.请 ...
- [LeetCode] Zuma Game 题解
题目 题目 Think about Zuma Game. You have a row of balls on the table, colored red(R), yellow(Y), blue(B ...
- CSS3学习笔记(3)-CSS3边框
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...
- 解决tomcat debug 调试时间过长的问题
做java web很早就碰到一个问题,eclipse 的调试有时候忽然启动时间奇慢 ,但是正常启动速度没问题,其他项目也完全正常 后来想想也不影响项目运行,也没太在意 不过今天又碰到这问题了,而且启动 ...