儲存過程分成兩種許可權:
1.定義者許可權 authid definer
2.呼叫者許可權 authid current_user
預設的情況下使用的是定義者許可權。
1。定義者許可權使用遇到的問題:
當使用定義者許可權時候,不管是你自己去call,還是其他使用者去call,效果是一樣的,都是用你的許可權去執行。
但是,不是你的全部許可權,是把所有roles的許可權去掉了,其實只有public許可權,如果你本身沒有create table,
create view之類的系統許可權,而你的儲存過程卻用到create table,是會提示許可權不足的。
solution: grant create table,create view之類的系統許可權到你的使用者下。
2。呼叫者許可權使用遇到的問題:
當使用呼叫者許可權時候,用什麼使用者去call儲存過程,就用誰的許可權,而且包括角色許可權。請注意,用資料字典
user_***, 這個是呼叫者的,所以建議不要用他,而用all_***或dba_***x. (當然是要求呼叫者有select_catalog_role)
另外,涉及到create table, create index, ...要確認呼叫者是否具備在該儲存過程所在的schema下有此許可權(如果呼叫者就是你自己,肯定沒問題)。
一般情況下,在儲存過程中,只要不涉及到動態建立物件,就不會有特殊許可權問題,用authid definer就已經足夠。
Oracle 儲存過程許可權問題
今天在寫儲存過程時遇到乙個不大不小的問題,pl sql報 表或者試圖不存在,但是問題關鍵是單獨執行sql 四沒有問題的,人也很無奈,經查閱資料得知,是dba許可權問題。因為角色在函式 儲存過程 觸發器中都是失效的,也就是說,使用者從角色繼承過來的許可權,不能在函式 儲存過程 觸發器中使用。在函式 儲...
Oracle儲存過程執行許可權
預設情況下,在呼叫儲存過程使用者的角色是不起作用的,即在執行儲存過程時只有public許可權。所以如果被呼叫的儲存過程中如果有execute immediate create table.語句,將會引發ora 01031 insufficient privileges錯誤。儲存過程分為兩種,即dr ...
ORACLE 儲存過程 觸發器許可權問題
需要建立trigger,trigger名和已有表名相同,竟然沒有問題。編譯的時候發現sfism4使用者缺少表sfis1.c menu parameter t的許可權,查詢發現c update和c select角色已經有該錶許可權,且sfism4使用者也已經有這倆角色。查詢發現涉及到authid cu...