Oracle數據庫系統根據初始化參數文件init.ora中設置的參數來配置自身的啟動,每個實例在啟動之前,首先讀取這些參數文件中設置的不同參數。
Oracle系統中的參數,根據系統使用情況可以簡單分為兩大類:
普通參數:也就是Oracle系統正常使用的一些參數,
非凡參數:包括三種,過時參數、強調參數和隱藏參數。
隨著Oracle數據庫新版本的發布,相應每次都會增加或者刪除一些參數。下面具體介紹如何查詢當前系統版本中的各種參數情況。
?
?一、過時參數?和?強調參數
Oracle?數據庫中,系統提供了幾個視圖可以查看系統參數的情況。視圖?V$OBSOLETE_PARAMETER?中含有所有的過時?(obsolete)?和強調?(underscored)?參數。
這里首先說明一下什么是?Oracle?的過時?(obsolote)?和強調?(underscored)?參數,過時參數,顧名思義就是在?Oracle?以前的版本中存在,但在新版本中已經淘汰了的參數,已經不再使用;而強調參數,是指那些在新版本中保留了下來,但是除非非凡需要不希望用戶使用的那些參數。在視圖?V$OBSOLETE_PARAMETER?中,包含這些參數的名稱和一個標志字?ISSPECIFIED?,該標志字用來指出這個參數是否在?init.ora?文件中已實際設置。?下面的?SQL?腳本列出了當前系統中所有的過時參數名稱以及它們是否在當前系統中設定。?
/*?Formatted?on?2010-5-12?17:46:27?(QP5?v5.115.810.9015)?*/
SELECT???name,?isspecified?FROM?v$obsolete_parameter;
上面談到,?Oracle?系統并沒有將?V$OBSOLETE_PARAMETER?視圖中的所有參數均丟棄,而是將其中的一部分轉換為強調參數,下面就來討論如何查看這些參數是已被丟棄還是被轉換。這可以通過系統視圖?X$KSPPO?來查看,該視圖中包含一個名為?KSPPOFLAG?的字段,用來指明該參數在當前版本中是被丟棄還是被強調,假如該值為?1?,則表示該參數已被丟棄,該值為?2?,則表明該參數現為強調參數。
/*?Formatted?on?2010-5-12?17:46:06?(QP5?v5.115.810.9015)?*/
??SELECT???kspponm,?DECODE?(ksppoflg,
????????????????????????????1,
????????????????????????????'Obsolete',
????????????????????????????2,
????????????????????????????'Underscored')
????FROM???x$ksppo
ORDER?BY???kspponm;
注:該視圖只在?sys?用戶下可以看到。?
?
二、隱藏參數
Oracle?系統中還有一類參數稱之為隱藏參數?(hidden?parameters)?,是系統中使用,但?Oracle?官方沒有公布的參數,這些參數可能是那些還沒有成熟或者是系統開發中使用的參數。這些參數在所有?Oracle?官方提供的文檔中都沒有介紹,他們的命名有一個共同特征就是都以?'_'?作為參數的首字符.?下面的查詢可以得到當前系統中的所有隱藏參數,需要以sys用戶登陸,查看兩個視圖:x$ksppi,?x$ksppcv.?
/*?Formatted?on?2010-5-12?17:45:46?(QP5?v5.115.810.9015)?*/
SELECT???ksppinm,?ksppstvl,?ksppdesc
??FROM???x$ksppi?x,?x$ksppcv?y
?WHERE???x.indx?=?y.indx?AND?TRANSLATE?(ksppinm,?'_',?'#')?LIKE?'#%';
或者用:
/*?Formatted?on?2010-5-12?17:07:26?(QP5?v5.115.810.9015)?*/
??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,?'_',?'');
?
三、系統當前參數
下面的腳本以英文字母順序列出了系統當前使用的所有參數。在列出的參數中,假如參數名稱前面有?#?這個符號,則表示該參數沒有明確指定,采用了系統中的默認參數。
/*?Formatted?on?2010-5-12?17:44:11?(QP5?v5.115.810.9015)?*/
??SELECT???DECODE?(isdefault,?'TRUE',?'#?'),
???????????DECODE?(isdefault,?'TRUE',?RPAD?(name,?43),?RPAD?(name,?45)),
???????????VALUE
????FROM???v$parameter
ORDER?BY???name;
注意:上面的?SQL?腳本沒有列出系統中的隱藏參數。
以上內容整理自網絡