oracle parameter-隐藏参数

oracle中存在很多种参数,对于oracle每次启动intance的时候,都会在不同阶段读取不同类型的参数的。
初始化参数:Derived Parameters(导出参数)、Operating System-Dependent Parameters(操作系统依赖参数)、Variable Parameters(变量参数)。
特殊参数:包括三种,过时参数、强调参数和隐藏参数。
本章,我们只重点了解下隐藏参数。

英文hidden parameters

定义:隐藏参数只针对在系统中使用,它们在oracle官方中并不公布,不公布的原因,有可能是还没有成熟或者是系统开发中使用的参数。这些参数在所有 oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_'作为参数的首字符. 正因为它们都是系统参数,那么在查询的过程中需要以sys用户登陆。隐藏参数和其他系统参数一样是通过数据字典内部RDBMS表x$ksppi, x$ksppcv),很多博客中认为是视图定义,对于x$表是在数据库启动时,动态创建的,用于跟踪内部数据库信息,维持DB的正常运行,不允许sysdba以外的用户直接访问,显示授权不被允许。因此很多人有想法去修改这类隐藏参数的VALUE,建议最好不要修改。

这两个表结构如下:

SQL> desc x$ksppi 名称 是否为空? 类型 ----------------------------------------- -------- ----------------------------

ADDR RAW(8) INDX NUMBER INST_ID NUMBER KSPPINM VARCHAR2(80) KSPPITY NUMBER KSPPDESC VARCHAR2(255) KSPPIFLG NUMBER KSPPILRMFLG NUMBER KSPPIHASH NUMBER

X$KSPPI:保存参数名字信息 ADDR:内存地址 INDX:序号,从0开始 INST_ID:instance number,可以通过select USERENV('Instance') from dual;获得 KSPPINM:隐藏参数名称 KSPPITY:参数类型 1,'boolean' 2,'string', 3,'number',4,'file' KSPPDESC:描述 KSPPIFLG:标志字段(用来说明是会话可修改还是系统可修改) KSPPIHASH:HASH值

SQL> desc x$ksppcv  名称                                      是否为空? 类型  ----------------------------------------- -------- ----------------------------

 ADDR                                               RAW(8)  INDX                                               NUMBER  INST_ID                                            NUMBER  KSPPSTVL                                           VARCHAR2(4000)  KSPPSTDVL                                          VARCHAR2(4000)  KSPPSTDF                                           VARCHAR2(9)  KSPPSTVF                                           NUMBER  KSPPSTCMNT                                         VARCHAR2(255)

X$KSPPI:保存参数值信息 ADDR:内存地址,用来关联X$KSPPI INDX:序号,从0开始,用来关联X$KSPPI INST_ID:instance number KSPPSTVL:隐藏参数当前值 KSPPSTDVL:隐藏参数默认值 KSPPSTDF:是否是默认值 KSPPSTVF:标志字段,用来说明('SESSION MODIFIED'  OR  'SYSTEM MODIFIED' OR IS_ADJUSTED) KSPPSTCMNT:备注

 字段参考SQL:

SELECT NAM.INDX + 1 NUMB,
       NAM.KSPPINM NAME,
       VAL.KSPPSTVL VALUE,
       NAM.KSPPITY TYPE,
       VAL.KSPPSTDF IS_DEFAULT,
       DECODE(BITAND(NAM.KSPPIFLG / 256, 1), 1, 'TRUE', 'FALSE') IS_SESSION_MODIFIABLE,
       DECODE(BITAND(NAM.KSPPIFLG / 65536, 3),
              1,
              'IMMEDIATE',
              2,
              'DEFERRED',
              3,
              'IMMEDIATE',
              'FALSE') IS_SYSTEM_MODIFIABLE,
       DECODE(BITAND(VAL.KSPPSTVF, 7),
              1,
              'MODIFIED',
              4,
              'SYSTEM MODIFIED',
              'FALSE') IS_MODIFIED,
       DECODE(BITAND(VAL.KSPPSTVF, 2), 2, 'TRUE', 'FALSE') IS_ADJUSTED,
       NAM.KSPPDESC DESCRIPTION
  FROM SYS.X$KSPPI NAM, SYS.X$KSPPSV VAL
 WHERE NAM.INDX = VAL.INDX


 

我们可以通过这两个表查询出隐藏参数:

查询所有隐藏参数:

SELECT NAM.KSPPINM AS HP_NAME,
       NAM.KSPPDESC AS HP_DESC,
       VAL.KSPPSTVL AS HP_VAL,
       VAL.KSPPSTDF AS HP_DEFAULT_FLAG,--是否默认值
       DECODE(BITAND(VAL.KSPPSTVF, 7),
              1,
              'MODIFIED',
              4,
              'SYSTEM_MOD',
              'FALSE') AS HP_MODIFIED_FLAG, --是否可以修改
       DECODE(BITAND(VAL.KSPPSTVF, 2), 2, 'TRUE', 'FALSE') AS ISADJUSTED --是否可以调整
  FROM SYS.X$KSPPI NAM, SYS.X$KSPPCV VAL
 WHERE NAM.INST_ID = VAL.INST_ID
   AND NAM.INDX = VAL.INDX
   AND NAM.KSPPINM LIKE '/_%' ESCAPE '/'
 ORDER BY REPLACE(NAM.KSPPINM, '_', '');


查询某个隐藏参数:

SELECT X.KSPPINM, Y.KSPPSTVL, X.KSPPDESC
  FROM X$KSPPI X, X$KSPPCV Y
 WHERE X.INDX = Y.INDX
   AND Y.INST_ID = X.INST_ID
   AND X.KSPPINM = '_db_percent_hot_default';

_db_percent_hot_default:LRU链中热端所占比例,关于这个参数将会在后续oracle advance中oracle architecture-LRU链分析中用到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值