签到成功

知道了

CNDBA社区CNDBA社区

oracle 11g常用隐含参数

2016-12-15 22:54 6166 0 原创 Oracle 11G
作者: Expect-乐

oracle 11g常用隐含参数

Oracle参数说明

隐藏参数:Oracle 系统中有一类参数称之为隐藏参数 (hidden parameters) ,是系统中使用,但 Oracle 官方没有公布的参数,11g中共有2562 左右隐藏参数,这些参数可能是那些还没有成熟或者是系统开发中使用的参数。这些参数在所有 Oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_' 作为参数的首字符。当然这部分的参数是不建议用户进行修改的,除非你对ORACLE的整体架构相当熟悉,对整个参数修改所带来的影响有个清晰的认识。

查看隐藏参数

如:查看_optimizer_adaptive_cursor_sharing

SELECT i.ksppinm name,  
           i.ksppdesc description,  
           CV.ksppstvl VALUE,  
           CV.ksppstdf isdefault
    FROM sys.x$ksppi i, sys.x$ksppcv CV  
   WHERE i.inst_id = USERENV ('Instance')  
         AND CV.inst_id = USERENV ('Instance')  
         AND i.indx = CV.indx  
         AND i.ksppinm ='_optimizer_adaptive_cursor_sharing'
ORDER BY REPLACE (i.ksppinm, '_', '');


修改隐藏

再次强调,隐藏参数不建议修改。除非你有把握,并且已经测试过了。

SQL > alter system set "_PX_use_large_pool" = true scope=spfile;


11G常见的隐藏参数说明

 http://www.cndba.cn/Expect-le/article/1642

参数名称

参数含义

建议值

_PX_use_large_pool

并行执行从属进程一起工作时会交换数据和信息,所以我们需要从shared poollarge pool中分配内存,这个取决于PARALLEL_AUTOMATIC_TUNING参数值的设置,_PX_use_large_pool所起的作用跟PARALLEL_AUTOMATIC_TUNING参数差不多。当PARALLEL_AUTOMATIC_TUNING=TRUE时从large pool中分内存,否则从shared pool分配。

默认值:false

建议值:false

 

_clusterwide_global_transactions

集群范围全局性事务(Clusterwide global transactions)11g的新特性,其许XA事务(XA分布式事务)RAC中更透明。基本上,一个集群范围全局性事务是一个在RAC中的每个节点均有一个本地事务的分布式事务,当_clusterwide_global_transactions=true(默认)时,ORACLE会把这些本地事务当做一个事务对待,当_clusterwide_global_transactions=false时,ORACLE会将这些本地事务当做单独的事务通过多阶段提交协调处理。设置该参数为false不会有任何性能影响。

默认值:True

建议值:false

 

_gc_defer_time

用于确定服务器在将频繁使用的块写入磁盘之前要等待的时间长度 (1/1000 秒为单位),以减少进程对热块的争用。

默认值:0

建议值:0

_resource_manager_always_off

默认FALSETRUE,其默认是启用资源调度将_resource_manager_always_off = true_resource_manager_always_on = false即为禁用Oracle缺省启用的资源调度,避免可能产生resmgr:cpu quantum等待事件情况。由于在11g中资源调度存在诸多BUG

部分官档:'resmgr:cpu quantum' wait event in 11g when VKRM process is not present (文档 ID 1603996.1)

Awr Reports hang, MMon slaves are waiting on resmgr:cpu quantum (文档 ID 1530676.1)

默认值:false

建议值:True

 

_resource_manager_always_on

默认值:True

建议值:false

 

_serial_direct_read

Oracle 11g中,全表扫描可能使用direct path read方式(无论表大小),而不是buffer cache,这样的全表扫描就是物理读了。http://www.cndba.cn/Expect-le/article/1642

默认值:auto

建议值:false

_cleanup_rollback_entries

该参数指定回滚时每次回滚的ENTRIES个数,默认为100,设置成400加快回滚速度。

默认值:100

建议值:400

_optimizer_use_feedback

11.2开始Oracle有了一种新的特性Cardinality FeedbackCardinality Feedback是一个优化器自动优化的过程,优化器会自动修正重复执行的查询的执行计划。对于一些复杂的查询,比如多字段条件,字符串范围比较,据SKEW等等,以及缺乏统计信息,优化器可能不能够产生一个完全准确的基数估计, 如丢失或统计数据不准确,或复杂的谓词的基数估计。cardinality feedback 就是基于这一原因而产生的。_optimizer_use_feedback参数默认是TRUE,即开启Cardinality FeedbackFALSE为关闭Cardinality feedback。由于在11GR2Cardinality feedback生效存在很多限制且BUG较多,故没必要启用。

默认值:true

建议值:false

_dbms_sql_security_level

该参数有0,1,23个值(默认值为1)0关闭dbms_sql包的安全检查,打开光标级别为1的要求执行/绑定和解析用户id是相同的。2级是更严格的和需要id和角色是相同的所有操作,如绑定、描述、执行、提取等。如果出现ORA-29471的错误之后,只有断开当前这个session然后重新连接数据库才可以正常调用DBMS_SQL包。若是想封闭security check,须要将一个隐含参数_dbms_sql_security_level设置成0

