oracle parameter-隐藏参数
2013-05-28 14:58
211 查看
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:
我们可以通过这两个表查询出隐藏参数:
查询所有隐藏参数:
查询某个隐藏参数:
_db_percent_hot_default:LRU链中热端所占比例,关于这个参数将会在后续oracle advance中oracle architecture-LRU链分析中用到。
初始化参数: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链分析中用到。
相关文章推荐
- 查Oracle的隐藏参数---创建视图v$parameter
- Oracle 隐藏参数:_undo_autotune、一个吃力不讨好的活
- oracle如何查看隐藏参数
- 动态添加OracleParameter 参数
- 如何根据v$parameter查询Oracle隐含参数
- oracle 查看隐藏参数
- 如何查询oracle的隐藏参数的值
- Oracle 查看隐藏参数
- 查看oracle隐藏参数
- 查Oracle隐藏参数的脚本
- OracleParameter中参数名必须是DB中已有字段:【 ORA-01745: 无效的主机/绑定变量名】
- 让Oracle的 SHOW PARAMETER 命令显示隐藏参数
- oracle的隐藏参数字典是 x$ksppi,x¥ksppstvl
- oracle 查看隐藏参数
- oracle隐藏参数查询
- 在ORACLE中如何查看隐藏参数
- 封装带参数的Oracle ExecuteNonQuery 方法,用OracleParameterCollection传入参数!
- oracle查看隐藏参数
- Oracle 隐藏参数:_undo_autotune
- 查看oracle隐藏参数