Oracle數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)初始化參數(shù)文件init.ora中設(shè)置的參數(shù)來(lái)配置自身的啟動(dòng),每個(gè)實(shí)例在啟動(dòng)之前,首先讀取這些參數(shù)文件中設(shè)置的不同參數(shù)。Oracle系統(tǒng)中的參數(shù),根據(jù)系統(tǒng)使用情況可以簡(jiǎn)單分為兩大類,普通參數(shù),也就是Oracle系統(tǒng)正常使用的一些參數(shù),另外一類就是特殊參數(shù),包括三種,過(guò)時(shí)參數(shù)、強(qiáng)調(diào)參數(shù)和隱藏參數(shù)。隨著Oracle數(shù)據(jù)庫(kù)新版本的發(fā)布,相應(yīng)每次都會(huì)增加或者刪除一些參數(shù)。如何查詢當(dāng)前版本數(shù)據(jù)庫(kù)系統(tǒng)的參數(shù)情況以及當(dāng)前系統(tǒng)版本相對(duì)于以前版本增加或者丟棄的那些參數(shù)呢?本文將詳細(xì)介紹如何查詢當(dāng)前系統(tǒng)版本中的各種參數(shù)情況。
一、過(guò)時(shí)參數(shù)和強(qiáng)調(diào)參數(shù)
Oracle數(shù)據(jù)庫(kù)中,系統(tǒng)提供了幾個(gè)視圖可以查看系統(tǒng)參數(shù)的情況。視圖V$OBSOLETE_PARAMETER中含有所有的過(guò)時(shí)(obsolete)和強(qiáng)調(diào)(underscored)參數(shù)。這里首先說(shuō)明一下什么是Oracle的過(guò)時(shí)(obsolote)和強(qiáng)調(diào)(underscored)參數(shù),過(guò)時(shí)參數(shù),顧名思義就是在Oracle以前的版本中存在,但在新版本中已經(jīng)淘汰了的參數(shù),已經(jīng)不再使用;而強(qiáng)調(diào)參數(shù),是指那些在新版本中保留了下來(lái),但是除非特殊需要不希望用戶使用的那些參數(shù)。在視圖V$OBSOLETE_PARAMETER中,包含這些參數(shù)的名稱和一個(gè)標(biāo)志字ISSPECIFIED,該標(biāo)志字用來(lái)指出這個(gè)參數(shù)是否在init.ora文件中已實(shí)際設(shè)置。
下面的SQL腳本列出了當(dāng)前系統(tǒng)中所有的過(guò)時(shí)參數(shù)名稱以及它們是否在當(dāng)前系統(tǒng)中設(shè)定。
SQL> COL name format a50;
SQL> SELECT name, isspecified FROM v$obsolete_parameter; |
上面談到,Oracle系統(tǒng)并沒有將V$OBSOLETE_PARAMETER視圖中的所有參數(shù)均丟棄,而是將其中的一部分轉(zhuǎn)換為強(qiáng)調(diào)參數(shù),下面就來(lái)討論如何查看這些參數(shù)是已被丟棄還是被轉(zhuǎn)換。這可以通過(guò)系統(tǒng)視圖X$KSPPO來(lái)查看,該視圖中包含一個(gè)名為KSPPOFLAG的字段,用來(lái)指明該參數(shù)在當(dāng)前版本中是被丟棄還是被強(qiáng)調(diào),如果該值為1,則表示該參數(shù)已被丟棄,該值為2,則表明該參數(shù)現(xiàn)為強(qiáng)調(diào)參數(shù)。
SELECT kspponm,
DECODE(ksppoflg, 1,'Obsolete', 2, 'Underscored')
FROM x$ksppo
ORDER BY kspponm; |
注:該視圖只在sys用戶下可以看到。
二、隱藏參數(shù)
Oracle系統(tǒng)中還有一類參數(shù)稱之為隱藏參數(shù)(hidden parameters),是系統(tǒng)中使用,但Oracle官方?jīng)]有公布的參數(shù),這些參數(shù)可能是那些還沒有成熟或者是系統(tǒng)開發(fā)中使用的參數(shù)。這些參數(shù)在所有Oracle 8i中的_trace_files_public和_lock_sga_areas等等。
下面的查詢可以得到當(dāng)前系統(tǒng)中的所有隱藏參數(shù)(以sys身份登錄):
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx
AND translate(ksppinm,'_','#') like '#%'; |
三、系統(tǒng)當(dāng)前參數(shù)
下面的腳本以英文字母順序列出了系統(tǒng)當(dāng)前使用的所有參數(shù)。在列出的參數(shù)中,如果參數(shù)名稱前面有#這個(gè)符號(hào),則表示該參數(shù)沒有明確指定,采用了系統(tǒng)中的默認(rèn)參數(shù)。一般在一個(gè)新的Oracle版本安裝完成后,首先運(yùn)行該腳本,則可以生成該版本數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)init.ora文件。
SET pagesize 9000
SET head OFF
SET term OFF
SELECT
DECODE(isdefault, 'TRUE', '# ') ||
DECODE(isdefault, 'TRUE', RPAD(name,43), RPAD(name,45)) ||
' = ' || value
FROM v$parameter
ORDER BY name; |
注意:上面的SQL腳本沒有列出系統(tǒng)中的隱藏參數(shù)