oracle--job執行報錯--ORA-01031

skuary發表於2012-01-11

今天下午在編輯一個job的時候,發現一個奇怪的現象,A使用者下面有一個job,半小時執行一次,然後我在job里加了些增刪改的操作,之後job就執行不了了,具體報錯資訊如下:

Errors in file /oracle/admin/blog/udump/blog_ora_21537.trc:
ORA-12012: error on auto execute of job 2095
ORA-06550: line 4, column 27:
PL/SQL: ORA-01031: insufficient privileges
ORA-06550: line 2, column 1:
PL/SQL: SQL Statement ignored
 
這個錯誤到蠻奇怪的啊,之前執行都好好的啊,之後把新加的程式碼去掉也可以正常執行,仔細想想,既然之前都可以正常執行,那麼執行job相關包的許可權都有的,而job具體執行的語句也就是一條簡單的insert語句,類似如下:
insert into B.table1
select * from B.table1@db_link t1
where not exists
(select 1 from B.table1 t2 where t1.col_1=t2.col_1 and ....);
新增加的語句也和上面類似,只是B使用者下的另外一張表,之後job就執行不了了,但是把這job裡的內容拿出來,直接執行是可以的,db_link也是A使用者建立的,應該沒什麼問題,然後試著:
grant execute dbms_job to A;grant create job to A;
還是不行.....糾結中.....
最後在B使用者下執行: grant insert,select on table2 TO A;
然後job就可以正常執行了,還真沒嫩明白,有待研究.....
記錄一下~

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

相關文章