物化檢視job無法執行

LDean發表於2012-02-17
之前把32位10.2.0.1升級到64位10.2.0.4,折騰了好久,過後一切正常,今天查了下job,發現重新整理物化檢視的job沒有執行,next_date 已經是4000-1-1 broken也是Y了
手動執行
SQL> exec dbms_job.run(61);
BEGIN dbms_job.run(61); END;

*
第 1 行出現錯誤:
ORA-12011: 無法執行 1 作業
ORA-06512: 在 "SYS.DBMS_IJOB", line 406
ORA-06512: 在 "SYS.DBMS_JOB", line 275
ORA-06512: 在 line 1

單獨執行對應的procedure沒問題,檢視alert,發現報錯
Fri Feb 17 14:27:29 2012
Errors in file d:\oracle\product\10.2.0\admin\akbhdb\udump\akbhdb_ora_348.trc:
ORA-12012: 自動執行作業 61 出錯
ORA-01031: 許可權不足
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2251
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2457
ORA-06512: 在 "SYS.DBMS_IREFRESH", line 685
ORA-06512: 在 "SYS.DBMS_REFRESH", line 195
ORA-06512: 在 line 1
沒升級之前都沒有問題的,咋會這樣
直接從許可權考慮,開始賦予很多許可權,都是不行,後來想到是物化檢視,查詢了對應物化檢視有的許可權
SQL> select distinct privilege from dba_sys_privs where privilege like '%MATERIALIZED%';

PRIVILEGE
----------------------------------------
DROP ANY MATERIALIZED VIEW
CREATE MATERIALIZED VIEW
ALTER ANY MATERIALIZED VIEW
CREATE ANY MATERIALIZED VIEW

直接把這4個都加上 grant 許可權 to user;
再次執行job
SQL> exec dbms_job.run(61);

PL/SQL 過程已成功完成。
不甘心,開始挨個revoke
revoke DROP ANY MATERIALIZED VIEW from user;
並重複測試執行job,發現原來是ALTER ANY MATERIALIZED VIEW這個許可權,這次總算安心了

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

相關文章