您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle 11g 面向DBA的新功能学习指南less16_Misc
OracleDatabase11g:面向管理员的新增功能16-2OracleDatabase11g:面向管理员的新增功能16-3前台统计信息V$SYSTEM_EVENT和V$SYSTEM_WAIT_CLASS视图中已添加了新列,使用这些列您可以轻松地标识由前台进程或后台进程引发的事件。V$SYSTEM_EVENT用以下五个新NUMBER列来显示完全来自前台会话的统计信息:•TOTAL_WAITS_FG•TOTAL_TIMEOUTS_FG•TIME_WAITED_FG•AVERAGE_WAIT_FG•TIME_WAITED_MICRO_FGV$SYSTEM_WAIT_CLASS用以下两个新NUMBER列来显示完全来自前台会话的统计信息:•TOTAL_WAITS_FG•TIME_WAITED_FGOracleDatabase11g:面向管理员的新增功能16-4联机重新定义增强功能OracleDatabase11g支持对包含实体化视图和视图日志的表进行联机重新定义。此外,联机重新定义还支持带有FOLLOWS子句的触发器,该子句在触发器之间建立排序依赖性。在早期数据库版本中,所有直接和间接相关的视图和PL/SQL程序包都会在联机重新定义或其它DDL操作后失效。下次调用这些视图和PL/SQL程序包时,会自动对其进行重新编译。如果相关PL/SQL程序包和视图太多,重新验证或重新编译的成本会很高。在OracleDatabase11g中,逻辑上未受到重新定义影响的视图、同义词和依赖于其它表的对象(触发器除外)都不会失效。因此,如果对象(如引用的列名称和类型)在重新定义后保持不变,则它们不会失效。此优化功能是“透明的”,即在默认情况下已启用。其它示例:如果重新定义删除了一个列,则只有引用该列的过程和视图会失效,其它相关过程和视图仍然有效。请注意,重新定义的表上的所有触发器都会失效(因为重新定义可能会更改内部列号和数据类型),但在下一次对该表执行DML时它们会自动重新生效。OracleDatabase11g:面向管理员的新增功能16-5将相关重新编译减至最少从OracleDatabase11g开始,您可以访问描述更精确的依赖性元数据的记录。这称为细粒度依赖性,它是自动开启的。较早的OracleDB版本精确记录了整个对象的依赖性元数据(例如,PL/SQL单元P依赖于PL/SQL单元F,或视图V依赖于表T)。这意味着从属对象有时会在没有逻辑要求的情况下失效。例如,如果V视图只依赖T表中的A列和B列,则将D列添加到T表后,逻辑上V视图的有效性不会受到影响。然而,在OracleDB版本11.1之前,将D列添加到T表V视图就会失效。在OracleDB版本11.1中,将D列添加到T表不会使V视图失效。同样,如果过程P只依赖程序包中的元素E1和E2,将E99元素添加到程序包(添加到程序包末尾以避免更改插槽编号或现有顶层元素的入口点编号)不会使P过程失效。通过减少由于更改其所依赖的对象而导致从属对象失效的情况,提高了应用程序在开发环境和联机应用程序升级过程中的可用性。OracleDatabase11g:面向管理员的新增功能16-6锁定增强功能•通过在系统或会话级别设置DDL_LOCK_TIMEOUT参数,可以限制DDL命令等待DML锁定的时间,超过此时间就会失败。默认情况下此初始化参数设置为0,即NOWAIT,这可确保向后兼容性。值的范围是0-1,000,000(以秒为单位)。•LOCKTABLE命令具有新的语法,可用于指定语句为获取对表的DML锁定而需要等待的最多秒数。使用WAIT子句可以指示,为获得DML锁定LOCKTABLE语句最多应等待指定的秒数。该整数值没有限制。•在并发性很高的环境中,要求获得排它锁(例如,在创建和重建联机索引结束时)可能会导致等待DML操作剧增,从而使系统利用率出现明显变化。尽管对于数据库整体而言这不是问题,但系统利用率反常可能会触发操作系统级别的预警。此幻灯片中列出的命令不再需要排它锁。OracleDatabase11g:面向管理员的新增功能16-7不可见的索引:概览从版本11g开始,可以创建不可见的索引。优化程序会忽略不可见的索引,除非您在会话或系统级别上将OPTIMIZER_USE_INVISIBLE_INDEXES初始化参数显式设置为TRUE。此参数的默认值是FALSE。使索引不可见是使索引不可用或删除索引的一种替代办法。使用不可见的索引,可完成以下操作:•在删除索引之前测试对索引的删除。•对应用程序的特定操作或模块使用临时索引结构,这样就不会影响整个应用程序。与不可用的索引不同,不可见的索引在使用DML语句期间仍会得到维护。OracleDatabase11g:面向管理员的新增功能16-8不可见的索引:示例当索引不可见时,优化程序生成的计划不会使用该索引。如果未发现性能下降,则可以删除该索引。还可以创建最初不可见的索引,执行测试,然后确定是否使该索引可见。可以查询*_INDEXES数据字典视图的VISIBILITY列来确定该索引是VISIBLE还是INVISIBLE。注:对于本幻灯片中给定的所有语句,都假定OPTIMIZER_USE_INVISIBLE_INDEXES设置为FALSE。OracleDatabase11g:面向管理员的新增功能16-9SQL查询结果高速缓存:概览SQL查询结果高速缓存可在数据库内存中对查询结果集和查询碎片启用显式高速缓存。存储在共享池中的专用内存缓冲区可用于存储和检索高速缓存的结果。对查询访问的数据库对象中的数据进行修改后,存储在该高速缓存中的查询结果将失效。虽然SQL查询高速缓存可用于任何查询,但最适用于需要访问大量行却仅返回其中一少部分的语句。数据仓库应用程序大多属于这种情况。在本幻灯片显示的图形中,如果第一个会话执行一个查询,它将从数据库中检索数据,然后将结果高速缓存在SQL查询结果高速缓存中。如果第二个会话执行完全相同的查询,它将直接从高速缓存中检索结果而不使用磁盘。附注•RAC配置中的每个节点都有一个专用的结果高速缓存。一个实例的高速缓存结果不能供另一个实例使用。但是,失效会对多个实例产生影响。要处理RAC实例之间与SQL查询结果高速缓存相关的所有同步操作,需对每个实例使用专门的RCBG进程。•通过并行查询,可对整个结果进行高速缓存(在RAC中,是在查询协调程序实例上执行高速缓存的),但单个并行查询进程无法使用高速缓存。OracleDatabase11g:面向管理员的新增功能16-10设置SQL查询结果高速缓存查询优化程序根据初始化参数文件中RESULT_CACHE_MODE参数的设置管理结果高速缓存机制。可以使用此参数确定优化程序是否将查询结果自动发送到结果高速缓存中。可以在系统和会话级别设置RESULT_CACHE_MODE参数。参数值可以是AUTO、MANUAL和FORCE:•设置为AUTO时,优化程序将根据重复的执行操作确定将哪些结果存储在高速缓存中。•设置为MANUAL(默认值)时,必须使用RESULT_CACHE提示指定在高速缓存中存储特定结果。•设置为FORCE时,所有结果都将存储在高速缓存中。注:对于AUTO和FORCE设置,如果语句中包含[NO_]RESULT_CACHE提示,则该提示优先于参数设置。OracleDatabase11g:面向管理员的新增功能16-11管理SQL查询结果高速缓存可以改变初始化参数文件中的多种参数设置,以管理数据库的SQL查询结果高速缓存。默认情况下,数据库会为SGA中共享池内的结果高速缓存分配内存。分配给结果高速缓存的内存大小取决于SGA的内存大小以及内存管理系统。可以通过设置RESULT_CACHE_MAX_SIZE参数来更改分配给结果高速缓存的内存。如果将结果高速缓存的值设为0,则会禁用此结果高速缓存。此参数的值将四舍五入到不超过指定值的32KB的最大倍数。如果四舍五入得到的值是0,则会禁用该功能。使用RESULT_CACHE_MAX_RESULT参数可以指定任一结果可使用的最大高速缓存量。默认值为5%,但可指定1到100之间的任一百分比值。可在系统和会话级别上实施此参数。使用RESULT_CACHE_REMOTE_EXPIRATION参数可以指定依赖于远程数据库对象的结果保持有效的时间(以分钟为单位)。默认值为0,表示不会高速缓存使用远程对象的结果。将此参数设置为非零值可能会生成过时的信息:例如,当结果使用的远程表在远程数据库上发生了更改时。OracleDatabase11g:面向管理员的新增功能16-12使用Result_Cache提示如果要使用查询结果高速缓存并将RESULT_CACHE_MODE初始化参数设置为MANUAL,则必须在查询中显式指定RESULT_CACHE提示。这会在查询的执行计划中引入ResultCache运算符。执行查询时,ResultCache运算符将查找结果高速缓存,以检查该查询结果是否存在于高速缓存中。如果存在,则直接从高速缓存检索该结果。如果高速缓存中不存在该查询结果,则执行查询。结果将以输出形式返回,也存储在结果高速缓存中。如果将RESULT_CACHE_MODE初始化参数设置为AUTO或FORCE,并且不希望将查询结果存储在结果高速缓存中,则必须在查询中使用NO_RESULT_CACHE提示。例如,如果在初始化参数文件中RESULT_CACHE_MODE的值为FORCE,并且不希望对EMPLOYEES表使用结果高速缓存,则需要使用NO_RESULT_CACHE提示。注:应优先于参数设置使用[NO_]RESULT_CACHE提示。OracleDatabase11g:面向管理员的新增功能16-13内嵌视图:示例在本幻灯片显示的示例中,内嵌视图中使用了RESULT_CACHE提示。在这种情况下,将禁用下列优化:视图合并、谓词向下传递和列映射。这会影响初次查询,可能要花费较长的时间来执行它。不过,由于使用了SQL查询高速缓存,后续执行会快得多。这种情况的另一个优点是类似查询(在最后一个WHERE子句中对prod_category使用不同谓词值的查询)的速度也会快很多。OracleDatabase11g:面向管理员的新增功能16-14使用DBMS_RESULT_CACHE程序包DBMS_RESULT_CACHE程序包提供了统计信息、信息和运算符,使您可以管理查询结果高速缓存的内存分配。可以使用DBMS_RESULT_CACHE程序包执行多种操作,如查看高速缓存的状态(OPEN或CLOSED)、检索有关高速缓存内存使用量的统计信息、刷新高速缓存。例如,要查看内存分配统计信息,请使用以下SQL过程:SQLsetserveroutputonSQLexecutedbms_result_cache.memory_reportResultCacheMemoryReport[Parameters]BlockSize=1024bytesMaximumCacheSize=720896bytes(704blocks)MaximumResultSize=35840bytes(35blocks)[Memory]TotalMemory=46284bytes[0.036%oftheSharedPool]...FixedMemory=10640bytes[0.008%oftheSharedPool]...StateObjectPool=2852bytes[0.002%oftheSharedPool]...CacheMemory=32792bytes(32blocks)[0.025%oftheSharedPool].......UnusedMemory=30blocks.......UsedMemory=2blocks...........Dependencies=1blocks...........Results=1blocks...............SQL=1blocks注:有关详细信息,请参阅《PL/SQ
本文标题:Oracle 11g 面向DBA的新功能学习指南less16_Misc
链接地址:https://www.777doc.com/doc-5856781 .html