Oracle隱含引數的查詢

oracle_ace發表於2007-12-19

我們都知道一般我們都可以通過查詢v$parameter檢視或者show parameter的命令來獲得Oracle資料庫引數的值,而且x$ksppcv和x$ksppi這兩個內部檢視是我們v$parameter檢視的源表:

SQL> select view_definition from v$fixed_view_definition where view_name='V$PARAMETER';

VIEW_DEFINITION
--------------------------------------------------------------------------------
select  NUM , NAME , TYPE , VALUE , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIA
BLE , ISMODIFIED , ISADJUSTED , DESCRIPTION, UPDATE_COMMENT from GV$PARAMETER wh
ere inst_id = USERENV('Instance')


SQL> select view_definition from v$fixed_view_definition where view_name='GV$PARAMETER';

VIEW_DEFINITION
--------------------------------------------------------------------------------
select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,  decode(bitand(kspp
iflg/256,1),1,'TRUE','FALSE'),  decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,
'DEFERRED',                                  3,'IMMEDIATE','FALSE'),  decode(bit
and(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.i
ndx = y.indx) and  ((translate(ksppinm,'_','#') not like '#%') or (ksppstdf = 'F
ALSE'))

有些_開頭的隱含引數被隱去了,我們可以通過如下指令碼來查詢我們的隱含引數

set linesize 100
set pagesize 9999
column name format a30
column value format a25
select
  x.ksppinm  name,
  y.ksppstvl  value,
  y.ksppstdf  isdefault,
  decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,
  decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
from
  sys.x$ksppi x,
  sys.x$ksppcv y
where
  x.inst_id = userenv('Instance') and
  y.inst_id = userenv('Instance') and
  x.indx = y.indx and
  x.ksppinm like '%_&par%'
order by
  translate(x.ksppinm, ' _', ' ');

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-873/,如需轉載,請註明出處,否則將追究法律責任。

相關文章