首先初始化參數的設置的方法就有很多種:可以通過ALTER SYSTEM SET SCOPE = MEMORY的方式僅設置內存的修改,也可以通過ALTER SYSTEM SET SCOPE = SPFILE只修改SPFILE的值,當然也可以同時修改SPFILE和MEMORY中的設置。還有一種初始化參數可以設置延遲生效,也就是說這個修改只對以後連接到數據庫的會話生效,而對當前會話以及其他已經連接到Oracle的會話不會生效。如果再考慮RAC環境,數據庫中存在多個啟動實例的情況,那麼查詢數據庫初始化參數就更加復雜了。
所幸Oracle提供的查詢初始化參數方法也有很多種:SHOW PARAMETERS、SHOW SPPARAMETERS、CREATE PFILE、V$PARAMETER、V$PARAMETER2、V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2、V$SPPARAMETER。
SHOW PARAMETERS是SQLPLUS工具提供的查詢初始化參數的方法,這個方法查詢的初始化參數是當前會話生效的初始化參數。
SHOW SPPARAMETERS也是SQLPLUS工具提供的方法,用來查詢當前會話生效的SPFILE參數包含的初始化參數。這個命令在11g以後sqlplus版本中有效。
CREATE PFILE命令不像其他方法那樣直觀,這種方法可以將SPFILE中或當前內存中設置的初始化文件保存到PFILE文件中,然後就可以通過文本編輯工具直觀的看到SPFILE中或當前內存中設置了哪些初始化參數。雖然這種方法看上去比較麻煩,但是這種方法列出的參數都是用戶設置的參數,所有默認值的參數並不會列出來,因此看到的結果要比其他方法直觀得多。在11g以後的版本允許CREATE PFILE FROM MEMORY。
V$PARAMETER視圖提供了當前會話可見的初始化參數的設置,如果像查詢RAC數據庫的所有實例的設置,可以查詢GV$PARAMETER視圖。
V$PARAMETER2視圖和V$PARAMETER差不多,唯一的區別在於對於包括值的初始化參數,從這個視圖會返回多條記錄,每條記錄對應一個值。同樣的,對於RAC環境可以查詢GV$PARAMETER2視圖。
V$SYSTEM_PARAMETER視圖記錄當前實例生效的初始化參數設置。注意這裡是實例生效而不是會話生效。同樣,GV$SYSTEM_PARAMETER則包含了所有實例生效的初始化參數信息。
V$SYSTEM_PARAMETER2視圖與V$SYSTEM_PARAMETER視圖的關系和V$PARAMETER2視圖與V$PARAMETER視圖的關系一樣,都是對於包含多個值的參數采用了分行處理的方式。
V$SPPARAMETER記錄了來自SPFILE文件中初始化參數。如果參數在SPFILE文件中沒有設置,則字段ISSPECIFIED對應的值為FALSE。同樣可以查詢GVSPPARAMETER參數來顯示RAC環境所有實例的設置。
首先看一下V$PARAMETER和V$PARAMETER2的區別,這個區別同樣適用於V$SYSTEM_PARAMETER和V$SYSTEM_PARAMETER2:
SQL> SELECT NAME, VALUE FROM V$PARAMETER
2 MINUS
3 SELECT NAME, VALUE FROM V$PARAMETER2;NAME VALUE
0---------------------------------------- --------------------------------------------------control_files E:\ORACLE\ORADATA\YTK102\CONTROL01.CTL, E:\Oracle\
ORADATA\YTK102\CONTROL02.CTL, E:\Oracle\ORADATA\YT
K102\CONTROL03.CTL
SQL> SELECT NAME, VALUE FROM V$PARAMETER2
2 MINUS
3 SELECT NAME, VALUE FROM V$PARAMETER;NAME VALUE
---------------------------------------- --------------------------------------------------
control_files E:\Oracle\ORADATA\YTK102\CONTROL01.CTL
control_files E:\Oracle\ORADATA\YTK102\CONTROL02.CTL
control_files E:\Oracle\ORADATA\YTK102\CONTROL03.CTL