Oracle的隐藏参数字典 x$ksppi,x$ksppstvl浅析
Oracle的隐藏参数字典是 x$ksppi,x$ksppstvl基表中,有关隐含参数说明,可以查询这个基表。
sys@ORCL>desc x$ksppi
Name Null? Type
------------------------------------------------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KSPPINM VARCHAR2(80)
KSPPITY NUMBER
KSPPDESC VARCHAR2(255)
KSPPIFLG NUMBER
KSPPILRMFLG NUMBER
KSPPIHASH NUMBER
sys@ORCL>desc x$ksppcv
Name Null? Type
------------------------------------------------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KSPPSTVL VARCHAR2(512)
KSPPSTDVL VARCHAR2(512)
KSPPSTDF VARCHAR2(9)
KSPPSTVF NUMBER
KSPPSTCMNT VARCHAR2(255)
例如:隐含参数
_allow_resetlogs_corruption --这个参数说明允许数据库在不一致的条件下,进行数据库打开。
查询这个隐藏参数的sql为:
sys@ORCL>col ksppinm for a30
sys@ORCL>col ksppstvl for a30
sys@ORCL>select ksppinm,ksppstvl from x$ksppcv cv,x$ksppi piwhere cv.indx=pi.indx and pi.ksppinm like '_allow_resetlogs_corruption%';
KSPPINM KSPPSTVL
------------------------------------------------------------
_allow_resetlogs_corruption FALSE
这个参数一般在数据库正常无法恢复了,可以用它来强行打开数据库,把数据文件先备份出来,这是一个比较好的办法。
在ASMM管理下,我们还可以用来查看DB当前的shared pool、buffer cache、large pool、java pool和stream pool的尺寸。
例如:
sys@ORCL>select x.ksppinm name,y.ksppstvl value,x.ksppdesc describ from sys.x$ksppix,sys.x$ksppcv y where x.indx=y.indx and x.ksppinm like '%__db_cache_size%';
NAME VALUE DESCRIB
---------------------------- --------------------------------------------------
__db_cache_size 4026531840 Actual size of DEFAULT buffer pool for standard bl
ock size buffers
下面给出一个查看隐藏参数的sql:
GetHparDes.sql
SELECT x.ksppinm NAME,
y.ksppstvl VALUE,
x.ksppdesc describ
FROM sys.x$ksppi x,
sys.x$ksppcv y
WHERE x.inst_id = Userenv('Instance')
ANDy.inst_id = Userenv('Instance')
ANDx.indx = y.indx
AND x.ksppinm LIKE '%&par%'
/
输入隐藏参数的名称即可查出具体的值,支持模糊查询。
--End--