重启数据库生效。

默认值:1

建议值:1

 

_bloom_pruning_enabled

布隆过滤器(Bloom Filter)算法在Oracle Database 10gR2中被引入到Oracle数据库中,布隆过滤能够使用极低的存储空间,存储海量数据的映射,从而可以提供快速的过滤机制。11R2会遇到一个BLOOM过滤器导致的BUG 9124206BUG 8361126,出现ORA-00060 ORA-10387错误,_bloom_pruning_enabled_bloom_filter_enabled均设为FALSE避免BUG

详细错误如下:

ORA-00060: deadlock detected while waiting for resource

ORA-10387: parallel query server interrupt (normal)

默认值:true

建议值:false

_bloom_filter_enabled

默认值:true

建议值:false

_gc_policy_time

参数默认值是100是关闭DRM特性,DRM11G中不稳定,存在众多BUG

默认值:10

建议值:0

_gc_undo_affinity

参数默认是TRUE,设置为FALSE用于关闭DRM

默认值:true

建议值:false

_gc_read_mostly_locking

开启read mostly locking机制,能减少读访问的消息传递和CPU消耗,但是写访问就会比传统的cache fusion locking机制消耗更多的IOread-mostly的特性是给那些读很多,写很少的系统来启用比较合适。

默认值:true

建议值:根据实际情况决定。

_smu_debug_mode

默认为0,会有部分性能故障及BUG需要设置"_smu_debug_mode" = 134217728来避免,另通过设置_smu_debug_mode值可以很好的实现在undo自动管理模式下,指定事务在特定的回滚段,在某些极限情况下,可以通过该操作来减少回滚段争用。

默认值:0

建议值:0

除非特殊情况。

如下面例子1.

_undo_autotune

该参数用于自动调整undo retention时间,对于自动扩展(autoextend on)undo表空间,参数undo_retention设置成为Oracle自动调节undo retention的最低阀值。对于非自动扩展(autoextend off),非guaranteeundo表空间,Oracle会根据undo表空间大小v$undostat的历史信息(是否统计undo信息是由隐含参数_collect_undo_stats决定的,默认情况为TRUE)最大可能性保留undo信息。

默认值:true

建议值:true

deferred_segment_creation

段延迟创建,默认是true,也就是新建一个表,并且没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,只有当insert数据后才会分配空间,这会导致在exp时,没有segment的对象不会导出。设置成false即禁用段延迟创建。

默认值:true

建议值:true

特殊情况,看例子2

audit_trail

用于控制数据库审计,默认是DB,设置成none即关闭审计。

默认值:DB

建议值:根据实际情况

28401 trace name context forever,level 1

10.2.0.5及以后版本,使用错误密码登陆尝试会导致很高的Library Cache Locksrow cache lock,可以设置该event来避免。


_optimizer_extended_cursor_sharing_rel

自适应游标共享(Adaptive Cursor SharingACS)

alter system set "_optimizer_extended_cursor_sharing_rel"=none;
alter system set "_optimizer_extended_cursor_sharing"=none;
alter system set "_optimizer_adaptive_cursor_sharing"=false;


即为关闭ACS,避免众多Bug,例如Bug 11657468Bug 12333007等。

官档:

Bug 11657468 - Excessive mutex waits with adaptive cursor sharing (文档 ID 11657468.8)

Bug 12333007 - Dump on kkocscopycolstats (文档 ID 12333007.8)

默认值:simple

建议值:none

_optimizer_extended_cursor_sharing

默认值:UDO

建议值:none

_optimizer_adaptive_cursor_sharing

默认值:TRUE

建议值:false

欢迎补充~~~~~格式编辑的时候有表格的,发布出来就没了。

4.1  例子1

(1)undo自动管理分配undo时,某些情况下有些undo段很很忙,有些则比较空闲,这个时候我们需将事务使用的回滚段从忙的回滚段

修改成闲的回滚段。

查询回滚段

http://www.cndba.cn/Expect-le/article/1642


