Ao verificar os logs de execução do job, encontro o log a seguir:
ORA-12004: REFRESH FAST não pode ser utilizado para view materializada “DESV”.”VM_LOG_EMPRESTIMO”
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 3012
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 2424
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 88
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 253
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 2405
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 2968
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 3255
ORA-06512: em “SYS.DBMS_SNAPSHOT_KKXRCA”, line 3287
ORA-06512: em “SYS.DBMS_SNAPSHOT”, line 16
ORA-06512: em “DESV.REFRESH_VM_LOG_EMPRESTIMO”, line 4
A seguir, estão todos os códigos:
-- criação da view materializada com a opção refresh force on demand (depois é que altero para fast)
create materialized view vm_log_emprestimo
refresh force on demand
as select u.nomeusuario, l.nomelivro, a.nomeautor ,e.dataemprestimo, e.datadevolucao
from usuario u join emprestimo e
on (u.codusuario = e.codusuario) join livro l
on (e.codlivro = l.codlivro) join autor a
on(l.codautor = a.codautor);
CREATE MATERIALIZED VIEW log ON usuario WITH ROWID;
CREATE MATERIALIZED VIEW log ON emprestimo WITH ROWID;
CREATE MATERIALIZED VIEW log ON livro WITH ROWID;
CREATE MATERIALIZED VIEW log ON autor WITH ROWID;
ALTER MATERIALIZED VIEW vm_log_emprestimo REFRESH FAST ON DEMAND;
CREATE OR REPLACE PROCEDURE refresh_vm_log_emprestimo
AS
BEGIN
DBMS_MVIEW.REFRESH('vm_log_emprestimo');
END;
/
BEGIN
dbms_scheduler.create_job (
job_name => 'mview_vm_log_emprestimo',
job_type => 'STORED_PROCEDURE',
job_action => 'refresh_vm_log_emprestimo',
start_date => SYSTIMESTAMP,
end_date => NULL,
repeat_interval => 'FREQ=DAILY; byhour=18,20,22,00',
enabled => TRUE
);
END;
/