Oracle11g新特性:server result cache续
之前投给It168的一篇文章中简单点评了一下Oracle11g的这个新特性,当时没有软件所以没有给出例子。本文主要是实际的测试演示一下server result cache。
Server result cache是在shared pool中为查询结果开辟一块专用的缓存,通过新引入的一个初始化参数来控制该cache的大小:result_cache_max_size。如果result_cache_max_size=0则表示禁用该特性。参数result_cache_max_result则控制单个缓存结果可以占总的Server result cache大小的百分比。另外还有一个初始化参数用于控制Server result cache的模式:result_cache_mode,如果取值为auto,则优化器会自动判断是否将查询结果缓存;如果取值为manual(这是默认值),则需要通过查询提示result_cache来告诉优化器是否缓存结果;如果取值为force,则系统会尽可能的缓存查询结果,当然,即使参数取值为force,也可以通过提示no_result_cache来拒绝缓存结果。在itpub关于该特性的讨论中,有人提到,文档中result_cache_mode只有manual/force两个取值。这个可能是文档的bug,通过给参数赋一个非法值得到的报错信息中明白的说明有三个取值:
SQL> alter session set result_cache_mode=a;
ERROR:
ORA-00096: invalid value A for parameter result_cache_mode, must be from among FORCE, MANUAL, AUTO
Oracle11g还引入了一个package专门用于管理server result cache:dbms_result_cache
Installing Oracle Database 11g on Windows
虽然目前Oracle还没有释出Oracle11g for windows的下载版本,但是在Oracle11g的网站上已经出现Oracle 11g for windows的安装文档了,从文章的截图中可以看到,windows版和linux版的安装界面基本上一样,颜色风格也差不多,版本也是11.1.0.6,和linux版本一致。安装教程都出来了,估计马上就可以从Oracle网站上下载了。
Installing Oracle Database 11g on Windows
Installing Oracle Database 11g on Linux
更多官方关于oracle11g的教程(OBE:Oracle by Example),请点击这里。
Oracle11g新特性:只读表(read only table)
Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行DML操作和某些DDL操作。在Oracle11g之前的版本,只能将整个tablespace或者database置于read only状态。对于table的控制则只能通过权限来设定。
SQL> create table t(i int);
Table created.
SQL> insert into t values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> alter table t read only;
Table altered.
SQL> select read_only from user_tables where table_name=’T';
READ_ONLY
——
YES
[继续阅读全文]
Oracle11g新特性:使用PIVOT/UNPIVOT进行行列转换
MS SQL Server 2005引入的pivot/unpivot关键字,对于行列转换确实非常的方便。所以Oracle11g也引入了这两个关键字,语法和SQL Server 2005的基本上差不错。
SQL> select * from sales;
PRODCUT QUARTER AMOUNT
———- ———- ———-
a 1 100
a 2 110
a 3 130
a 4 140
b 1 210
b 2 220
b 3 230
b 4 240
使用pivot转换显示:
SQL> select * from sales
2 pivot (sum(amount)
3 for quarter in
4 (1 as Q1,2 as Q2,3 as Q3,4 as Q4));
PRODCUT Q1 Q2 Q3 Q4
———- ———- ———- ———- ———-
a 100 110 130 140
b 210 220 230 240
