Oracle parameter可能值获取方法

时间:2021-11-22 04:04:12

有时不清楚一些参数的所有允许设定的值,可以由以下两个方法获得 
1.直接输入错的值,让error来提示 

复制代码代码如下:


SQL> alter system set "_db_block_cache_protect"=what scope=spfile; 
alter system set "_db_block_cache_protect"=what scope=spfile 

ERROR at line 1: 
ORA-00096: invalid value WHAT for parameter _db_block_cache_protect, must be 
from among TRUE, MEDIUM, LOW, FALSE 


由此可知_db_block_cache_protect所有允许的值是TRUE, MEDIUM, LOW, FALSE 
缺点是9i及以前的版本不支持这种检查 
2.通过脚本来获得 
cat a.sql 

复制代码代码如下:


COL pvalid_default HEAD DEFAULT FOR A7 
COL pvalid_value HEAD VALUE FOR A30 
COL pvalid_name HEAD PARAMETER FOR A50 
COL pvalid_par# HEAD PAR# FOR 99999 
BREAK ON pvalid_par# skip 1 
PROMPT Display valid values for multioption parameters matching "&1"... 
SELECT 
-- INST_ID, 
PARNO_KSPVLD_VALUES pvalid_par#, 
NAME_KSPVLD_VALUES pvalid_name, 
ORDINAL_KSPVLD_VALUES ORD, 
VALUE_KSPVLD_VALUES pvalid_value, 
DECODE(ISDEFAULT_KSPVLD_VALUES, 'FALSE', '', 'DEFAULT' ) pvalid_default 
FROM 
X$KSPVLD_VALUES 
WHERE 
LOWER(NAME_KSPVLD_VALUES) LIKE LOWER('%&1%') 
ORDER BY 
pvalid_par#, 
pvalid_default, 
ord, 
pvalid_Value 


用sys用户执行 
SQL> @a block 
会将所有与block有关的参数的可能值获取。