很多人在通过v$parameter查找初始化参数的来源时迷了路。
这有两方面原因,一是Oracle把本质隐藏的很深;一是我们对Oracle认识不够深入。
我们应该按照如下方式追踪:
1. v$parameter
select * from v$fixed_view_definition a where a.VIEW_NAME='V$PARAMETER';
V$PARAMETER select NUM , NAME , TYPE , VALUE , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIABLE , ISMODIFIED , ISADJUSTED , DESCRIPTION, UPDATE_COMMENT from GV$PARAMETER where inst_id = USERENV('Instance')
2.gv$parameter
select * from v$fixed_view_definition a where a.VIEW_NAME='GV$PARAMETER';
GV$PARAMETER
select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf, decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'), decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED', 3,'IMMEDIATE','FALSE'), decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'), decode(bitand(ksppstvf,2),2,'TRUE','FALSE'), ksppdesc, ksppstcmnt from x$ksppi x, x$ksppcv y where (x.indx = y.indx) and ((translate(ksppinm,'_','#') not like '#%') or (ksppstdf = 'FALSE'))
x$ksppi,x$ksppcv 基本上包含所有数据库可调整参数,v$parameter展现的是不包含_开头的参数。
以_开头的参数我们通常称为隐含参数,一般不建议修改,但很多因为功能强大经常使用而广为人知。