報錯:
當前解決方案:
Automatic statistics 含義:
When you execute a statement in a SQL Window or in a Test Window, PL/SQL Developer will
automatically generate a statistic report of this execution. One condition is that you need to have select
privileges on the dynamic performance tables v$session, v$statname and v$sesstat (provided through
the standard plustrace role).
You can view the statistic report by changing to the Statistics tab at the top of the SQL Window or Test
Window.
參考資料:http://space.itpub.net/519536/viewspace-614671
【問題處理】PL/SQL Developer報錯Dynamic Performance Tables not accessible
今天,Team Dev裡的幾位同事向我反映,在使用PL/SQL Developer工具登陸一個新建立的使用者進行查詢時,報出以下錯誤(PL/SQL Developer版本:7.1.5 1403):
Dynamic Performance Tables not accessible,
Automatic Statistics disabled for this session
You can disable statistics in the preference menu, or obtain select
priviliges on the V$session,V$sesstat and V$statname tables
這個報錯資訊在不同的PL/SQL Developer版本都會出現,從上面詳細的報錯提示資訊中我們可以判斷得到,報錯原因不在工具本身。
在此,詳細記錄一下這個小問題的三種處理方法。
1.第一種處理方法(不推薦)
就是在報錯的Error對話方塊中將“Don't show this message again”選項選中,下次就不在提示這個錯誤了。
這種方法應該可以叫做“鴕鳥方式”的處理方法。沒有從根本上解決這個問題。
2.第二種處理方法(可以採納)
報錯資訊中描述的非常詳細,原因是動態效能表沒有權利被訪問導致的問題,因此,我們通過把所需存取權限賦予給具體使用者的方法來解決這個問題。
這裡給出我能想到的三種具體處理方法。大家可以繼續補充。
1)如果只是某一具體使用者有許可權查詢這三個動態效能檢視,可以如下進行操作
這裡注意一下:我們授權的視圖是V_$session不是V$session,因為V$session是同名不是具體的視圖。否則您會收到下面這個錯誤。
sys@ora10g> grant select on V$session to user_sec;
grant select on V$session to user_sec
*
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
正確的授權方法如下:
SQL> grant select on V_$session to user_sec;
SQL> grant select on V_$sesstat to user_sec;
SQL> grant select on V_$statname to user_sec;
2)可以使用下面這個“簡單粗暴”的方法處理之。
SQL> grant SELECT ANY DICTIONARY to user_sec;
3)以上兩種方法是針對特定使用者的處理方法,如果想讓所有使用者(不局限在上面的user_sec使用者)都能夠查詢這三個動態效能檢視,可以通過將查詢許可權授權給public方法來實現,操作如下。這樣就可以保證所有開發人員都不會再出現上述的報錯資訊了。
SQL> grant select on V_$session to public;
SQL> grant select on V_$sesstat to public;
SQL> grant select on V_$statname to public;
3.第三種方法(推薦)
徹底禁掉PL/SQL Developer的這個功能。
方法如下:
導航到Tools --> Preferences --> Options
找到“Automatic Statistics”選項,將其前面的小對勾去掉,然後點擊“Apply”和“OK”儲存退出。
4.小結
之所以書寫這個文章,只是給出一個處理問題的一般方法,這就是:“充分挖掘具體報錯資訊,從各種表面現象入手,逐步深入,最終得到滿意的處理結果。”
最後談一下DBA與資料庫管理開發工具(如PL/SQL Developer、Toad等等)的關係。
如果您是純開發DBA,那麼強烈建議您認真的研究這些優秀進階工具的每一個細節,因為這樣可以大大的提高您的工作效率。
如果您是純維護DBA,告訴您一個好訊息和一個壞訊息。
好訊息是:
您的能力已經足夠強大,沒有必要再依賴這些工具。因為它們提供的那些定製好的功能已經遠遠的滿足不了您對資料庫細節的渴求;另外,即使在"一般"極端的故障處理現場,您覺得有可能用這些工具串連到DB嗎?剩下的可能只有一頭汗水與無奈的歎息,也許只有在那個時候您才會意識到:原來真正意義上的救命稻草是那個看上去充滿神秘色彩的SQL*Plus命令列工具;
壞訊息是:
珍愛DBA生命,請您快些遠離這些工具!
The End –