ORA-02030問題解決方法
給普通使用者賦予對v$檢視的查詢許可權,結果報 ORA-02030 錯誤
ORA-02030: 只能從固定的表/檢視查詢(ORA-02030: can only select from fixed tables/views)
問題背景:
在一個dba使用者下的儲存過程中需要使用v$的檢視(v$client_stats)
使用命令列測試:
SQL> variable total number;
SQL> begin
2 select count(1) into :total from v$client_stats;
3 dbms_output.put_line('total = '|| :total);
4 end;
5 /
PL/SQL procedure successfully completed
total
---------
0
這樣並沒有問題,於是編輯成過程執行
使用過程
SQL> create or replace procedure p_test
2 authid current_user
3 as
4 v_all number := 9999;
5 begin
6 select count(1)
7 into v_all from v$client_stats;
8
9 dbms_output.put_line('v_all =' ||v_all );
10 end;
11 /
Warning: Procedure created with compilation errors
具體錯位資訊
Compilation errors for PROCEDURE ZHANGBIN.P_TEST
Error: PL/SQL: ORA-00942: 表或檢視不存在
Line: 9
Text: FROM v$client_stats;
Error: PL/SQL: SQL Statement ignored
Line: 7
Text: SELECT COUNT(1)
此時需要給使用者賦查詢許可權(於是產生了ORA-02030錯誤)
SQL> show user;
User is "SYS"
SQL> grant select on v$client_stats to zhangbin;
grant select on v$client_stats to zhangbin
ORA-02030: 只能從固定的表/檢視查詢
解決方法:
SQL> select * from dba_synonyms t where t.synonym_name = 'V$CLIENT_STATS';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ -----------
PUBLIC V$CLIENT_STATS SYS V_$CLIENT_STATS
SQL> grant select on V_$CLIENT_STATS to zhangbin;
Grant succeeded
切換到普通使用者
SQL> show user;
User is "zhangbin"
SQL> create or replace procedure p_test
2 as
3 v_all number :=9999;
4 begin
5 select count(1)
6 into v_all
7 from v$client_stats;
8 dbms_output.put_line('v_all =' ||v_all );
9 end;
10 /
Procedure created
SQL> set serveroutput on
SQL> exec p_test;
v_all =0
PL/SQL procedure successfully completed
ORA-02030: 只能從固定的表/檢視查詢(ORA-02030: can only select from fixed tables/views)
問題背景:
在一個dba使用者下的儲存過程中需要使用v$的檢視(v$client_stats)
使用命令列測試:
SQL> variable total number;
SQL> begin
2 select count(1) into :total from v$client_stats;
3 dbms_output.put_line('total = '|| :total);
4 end;
5 /
PL/SQL procedure successfully completed
total
---------
0
這樣並沒有問題,於是編輯成過程執行
使用過程
SQL> create or replace procedure p_test
2 authid current_user
3 as
4 v_all number := 9999;
5 begin
6 select count(1)
7 into v_all from v$client_stats;
8
9 dbms_output.put_line('v_all =' ||v_all );
10 end;
11 /
Warning: Procedure created with compilation errors
具體錯位資訊
Compilation errors for PROCEDURE ZHANGBIN.P_TEST
Error: PL/SQL: ORA-00942: 表或檢視不存在
Line: 9
Text: FROM v$client_stats;
Error: PL/SQL: SQL Statement ignored
Line: 7
Text: SELECT COUNT(1)
此時需要給使用者賦查詢許可權(於是產生了ORA-02030錯誤)
SQL> show user;
User is "SYS"
SQL> grant select on v$client_stats to zhangbin;
grant select on v$client_stats to zhangbin
ORA-02030: 只能從固定的表/檢視查詢
解決方法:
SQL> select * from dba_synonyms t where t.synonym_name = 'V$CLIENT_STATS';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ -----------
PUBLIC V$CLIENT_STATS SYS V_$CLIENT_STATS
SQL> grant select on V_$CLIENT_STATS to zhangbin;
Grant succeeded
切換到普通使用者
SQL> show user;
User is "zhangbin"
SQL> create or replace procedure p_test
2 as
3 v_all number :=9999;
4 begin
5 select count(1)
6 into v_all
7 from v$client_stats;
8 dbms_output.put_line('v_all =' ||v_all );
9 end;
10 /
Procedure created
SQL> set serveroutput on
SQL> exec p_test;
v_all =0
PL/SQL procedure successfully completed
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28929558/viewspace-1164910/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SERVICE問題解決方法
- ORA-02030的解決
- 解決問題通用方法論
- As常見問題解決方法
- 遇到問題的解決方法
- "undefined reference to" 問題解決方法Undefined
- 問題解決方法有三
- Josephus問題解決方法一
- Josephus問題解決方法二
- css高度塌陷問題解決方法CSS
- **PHPNotice:Undefinedindex:…問題的解決方法PHPUndefinedIndex
- windows xp共享問題解決方法Windows
- MYSQL亂碼問題解決方法MySql
- 解決問題的方法和途徑-問題管理
- 解決「問題」,不要解決問題
- java中亂碼問題解決方法Java
- Nacos 常見問題及解決方法
- dedecms 後臺假死問題解決方法
- 快取穿透問題與解決方法快取穿透
- pyinstaller閃退問題解決方法
- 今天遇到的問題與解決方法
- 用簡單的方法解決問題
- Oracle問題解決方法ORA-0Oracle
- ssh登入慢問題解決方法
- Josephus問題解決方法五(遞迴)遞迴
- Tomcat埠占用問題解決方法Tomcat
- 解決Can not allocate log問題的方法
- but no encoding declared;問題的解決方法Encoding
- 問卷調查中常見問題及解決方法
- vue中常見的問題以及解決方法Vue
- Win7 - 遊戲全屏問題解決方法Win7遊戲
- IMP-00013 問題及解決方法
- Hadoop常見問題及解決方法Hadoop
- KMP常見問題及解決方法【Z】KMP
- 讀mysql中文亂碼問題解決方法MySql
- CentOS中文亂碼問題的解決方法CentOS
- 安裝sql server遇到問題解決方法SQLServer
- Solaris 常見問題及解決方法(轉)