今天在使用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,那么強烈建議您認真的研究這些優秀高級工具的每一個細節,因為這樣可以大大的提高您的工作效率。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/hemingwang0902/archive/2010/09/26/5908259.aspx