背景:在处理数据库RAC错误时,发现原因是BUG所致,需要修改一些隐含参数。
隐含参数概念:
在oracle内部使用,以 '_' 开头,在未作明确设定值的情况下,无法通过简单的show parameter/spparameter查询到设定值。
隐含参数查看:一般使用sys用户登陆。
--方法1
SELECT i.ksppinm name,
i.ksppdesc description,
CV.ksppstvl VALUE,
CV.ksppstdf isdefault,
DECODE(BITAND(CV.ksppstvf, 7),
1,
'MODIFIED',
4,
'SYSTEM_MOD',
'FALSE') ismodified,
DECODE(BITAND(CV.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjusted
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 LIKE '/_%' ESCAPE '/'
ORDER BY REPLACE(i.ksppinm, '_', '');
--方法2
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx AND TRANSLATE (ksppinm, '_', '#') LIKE '#%';
--查看特定的隐含参数,示例:
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx AND ksppinm = '_optimizer_fast_pred_transitivity';
隐含参数使用原则:
1、隐含参数并不能覆盖所有问题,也不能解决所有问题;
2、只是解决某一特定场景的workaround;
3、必须在测试环境测试验证后才能在生产环境中使用;
4、受应用自身特点,非共性问题,不建议推广;
5、建议经过oracle原厂工程师确认后再使用;
供参考!