我正在尝试创建每 5 分钟自动更新一次的物化视图,我需要根据 Mview 日志表进行更新。
我在 TABLE1 TABLE1.SQL 脚本上创建了物化视图日志
CREATE MATERIALIZED VIEW LOG ON TABLE1; -- MLOG$_TABLE1
然后我创建了物化视图
CREATE MATERIALIZED VIEW JIBO_MVIEW
REFRESH START WITH SYSDATE NEXT SYSDATE +5/24/60
ENABLE QUERY REWRITE AS
SELECT O.ID
,O.DATETIME_CREATED
,O.ORIGINATOR
,O.DETAILS
,O.PAYMENT_REF
FROM TABLE1 O
WHERE O.ORIGINATOR LIKE '53%';
改变一些值后在 TABLE1 中,插入新记录 MLOG$_TABLE1 日志表
但更改的值不会在实体化视图 (JIBO_MVIEW) 中更新。(即使在一天之后:))
当我在警报日志中检查时,自动生成的 DBMS_JOB 存在问题,每次执行都会失败。
- ORA-12012: error on auto execute of job 4263
- ORA-00942: table or view does not exist
- ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2809
- ORA-06512: at "SYS.DBMS_SNAPSHOT", line 3025
- ORA-06512: at "SYS.DBMS_IREFRESH", line 689
- ORA-06512: at "SYS.DBMS_REFRESH", line 195 -
- ORA-06512: at line 1
但如果我手动执行作业,它就可以了。这是代码示例
BEGIN DBMS_REFRESH.REFRESH('"JIBO"."JIBO_MVIEW"');
COMMIT;
END;
然后我向用户添加了新的授权
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE MATERIALIZED VIEW TO JIBO;
GRANT CREATE ANY TABLE TO JIBO WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO JIBO;
GRANT SELECT ON SCHEMA1.MLOG$_TABLE1 TO JIBO WITH GRANT OPTION;
GRANT ALL ON SCHEMA1.TABLE1 TO JIBO WITH GRANT OPTION;
现在我在作业自动执行时收到此错误
- ORA-12012: error on auto execute of job 4287
- ORA-01031: insufficient privileges
- ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2809
- ORA-06512: at "SYS.DBMS_SNAPSHOT", line 3025
- ORA-06512: at "SYS.DBMS_IREFRESH", line 689
- ORA-06512: at "SYS.DBMS_REFRESH", line 195
- ORA-06512: at line 1
请指导我解决这个问题。这个问题是由于错误地创建了物化视图,还是由于 oracle 中的某些参数应该打开?