2009年12月26日 星期六

Show parameter的結果,是可以相信的嗎?

Oracle DBA常常會使用SQLPLUS指令:show parameter,來顯示目前的參數值
例如:
SQL> show parameter fast_start_mttr_target
NAME TYPE VALUE
------------------ ------- ------
fast_start_mttr_target integer 0

但是這個參數值的來源到底是Session Specific還是Instance Level的參數值
其實show parameter顯示的是目前這個Session的參數值,也就是v$parameter的內容

但是有些參數可以在Session Level與Instance Level有不同的參數值
所有想要知道Instance Level的參數,必須查詢v$system_parameter

可是有些參數值,使用v$parameter或v$system_parameter查詢時,都有顯示參數值
但是可能只是使用預設值或尤其它參數所衍生的參數值,必沒有真的被設定在參數檔中
所以可以使用v$spparameter來查詢某個參數到底是否有明確設定
例如剛剛使用show parameter顯示fast_start_mttr_target的值為0,可是這個參數真的有被明確設定為0嗎?
SQL>select value from v$spparameter where name='fast_start_mttr_target';

VALUE
-----

如果結果如上,表示在spfile中並沒有設定此參數,所以show parameter的結果只是使用此參數的預設值,而fast_start_mttr_target的預設值剛好為0

若結果為
VALUE
-----
0
則表示fast_start_mttr_target的參數值明確被設定為0