Refresh MVWs daily
This commit is contained in:
parent
a39014458d
commit
80fda9cf7c
32
database/jobs/core_refresh_mviews.sql
Normal file
32
database/jobs/core_refresh_mviews.sql
Normal file
@ -0,0 +1,32 @@
|
||||
DECLARE
|
||||
in_job_name CONSTANT VARCHAR2(30) := 'CORE_REFRESH_MVIEWS';
|
||||
in_run_immediatelly CONSTANT BOOLEAN := FALSE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
DBMS_SCHEDULER.DROP_JOB(in_job_name, TRUE);
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
NULL;
|
||||
END;
|
||||
--
|
||||
DBMS_SCHEDULER.CREATE_JOB (
|
||||
job_name => in_job_name,
|
||||
job_type => 'STORED_PROCEDURE',
|
||||
job_action => 'app.refresh_mviews',
|
||||
start_date => SYSDATE,
|
||||
repeat_interval => 'FREQ=DAILY; BYHOUR=0; BYMINUTE=2', -- 00:02
|
||||
enabled => FALSE,
|
||||
comments => 'Refresh all existing materialized views'
|
||||
);
|
||||
--
|
||||
DBMS_SCHEDULER.SET_ATTRIBUTE(in_job_name, 'JOB_PRIORITY', 3); -- normal priority
|
||||
DBMS_SCHEDULER.ENABLE(in_job_name);
|
||||
COMMIT;
|
||||
--
|
||||
IF in_run_immediatelly THEN
|
||||
DBMS_SCHEDULER.RUN_JOB(in_job_name);
|
||||
COMMIT;
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
@ -1328,6 +1328,15 @@ CREATE OR REPLACE PACKAGE app AS
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Refresh all materialized views
|
||||
--
|
||||
PROCEDURE refresh_mviews (
|
||||
in_name_like VARCHAR2 := NULL
|
||||
);
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Returns procedure name which called this function with possible offset
|
||||
--
|
||||
|
||||
@ -3182,6 +3182,30 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
||||
|
||||
|
||||
|
||||
PROCEDURE refresh_mviews (
|
||||
in_name_like VARCHAR2 := NULL
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
app.log_module(in_name_like);
|
||||
--
|
||||
FOR c IN (
|
||||
SELECT m.mview_name
|
||||
FROM user_mviews m
|
||||
WHERE (m.mview_name LIKE in_name_like OR in_name_like IS NULL)
|
||||
ORDER BY 1
|
||||
) LOOP
|
||||
DBMS_MVIEW.REFRESH(c.mview_name, 'C', parallelism => 1);
|
||||
END LOOP;
|
||||
--
|
||||
app.log_success();
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
app.raise_error();
|
||||
END;
|
||||
|
||||
|
||||
|
||||
FUNCTION get_caller_name (
|
||||
in_offset PLS_INTEGER := NULL
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user