V$動態效能表中的孿生兄弟~~

junsansi發表於2008-09-27

我們都知道通常檢視初始化引數可以使用show parameter,但是對於沒有dba許可權的使用者就無法執行該命令,因此呢oracle提供了一個檢視v$system_parameter用來檢視當前例項的初始化引數設定,例如:

SQL> select name,value from v$system_parameter p where p.name='sort_area_size';
 
NAME                           VALUE
------------------------------ ------------------------------
sort_area_size                 65536

這個東西平淡無奇,大家都知道,我們今天也不是來看它的,今天的主角是雙胞胎的故事,沒錯,v$system_parameter就有一個雙胞胎兄弟,名字也起的很傻,叫v$system_parameter2。

既然說了是雙胞胎,這哥倆之間必須非常相像,事實也確實如此,兩個檢視都是顯示例項當前的初始化引數設定,如果要說哥倆間有啥區別的話,細微之處,我們還是能夠辨別的出。對於v$system_parameter而言,每個初始化引數會被做為一行記錄顯示,不管該引數擁有幾個值。而v$system_parameter2則不同,如果某個初始化引數擁有多個值,則每個值都會被做為一條記錄顯示。

舉例來說,控制檔案通常會有多個,在v$system_parameter中會顯示成一行,而在v$system_parameter2中,則每個控制檔案顯示成一行,例如:

SQL> select name,value from v$system_parameter p where p.name='control_files';
 
NAME                           VALUE
------------------------------ ------------------------------------------------------------
control_files                  /data/oradata/test08/control01.ctl, /data/oradata/test08/con
                               trol02.ctl, /data/oradata/test08/control03.ctl
 
SQL> select name,value from v$system_parameter2 p where p.name='control_files';
 
NAME                           VALUE
------------------------------ ------------------------------------------------------------
control_files                  /data/oradata/test08/control01.ctl
control_files                  /data/oradata/test08/control02.ctl
control_files                  /data/oradata/test08/control03.ctl

與此類似的還有v$parameter檢視。

如果說v$system_parameter顯示例項中初始化引數的值,則v$parameter則顯示使用於當前session的初始化引數值,例如:
SQL> select name,value from v$parameter p where p.name='sort_area_size';
 
NAME                           VALUE
------------------------------ ------------------------------
sort_area_size                 65536

SQL> alter session set sort_area_size=10240000;
 
Session altered

SQL> select name,value from v$parameter p where p.name='sort_area_size';
 
NAME                           VALUE
------------------------------ ------------------------------
sort_area_size                 10240000
 
SQL> select name,value from v$system_parameter p where p.name='sort_area_size';
 
NAME                           VALUE
------------------------------ ------------------------------
sort_area_size                 65536

如上,由於alter session只作用於當前session,因此查詢v$system_parameter檢視發現沒有任何變化,而v$parameter檢視中的值則已經更新。

v$parameter也有一個雙胞胎兄弟,名字也一樣傻:v$parameter2。這哥倆之間的區別與v$system_parameter和v$system_parameter2一樣,這裡就不做示例演示了。

 

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

相關文章