查詢初始化引數的方法(二)

yangtingkun發表於2009-05-19

查詢初始化引數的方法很多,比如SHOW PARAMETER,或查詢V$PARAMETER等,這裡簡單總結一下。

這一篇介紹V$PARAMETER檢視與V$SYSTEM_PARAMETER檢視的不同。

查詢初始化引數的方法(一):http://yangtingkun.itpub.net/post/468/484669

 

 

上一篇文章介紹了很多種查詢初始化引數的方法,而且說明了V$PARAMETER檢視和V$PARAMETER2檢視的區別。

這裡看看V$PARAMETERV$SYSTEM_PARAMETER檢視的區別。

一般在查詢初始化引數的時候都習慣性的使用SHOW PARAMETER,也就是查詢V$PARAMETER檢視,但是有些時候查詢這個檢視得到的結果並不準確:

SQL> show parameter query_rewrite_enabled

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------
query_rewrite_enabled                string      TRUE
SQL> select name, value
  2  from v$parameter
  3  where name = 'query_rewrite_enabled';

NAME                                     VALUE
---------------------------------------- ----------------------------
query_rewrite_enabled                    TRUE

SQL> select name, value
  2  from v$system_parameter
  3  where name = 'query_rewrite_enabled';

NAME                                     VALUE
---------------------------------------- ----------------------------
query_rewrite_enabled                    TRUE

這是如果在會話級修改query_rewrite_enabled這個初始化引數:

SQL> alter session set query_rewrite_enabled = false;

會話已更改。

SQL> show parameter query_rewrite_enabled

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
query_rewrite_enabled                string      FALSE
SQL> select name, value
  2  from v$parameter
  3  where name = 'query_rewrite_enabled';

NAME                                     VALUE
---------------------------------------- ---------------------------
query_rewrite_enabled                    FALSE

SQL> select name, value
  2  from v$system_parameter
  3  where name = 'query_rewrite_enabled';

NAME                                     VALUE
---------------------------------------- ---------------------------
query_rewrite_enabled                    TRUE

可以看到,show parameter和查詢v$parameter檢視的結果都是FALSE,而剛才做的修改只是會話級,並沒有修改系統的初始化引數。在上一篇描述這兩個檢視的時候就提到了,V$PARAMETER檢視反映的是初始化引數在當前會話中生效的值,而V$SYSTEM_PARAMETER反映的才是例項級上的初始化引數。

在來看看延遲引數修改的情況:

SQL> select name, value
  2  from v$parameter
  3  where name = 'recyclebin';

NAME                                     VALUE
---------------------------------------- ------------------------------------
recyclebin                               on

SQL> select name, value
  2  from v$system_parameter
  3  where name = 'recyclebin';

NAME                                     VALUE
---------------------------------------- ------------------------------------
recyclebin                               on

SQL> alter system set recyclebin = off deferred scope = memory;

系統已更改。

SQL> select name, value
  2  from v$parameter
  3  where name = 'recyclebin';

NAME                                     VALUE
---------------------------------------- ------------------------------------
recyclebin                               on

SQL> select name, value
  2  from v$system_parameter
  3  where name = 'recyclebin';

NAME                                     VALUE
---------------------------------------- ------------------------------------
recyclebin                               OFF

結果和前面的恰好反過來,v$parameter檢視中的結果沒有發生變化,而v$system_parameter檢視的結果變成了OFF。這是因為延遲修改對資料庫中當前存在的會話不生效,因此反映當前會話情況的v$parameter檢視結果不變,而對於系統而言,初始化引數已經改變,而且所有新建會話的引數也會改變,所以v$system_parameter檢視的結果發生了改變。

SQL> CONN YANGTK/YANGTK@YTK111
已連線。
SQL> select name, value
  2  from v$parameter
  3  where name = 'recyclebin';

NAME                                     VALUE
---------------------------------------- ---------------------------
recyclebin                               OFF

SQL> select name, value
  2  from v$system_parameter
  3  where name = 'recyclebin';

NAME                                     VALUE
---------------------------------------- ---------------------------
recyclebin                               OFF

根據這兩個例子,利用V$PARAMETER檢視獲取系統的啟動初始化引數是不準確的,應該從V$SYSTEM_PARAMETER檢視來獲取。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-600507/,如需轉載,請註明出處,否則將追究法律責任。

相關文章