oracle數據庫系統根據初始化參數文件init.ora中設置的參數來配置自身的啟動,每個實例在啟動之前,首先讀取這些參數文件中設置的不同參數。oracle系統中的參數,根據系統使用情況可以簡單分為兩大類,普通參數,也就是oracle系統正常使用的一些參數,另外一類就是特殊參數,包括三種,過時參數、強調參數和隱藏參數。隨著oracle數據庫新版本的發布,相應每次都會增加或者刪除一些參數。如何查詢當前版本數據庫系統的參數情況以及當前系統版本相對于以前版本增加或者丟棄的那些參數呢?本文將詳細介紹如何查詢當前系統版本中的各種參數情況。
一、過時參數和強調參數
oracle 數據庫中,系統提供了幾個視圖可以查看系統參數的情況。視圖 v$obsolete_parameter 中含有所有的過時 (obsolete) 和強調 (underscored) 參數。
過時參數 (obsolote) ,就是在 oracle 以前的版本中存在,但在新版本中已經淘汰了的參數,已經不再使用;
強調參數(underscored) ,是指那些在新版本中保留了下來,但是除非特殊需要不希望用戶使用的那些參數。
在視圖 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 腳本沒有列出系統中的隱藏參數
新聞熱點
疑難解答