數(shù)據(jù)庫查詢初始化參數(shù)的方法
首先初始化參數(shù)的設(shè)置的方法就有很多種:可以通過ALTER SYSTEM SET SCOPE = MEMORY的方式僅設(shè)置內(nèi)存的修改,也可以通過ALTER SYSTEM SET SCOPE = SPFILE只修改SPFILE的值,當(dāng)然也可以同時修改SPFILE和MEMORY中的設(shè)置。還有一種初始化參數(shù)可以設(shè)置延遲生效,也就是說這個修改只對以后連接到數(shù)據(jù)庫的會話生效,而對當(dāng)前會話以及其他已經(jīng)連接到Oracle的會話不會生效。如果再考慮RAC環(huán)境,數(shù)據(jù)庫中存在多個啟動實例的情況,那么查詢數(shù)據(jù)庫初始化參數(shù)就更加復(fù)雜了。
所幸Oracle提供的查詢初始化參數(shù)方法也有很多種:SHOW PARAMETERS、SHOW SPPARAMETERS、CREATE PFILE、V$PARAMETER、V$PARAMETER2、V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2、V$SPPARAMETER。
SHOW PARAMETERS是SQLPLUS工具提供的查詢初始化參數(shù)的方法,這個方法查詢的初始化參數(shù)是當(dāng)前會話生效的初始化參數(shù)。
SHOW SPPARAMETERS也是SQLPLUS工具提供的方法,用來查詢當(dāng)前會話生效的SPFILE參數(shù)包含的初始化參數(shù)。這個命令在11g以后sqlplus版本中有效。
CREATE PFILE命令不像其他方法那樣直觀,這種方法可以將SPFILE中或當(dāng)前內(nèi)存中設(shè)置的初始化文件保存到PFILE文件中,然后就可以通過文本編輯工具直觀的看到SPFILE中或當(dāng)前內(nèi)存中設(shè)置了哪些初始化參數(shù)。雖然這種方法看上去比較麻煩,但是這種方法列出的參數(shù)都是用戶設(shè)置的參數(shù),所有默認值的參數(shù)并不會列出來,因此看到的結(jié)果要比其他方法直觀得多。在11g以后的版本允許CREATE PFILE FROM MEMORY。
V$PARAMETER視圖提供了當(dāng)前會話可見的初始化參數(shù)的設(shè)置,如果像查詢RAC數(shù)據(jù)庫的所有實例的設(shè)置,可以查詢GV$PARAMETER視圖。
V$PARAMETER2視圖和V$PARAMETER差不多,唯一的區(qū)別在于對于包括值的初始化參數(shù),從這個視圖會返回多條記錄,每條記錄對應(yīng)一個值。同樣的,對于RAC環(huán)境可以查詢GV$PARAMETER2視圖。
V$SYSTEM_PARAMETER視圖記錄當(dāng)前實例生效的初始化參數(shù)設(shè)置。注意這里是實例生效而不是會話生效。同樣,GV$SYSTEM_PARAMETER則包含了所有實例生效的初始化參數(shù)信息。
V$SYSTEM_PARAMETER2視圖與V$SYSTEM_PARAMETER視圖的關(guān)系和V$PARAMETER2視圖與V$PARAMETER視圖的關(guān)系一樣,都是對于包含多個值的參數(shù)采用了分行處理的方式。
V$SPPARAMETER記錄了來自SPFILE文件中初始化參數(shù)。如果參數(shù)在SPFILE文件中沒有設(shè)置,則字段ISSPECIFIED對應(yīng)的值為FALSE。同樣可以查詢GVSPPARAMETER參數(shù)來顯示RAC環(huán)境所有實例的設(shè)置。
首先看一下V$PARAMETER和V$PARAMETER2的區(qū)別,這個區(qū)別同樣適用于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
【編輯推薦】