定義者許可權儲存過程role無效,必須要有顯式授權

shuangoracle發表於2011-07-07
對於定義者許可權儲存過程來說,role許可權不可見。比如,使用者ljb是dba角色,完全具備更新其他使用者任何表的許可權。但事實上,ljb使用者在sql中可以輕易完成的更新動作,在儲存過程中會報以許可權不足的錯誤而無法完成。只有在zhaoss使用者顯式的將t表授權給ljb使用者後,ljb使用者在建立儲存過程的時候才能更新t表。
SQL> create user ljb identified by ljb ;
使用者已建立。
SQL> grant dba to ljb;
授權成功。
SQL> conn ljb/ljb
已連線。
SQL> delete zhaoss.t;
已刪除100000行。
SQL> rollback;
回退已完成。
SQL> create or replace procedure p_ljb_test
2 as
3 begin
4 delete zhaoss.t;
5 commit;
6 end;
7 /
警告: 建立的過程帶有編譯錯誤。
SQL> show errors;
PROCEDURE P_LJB_TEST 出現錯誤:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/1 PL/SQL: SQL Statement ignored
4/15 PL/SQL: ORA-00942: 表或檢視不存在
SQL> conn zhaoss/zhaoss
已連線。
SQL> grant delete on t to ljb;
授權成功。
SQL> conn ljb/ljb
已連線。
SQL> create or replace procedure p_ljb_test
2 as
3 begin
4 delete zhaoss.t;
5 commit;
6 end;
7 /
過程已建立。
SQL>
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24496749/viewspace-1052093/,如需轉載,請註明出處,否則將追究法律責任。

相關文章