隐含参数是数据库参数名中前缀为“_”的参数,在未作明确设定值的情况下,无法通过简单的show parameter/spparameter查询到设定值。其有如下几个使用原则:
1、隐含参数并不能覆盖所有问题,也不能解决所有问题;
2、只是解决某一特定场景的workaround;
3、必须在测试环境测试验证后才能在生产环境中使用;
4、受应用自身特点,非共性问题,不建议推广;
5、建议经过oracle原厂工程师确认后再使用;
与隐含参数相关的基表,可以通过10046跟踪的方法找到:
如上图可以看到有两张x$开头的基表,分别为x$ksppi(Kernel Service Parameter Parameter Information)和x$ksppcv(Kernel Service Parameter Parameter Current Value),两张基表基本包含了所有的数据库隐含参数。
两张基表的描述分别如下:
获取隐含参数的方法(变量在&name中自行输入):
- select a.ksppinm name,b.ksppstdf default_on,b.ksppstvl value,a.ksppdesc description from x$ksppi a,x$ksppcv b where a.indx=b.indx and substr(a.ksppinm,1,1)='_' and a.ksppinm like '%&name%' order by a.ksppinm;
在11.2.0.4.8的数据库版本中,一共包含2500多个隐含参数,且每个数据库版本的隐含参数数量可能会有变化,甚至某些隐含参数在不同版本中的缺省值不同,这是需要特别注意的地方。
以参数中有ADG字样的举例,通过SQL查询,大致判断与ADG相关的隐含参数如下:
隐含参数的用途分类,大致有如下几方面:
协助问题分析
功能特性控制开关
阀值大小设置调整
应急处理及手工控制
根据数据库***设计及长期运维经验,部分推荐设置的隐含参数如下:
修改隐含参数的设置时,需要用双引号将参数名在等号左边括起来,并使用alter语句进行更改,或者直接在pfile参数文件中进行修改。
综上对隐含参数的描述,总结如下:
1、能用简单方法解决问题就不要把问题复杂化;
2、应谨慎设置任何的隐含参数;
3、需充分了解隐含参数的特性再使用;
4、对于新功能启用,建议评估相关隐含参数的特性机制