SQL> select segment_name,owner,tablespace_name from DBA_ROLLBACK_SEGS;
SEGMENT_NAME             OWNER             TABLESPACE_NAME
----------------------- ---------- -------------------------
SYSTEM     SYS  SYSTEM
_SYSSMU10_1197734989$     PUBLIC  UNDOTBS1
_SYSSMU9_1650507775$     PUBLIC  UNDOTBS1
_SYSSMU8_517538920$     PUBLIC  UNDOTBS1
_SYSSMU7_2070203016$     PUBLIC  UNDOTBS1
_SYSSMU6_1263032392$     PUBLIC  UNDOTBS1
_SYSSMU5_898567397$     PUBLIC  UNDOTBS1
_SYSSMU4_1254879796$     PUBLIC  UNDOTBS1
_SYSSMU3_1723003836$     PUBLIC  UNDOTBS1
_SYSSMU2_2996391332$     PUBLIC  UNDOTBS1
_SYSSMU1_3724004606$     PUBLIC  UNDOTBS1
SEGMENT_NAME             OWNER      TABLESPACE_NAME
--------------------- ------------ ----------------------------------  
_SYSSMU20_2073519378$     PUBLIC  UNDOTBS2
_SYSSMU19_2187544828$     PUBLIC  UNDOTBS2
_SYSSMU18_582543946$     PUBLIC  UNDOTBS2
_SYSSMU17_3680907380$     PUBLIC  UNDOTBS2
_SYSSMU16_2546215968$     PUBLIC  UNDOTBS2
_SYSSMU15_966179205$     PUBLIC  UNDOTBS2
_SYSSMU14_2607482270$     PUBLIC  UNDOTBS2
_SYSSMU13_3175987801$     PUBLIC  UNDOTBS2
_SYSSMU12_944461726$     PUBLIC  UNDOTBS2
_SYSSMU11_1515572$     PUBLIC  UNDOTBS2
21 rows selected.


执行回滚段

SQL > set transaction use rollback segment "_SYSSMU10_1197734989$"; 
Transaction set.


查询事务回滚段

SQL > select XIDUSN from V$TRANSACTION;


 

2)11.2.0.2及以后版本,可能会遇到BUG 9272671,现象是每隔5分钟在alert日志中会输出

minact-scn: Slave 1 discarding message for out-of-order msg,该信息可以忽略,

亦可设置"_smu_debug_mode" = 134217728来避免该信息输出值alert日志。


3)当一个大事务被kill后,SMON进行事务回滚时会被MMON进程堵塞


SQL> alter system kill session '56,8323';

SQL> update test set owner='a';

update test set owner='a'

       *

ERROR at line 1:

ORA-00028: your session has been killed

ORA-00028: your session has been killed


SQL> select usn, state, undoblockstotal "Total", undoblocksdone "Done", undoblockstotal-undoblocksdone "ToDo",decode(cputime,0,'unknown',sysdate+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Estimated time to complete" from v$fast_start_transactions;


       USN STATE Total     Done ToDo

---------- -------------------------------- ---------- ---------- ----------

Estimated time to complete

--------------------------------------

11 RECOVERED   815      815   0

2016:12:16 06:49:29



SQL> /


       USN STATE Total     Done ToDo

---------- -------------------------------- ---------- ---------- ----------

Estimated time to complete

--------------------------------------

11 RECOVERED   815      815   0

2016:12:16 06:49:41



SQL> /


       USN STATE Total     Done ToDo

---------- -------------------------------- ---------- ---------- ----------

Estimated time to complete

--------------------------------------http://www.cndba.cn/Expect-le/article/1642

11 RECOVERED   815      815   0

2016:12:16 06:49:43



http://www.cndba.cn/Expect-le/article/1642

SQL> /


       USN STATE Total     Done ToDo

---------- -------------------------------- ---------- ---------- ----------

Estimated time to complete

--------------------------------------

11 RECOVERED   815      815   0

2016:12:16 06:49:48

http://www.cndba.cn/Expect-le/article/1642


解决方法:http://www.cndba.cn/Expect-le/article/1642

设置参数

alter system set "_smu_debug_mode"=134217728;

kill MMON进程(注:kill MMOM进程不会终止实例,AWR主要的进程,kill之后一个新的MMON进程会自动使用_smu_debug_mode=134217728启动)

http://www.cndba.cn/Expect-le/article/1642

kill -9


官档:

Minact-Scn Master-Status: Grec-Scn Messages In Trace File (文档 ID 1361567.1)

SMON Is Waiting On Latch High CPU Resource consumption MMON blocking SMON (文档 ID 1496453.1)

4.2  例子2:

deferred_segment_creation参数,在11.2.0.4g才有的参数,

创建一个表,在没有插入数据时是否分配空间,为true时,不分配空间,但在sys用户下不支持;

deferred_segment_creation=ture

1.sys用户下,创建一个没有数据的表时,同时自动分配空间;

2.在普通用户下,创建一个没有数据的表时,不会分配空间;

查看sql语句,是否已经分配空间;

select dbms_metadata.get_ddl('TABLE','T1') from dual;

--设置输出格式(set long 99999

deferred_segment_creation11.2.0.4版本的Oracle数据库新增参数,默认是true

这会导致在exp时,没有segment的对象不会导出。

解决:

1)设置deferred_segment_creation的值为false

此方法只对以后的表有效,之前的表还是没分配空间。

2) 创建表的时候声明立即创建Segmenthttp://www.cndba.cn/Expect-le/article/1642

create table table_name segment creation immediate;

3)对于已经创建但是还没有Segment的表来说,

可以执行alter table table_name allocate extent来使其创建出分配空间,

当然也可以插入一条数据,使其创建分配空间;

http://www.cndba.cn/Expect-le/article/1642


版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle 11g 隐藏参数

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1547939次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