日期:2014-05-16  浏览次数:20408 次

Oracle 11g 新特性简介(一)

<div class="iteye-blog-content-contain" style="font-size: 14px;">
<p>Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Information Lifecycle Management)等多项创新。</p>
<p>一、新特性提纲</p>
<p>1、数据库管理部分</p>
<p>◆数据库重演(Database Replay)</p>
<p>这一特性可以捕捉整个数据的负载,并且传递到一个从备份或者standby数据库中创建的测试数据库上,然后重演负责以测试系统调优后的效果。</p>
<p>◆SQL重演(SQL Replay)</p>
<p>和前一特性类似。但是只是捕捉SQL负载部分,而不是全部负载。</p>
<p>◆计划管理(Plan Management)</p>
<p>这一特性允许你将某一特定语句的查询计划固定下来,无论统计数据变化还是数据库版本变化都不会改变她的查询计划。</p>
<p>◆自动诊断知识库(Automatic Diagnostic Repository ADR)</p>
<p>当Oracle探测到重要错误时,会自动创纪一个事件(incident),并且捕捉到和这一事件相关的信息,同时自动进行数据库健康检查并通知DBA。此外,这些信息还可以打包发送给Oracle支持团队。</p>
<p>◆事件打包服务(Incident Packaging Service)</p>
<p>如果你需要进一步测试或者保留相关信息,这一特性可以将与某一事件相关的信息打包。并且你还可以将打包信息发给oracle支持团队。</p>
<p>◆基于特性打补丁(Feature Based Patching)</p>
<p>在打补丁包时,这一特性可以使你很容易区分出补丁包中的那些特性是你正在使用而必须打的。企业管理器(EM)使你能订阅一个基于特性的补丁服务,因此企业管理器可以自动扫描那些你正在使用的特性有补丁可以打。</p>
<p>◆自动SQL优化(Auto SQL Tuning)</p>
<p>10g的自动优化建议器可以将优化建议写在SQL profile中。而在11g中,你可以让oracle自动将能3倍于原有性能的profile应用到SQL语句上。性能比较由维护窗口中一个新管理任务来完成。</p>
<p>◆访问建议器(Access Advisor)</p>
<p>11g的访问建议器可以给出分区建议,包括对新的间隔分区(interval partitioning)的建议。间隔分区相当于范围分区(range partitioning)的自动化版本,她可以在必要时自动创建一个相同大小的分区。范围分区和间隔分区可以同时存在于一张表中,并且范围分区可以转换为间隔分区。</p>
<p>◆自动内存优化(Auto Memory Tuning)</p>
<p>在9i中,引入了自动<a href="http://www.cuug.com/xueyuanzhuanqu/jishuwenzhang/201210/jishuwenzhang-1375.html"><span style="text-decoration: underline;"><span style="color: #0066cc;">PGA</span></span></a>优化;10g中,又引入了自动<a href="http://www.cuug.com/xueyuanzhuanqu/jishuwenzhang/201210/jishuwenzhang-1373.html"><span style="text-decoration: underline;"><span style="color: #0066cc;">SGA</span></span></a>优化。到了11g,所有内存可以通过只设定一个参数来实现全表自动优化。你只要告诉oracle有多少内存可用,她就可以自动指定多少内存分配给PGA、多少内存分配给SGA和多少内存分配给操作系统进程。当然也可以设定最大、最小阈值。</p>
<p>◆资源管理器(Resource Manager)</p>
<p>11g的资源管理器不仅可以管理CPU,还可以管理IO。你可以设置特定文件的优先级、文件类型和ASM磁盘组。</p>
<p>◆ADDM</p>
<p>ADDM在10g被引入。11g中,ADDM不仅可以给单个实例建议,还可以对整个RAC(即数据库级别)给出建议。另外,还可以将一些指示(directive)加入ADDM,使之忽略一些你不关心的信息。</p>
<p>◆AWR 基线(AWR Baselines)</p>
<p>AWR基线得到了扩展。可以为一些其他使用到的特性自动创建基线。默认会创建周基线。</p>
<p><br>2、PLSQL部分</p>
<p>◆结果集缓存(Result Set Caching)</p>
<p>这一特性能大大提高很多程序的性能。在一些MIS系统或者OLAP系统中,需要使用到很多"select count(*)"这样的查询。在之前,我们如果要提高这样的查询的性能,可能需要使用物化视图或者查询重写的技术。在11g,我们就只需要加一个/*+result_cache*/的提示就可以将结果集缓存住,这样就能大大提高查询性能。当然,在这种情况下,我们可能还要关心另外一个问题:完整性。因为在oracle中是通过一致性读来保证数据的完整性的。而显然,在这种新特性下,为提高性能,是从缓存中的结果集中读取数据,而不会从回滚段中读取数据的。关于这个问题,答案是完全能保证完整性。因为结果集是被独立缓存的,在查询期间,任何其他DML语句都不会影响结果集中的内容,因而可以保证数据的完整性。</p>
<p>◆对象依赖性改进</p>
<p>在11g之前,如果有函数或者视图依赖于某张表,一旦这张表发生结构变化,无论是否涉及到函数或视图所依赖的属性,都会使函数或视图变为invalid。在11g中,对这种情况进行了调整:如果表改变的属性与相关的函数或视图无关,则相关对象状态不会发生变化。</p>
<p>◆正则表达式的改进</p>
<p>在10g中,引入了正则表达式。这一特性大大方便了开发人员。11g,oracle再次对这一特性进行了改进。其中,增加了一个名为regexp_count的函数。另外,其他的正则表达式函数也得到了改进。</p>
<p>◆新SQL语法 =&gt;</p>
<p>我们在调用某一函数时,可以通过=&gt;来为特定的函数参数指定数据。而在11g中,这一语法也同样可以出现在sql语句中了。例如,你可以写这样的语句:</p>
<p>select f(x=&gt;6) from dual;</p>
<p>◆对TCP包(utl_tcp、utl_smtp…)支持FGAC(Fine Grained Access Control)安全控制</p>
<p>◆增加了只读表(read-only table)</p>
<p>在以前,我们是通过触发器或者约束来实现对表的只读控制。11g中不需要这么麻烦了,可以直接指定表为只读表。</p>
<p>◆触发器执行效率提高了</p>
<p>内部单元内联(Intra-Unit inlining)</p>
<p>在C语言中,你可以通过内联函数(inline)或者宏实现使某些小的、被频繁调用的函数内联,编译后,调用内联