老實說剛碰Oracle時,對V$PARAMETER、V$PARAMETER2、V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2、V$SPPARAMETER之
間有什麼差異,有什麼不同,完全搞不清楚,結果花了點時間Try一下,大概知道他們之間的差異‧
//V$PARAMETER、V$SYSTEM_PARAMETER、V$SPPARAMETER之間的差異
在 Oracle 10g 剛裝好時,Instance預設啟動是載入SPFILE參數檔,而SPFILE內有定義 db_file_multiblock_read_count=16 ,但
沒有定義 timed_statistics 該參數值的設定,由以下三個範例,可以看出‧
在 Oracle 10g 剛裝好時,Instance預設啟動是載入SPFILE參數檔,而SPFILE內有定義 db_file_multiblock_read_count=16 ,但
沒有定義 timed_statistics 該參數值的設定,由以下三個範例,可以看出‧
範例: //v$parameter
SQL> select name,value,isdefault from v$parameter
2 where name in ('timed_statistics','db_file_multiblock_read_count');
NAME VALUE ISDEFAULT
------------------------------ -------- ---------
timed_statistics TRUE TRUE
db_file_multiblock_read_count 16 FALSE
備註: ISDEFAULT欄位為FALSE,代表該參數是定義在SPFILE或PFILE中‧TRUE代表該參數是未定義於SPFILE或PFILE,而是由
Instance預設設定Value值(該Value值,也可以讓使用者在Instance啟動後,動態設定)‧
SQL> select name,value,isdefault from v$parameter
2 where name in ('timed_statistics','db_file_multiblock_read_count');
NAME VALUE ISDEFAULT
------------------------------ -------- ---------
timed_statistics TRUE TRUE
db_file_multiblock_read_count 16 FALSE
備註: ISDEFAULT欄位為FALSE,代表該參數是定義在SPFILE或PFILE中‧TRUE代表該參數是未定義於SPFILE或PFILE,而是由
Instance預設設定Value值(該Value值,也可以讓使用者在Instance啟動後,動態設定)‧
//v$system_parameter
SQL> select name,value,isdefault from v$system_parameter
2 where name in ('timed_statistics','db_file_multiblock_read_count');
NAME VALUE ISDEFAULT
------------------------------ -------- ---------
timed_statistics TRUE TRUE
db_file_multiblock_read_count 16 FALSE
備註: ISDEFAULT欄位為FALSE,代表該參數是定義在SPFILE或PFILE中‧TRUE代表該參數是未定義於SPFILE或PFILE,而是由
Instance預設設定Value值(該Value值,也可以讓使用者在Instance啟動後,動態設定)‧
//v$spparameter
SQL> select name,value,isspecified from v$spparameter
2 where name in ('timed_statistics','db_file_multiblock_read_count');
NAME VALUE ISSPEC
------------------------------ -------- ---------
timed_statistics FALSE
db_file_multiblock_read_count 16 TRUE
備註: ISSPEC欄位為TRUE,代表該參數是定義在SPFILE中‧FALSE代表該參數未定義SPFILE或PFILE之中‧如果之後曾經執行
命令對 timed_statistics 該參數做設定,該參數的ISSPEC將會變成TRUE‧
//V$PARAMETER、V$SYSTEM_PARAMETER之間的差異
範例: //Session1
SQL> select name,value,isdefault from v$parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
範例: //Session1
SQL> select name,value,isdefault from v$parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
SQL> select name,value,isdefault from v$system_parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
SQL> alter session set timed_statistics=false;
已更改階段作業.
已更改階段作業.
SQL> select name,value,isdefault from v$parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics FALSE TRUE
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics FALSE TRUE
SQL> select name,value,isdefault from v$system_parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
//Session2(該Session是在Session1執行完alter session set timed_statistics=false;命令,方登入Oracle)
SQL> select name,value,isdefault from v$parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
SQL> select name,value,isdefault from v$parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
SQL> select name,value,isdefault from v$system_parameter where name ='timed_statistics';
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
NAME VALUE ISDEFAULT
-------------------- ---------- ----------
timed_statistics TRUE TRUE
//V$PARAMETER、V$PARAMETER2、V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2之間的差異
由下面的範例可以知道 V$PARAMETER、V$PARAMETER2這二個Dynamic Performance View結果是一樣的,差異在於 V$PARAMETER對於
該參數的Value是多個時,會合併成一筆資料,而 V$PARAMETER2則會分成數筆資料‧
由下面的範例可以知道 V$PARAMETER、V$PARAMETER2這二個Dynamic Performance View結果是一樣的,差異在於 V$PARAMETER對於
該參數的Value是多個時,會合併成一筆資料,而 V$PARAMETER2則會分成數筆資料‧
同樣情形在V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2該二個Dynamic Performance View的差異也僅只是顯示是否多筆‧
範例: //V$PARAMETER
SQL> select name,value from v$parameter where name = 'control_files';
NAME VALUE
--------------- ------------------------------------------------------
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL,
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL,
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
SQL> select name,value from v$parameter where name = 'control_files';
NAME VALUE
--------------- ------------------------------------------------------
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL,
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL,
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
//V$PARAMETER2
SQL> select name,value from v$parameter2 where name = 'control_files';
NAME VALUE
--------------- ------------------------------------------------------
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
SQL> select name,value from v$parameter2 where name = 'control_files';
NAME VALUE
--------------- ------------------------------------------------------
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
<結論>
(一)V$PARAMETER、V$PARAMETER2這二個View都是顯示目前該Session下的參數設定,而二個View的差異在於,對於多值設定
的參數,V$PARAMETER就算多個值設定,永遠一個Row,而V$PARAMETER2則是多個Row‧V$PARAMETER、V$PARAMETER2該二
個View,不管是SPFILE或PFILE,的Value欄位都是會有值的‧
的參數,V$PARAMETER就算多個值設定,永遠一個Row,而V$PARAMETER2則是多個Row‧V$PARAMETER、V$PARAMETER2該二
個View,不管是SPFILE或PFILE,的Value欄位都是會有值的‧
(二)V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2這二個View都是顯示目前該 Instance下的參數設定,而二個View的差異在
於,對於多值設定的參數,V$SYSTEM_PARAMETER就算多個值設定,永遠一個Row, 而V$SYSTEM_PARAMETER2則是多個Row
‧V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2該二個View,不管是SPFILE或PFILE,的Value欄位都是會有值的‧
於,對於多值設定的參數,V$SYSTEM_PARAMETER就算多個值設定,永遠一個Row, 而V$SYSTEM_PARAMETER2則是多個Row
‧V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2該二個View,不管是SPFILE或PFILE,的Value欄位都是會有值的‧
(三)如果是用SPFILE參數型式啟動Instance,V$SPPARAMETER該View的Value欄位是會有值的,但如果是 PFILE參數型式啟動
Instance,則V$SPPARAMETER該View的Value欄位是Null的‧ 要注意的是V$SPPARAMETER是顯示SPFILE上設定的參數值,
並不代表是目前Instance上設定的參數值,如果想要查看目前Instance上的參數值,請參考V$SYSTEM_PARAMETER‧
Instance,則V$SPPARAMETER該View的Value欄位是Null的‧ 要注意的是V$SPPARAMETER是顯示SPFILE上設定的參數值,
並不代表是目前Instance上設定的參數值,如果想要查看目前Instance上的參數值,請參考V$SYSTEM_PARAMETER‧
(四)請用如下範例即可以觀察三個Dynamic Performance View的差異‧
SELECT * FROM V$PARAMETER WHERE NAME = 'control_files'
SELECT * FROM V$PARAMETER2 WHERE NAME = 'control_files'
SELECT * FROM V$PARAMETER WHERE NAME = 'control_files'
SELECT * FROM V$PARAMETER2 WHERE NAME = 'control_files'
SELECT * FROM V$SYSTEM_PARAMETER WHERE NAME = 'control_files'
SELECT * FROM V$SYSTEM_PARAMETER2 WHERE NAME = 'control_files'
SELECT * FROM V$SYSTEM_PARAMETER2 WHERE NAME = 'control_files'
SELECT * FROM V$SPPARAMETER WHERE NAME = 'control_files'
全站熱搜