PLSQL Developer動態執行表不可訪問 本會話的自動統計被禁止
這個報錯資訊在不同的PL/SQL Developer版本都會出現,從上面詳細的報錯提示資訊中我們可以判斷得到,報錯原因不在工具本身。
在此,詳細記錄一下這個小問題的三種處理方法。
1.第一種處理方法(不推薦)
就是在報錯的Error對話方塊中將“Don't show this message again”選項選中,下次就不在提示這個錯誤了。
這種方法應該可以叫做“鴕鳥方式”的處理方法。沒有從根本上解決這個問題。
2.第二種處理方法(可以採納)
報錯資訊中描述的非常詳細,原因是動態效能表沒有權利被訪問導致的問題,因此,我們通過把所需訪問許可權賦予給具體使用者的方法來解決這個問題。
這裡給出我能想到的三種具體處理方法。大家可以繼續補充。
1)如果只是某一具體使用者有許可權查詢這三個動態效能檢視,可以如下進行操作
這裡注意一下:我們授權的檢視是V_$session不是V$session,因為V$session是同名不是具體的檢視。否則您會收到下面這個錯誤。
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”儲存退出。
這樣問題就解決了