Oracle資料庫中的系統引數

noter發表於2007-07-04

Oracle資料庫系統根據初始化引數檔案 init.ora中設定的引數來配置自身的啟動,每個例項在啟動之前,首先讀取這些引數檔案中設定的不同引數。Oracle系統中的引數,根據系統使用情 況可以簡單分為兩大類,普通引數,也就是Oracle系統正常使用的一些引數,另外一類就是特殊引數,包括三種,過時引數、強調引數和隱藏引數。隨著 Oracle資料庫新版本的釋出,相應每次都會增加或者刪除一些引數。如何查詢當

Oracle資料庫系統根據初始化引數檔案 init.ora中設定的引數來配置自身的啟動,每個例項在啟動之前,首先讀取這些引數檔案中設定的不同引數。Oracle系統中的引數,根據系統使用情 況可以簡單分為兩大類,普通引數,也就是Oracle系統正常使用的一些引數,另外一類就是特殊引數,包括三種,過時引數、強調引數和隱藏引數。隨著 Oracle資料庫新版本的釋出,相應每次都會增加或者刪除一些引數。如何查詢當前版本資料庫系統的引數情況以及當前系統版本相對於以前版本增加或者丟棄 的那些引數呢?本文將詳細介紹如何查詢當前系統版本中的各種引數情況。

一、過時引數和強調引數
Oracle資料庫中,系統提供了幾個檢視可以檢視系統引數的情況。檢視V$OBSOLETE_PARAMETER中含有所有的過時(obsolete) 和強調(underscored)引數。這裡首先說明一下什麼是Oracle的過時(obsolote)和強調(underscored)引數,過時參 數,顧名思義就是在Oracle以前的版本中存在,但在新版本中已經淘汰了的引數,已經不再使用;而強調引數,是指那些在新版本中保留了下來,但是除非特 殊需要不希望使用者使用的那些引數。在檢視V$OBSOLETE_PARAMETER中,包含這些引數的名稱和一個標誌字ISSPECIFIED,該標誌字 用來指出這個引數是否在init.ora檔案中已實際設定。

下面的SQL指令碼列出了當前系統中所有的過時引數名稱以及它們是否在當前系統中設定。

SQL> COL name format a50;
SQL> SELECT name, isspecified FROM v$obsolete_parameter;

上面談到,Oracle系統並沒有將V$OBSOLETE_PARAMETER檢視中的所有引數均丟棄,而是將其中的一部分轉換為強調引數,下面就來討論 如何檢視這些引數是已被丟棄還是被轉換。這可以通過系統檢視X$KSPPO來檢視,該檢視中包含一個名為KSPPOFLAG的欄位,用來指明該引數在當前 版本中是被丟棄還是被強調,如果該值為1,則表示該引數已被丟棄,該值為2,則表明該引數現為強調引數。

SELECT kspponm,
DECODE(ksppoflg, 1,’Obsolete’, 2, ’Underscored’)
FROM x$ksppo
ORDER BY kspponm;

注:該檢視只在sys使用者下可以看到。

二、隱藏引數
Oracle系統中還有一類引數稱之為隱藏引數(hidden parameters),是系統中使用,但Oracle官方沒有公佈的引數,這些引數可能是那些還沒有成熟或者是系統開發中使用的引數。這些引數在所有 Oracle官方提供的文件中都沒有介紹,他們的命名有一個共同特徵就是都以’_’作為引數的首字元,諸如Oracle 8i中的_trace_files_public和_lock_sga_areas等等。

下面的查詢可以得到當前系統中的所有隱藏引數(以sys身份登入):

SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx
AND translate(ksppinm,’_’,’#’) like ’#%’;

三、系統當前引數
下面的指令碼以英文字母順序列出了系統當前使用的所有引數。在列出的引數中,如果引數名稱前面有#這個符號,則表示該引數沒有明確指定,採用了系統中的預設 引數。一般在一個新的Oracle版本安裝完成後,首先執行該指令碼,則可以生成該版本資料庫的標準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指令碼沒有列出系統中的隱藏引數。


 

【來源】

 

相關文章