1 oracle materialized-view oracle-apex
我找不到有关为 oracle 的物化视图刷新设置特定时间的正确文档。我阅读了文档和那里的一些示例,但是没有关于使用 NEXT 子句的明确文档。例如,我将如何在每天上午 8 点和晚上 8 点设置刷新?我将如何实现每天刷新 3 次?
这是我在我的案例中使用的。我知道这将在明天早上 7 点开始刷新,接下来每 12 小时刷新一次?
alter materialized view MY_VIEW
refresh fast
start with (sysdate+1) + 7/24
next trunc(sysdate) + ((trunc(to_char(sysdate,'HH24')/12)*12)+12)/24
Run Code Online (Sandbox Code Playgroud)
我还想知道是否有办法知道如何在设置时间后验证物化视图是否已刷新。
更新:我试图每小时刷新我的 MV,但没有奏效。我想知道为什么会这样。这是我使用的:
CREATE MATERIALIZED VIEW "MYVIEW"
ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "APEX_xxxxxxxxxxxxxxxxxx"
BUILD IMMEDIATE
USING INDEX
REFRESH FAST ON DEMAND START WITH sysdate+0 NEXT sysdate+1/24
USING DEFAULT LOCAL ROLLBACK SEGMENT
USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
AS select *
from <mydblinktable>
Run Code Online (Sandbox Code Playgroud)
我会DBMS_SCHEDULER
改用,每次刷新都有一个工作。这样就更容易管理和查看以前的执行。
CREATE OR REPLACE PROCEDURE REFRESH_MY_VIEW
AS
BEGIN
DBMS_MVIEW.REFRESH('MY_VIEW');
END;
/
Run Code Online (Sandbox Code Playgroud)
每天早上8点刷新:
BEGIN
DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'REFRESH_MY_VIEW',
job_type => 'PLSQL_BLOCK',
job_action => 'REFRESH_MY_VIEW',
number_of_arguments => 0,
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=daily; byhour=8; byminute=0; bysecond=0;',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'Refreshes MY_VIEW at 8am'
);
END;
/
Run Code Online (Sandbox Code Playgroud)
每天晚上8点刷新:
BEGIN
DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'REFRESH_MY_VIEW',
job_type => 'PLSQL_BLOCK',
job_action => 'REFRESH_MY_VIEW',
number_of_arguments => 0,
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=daily; byhour=20; byminute=0; bysecond=0;',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'Refreshes MY_VIEW at 8pm'
);
END;
/
Run Code Online (Sandbox Code Playgroud)
该*_SCHEDULER_JOB_LOG
和*_SCHEDULER_JOB_RUN_DETAILS
数据字典视图提供您需要跟踪什么执行时,如果发生任何错误的所有信息。文档链接在这里。
正如评论中所指出的,您可以添加多个by hour
子句,以逗号分隔,如下所示:repeat_interval => 'freq=daily; byhour=8,20; byminute=0; bysecond=0;'
归档时间: |
|
查看次数: |
9452 次 |
最近记录: |