我一直在尝试每晚同时安排刷新三个物化视图。我使用了以下代码
BEGIN
DBMS_SCHEDULER.CREATE_JOB
(
JOB_NAME => 'REFRESH_MVIEW',
JOB_TYPE => 'PLSQL_BLOCK',
JOB_ACTION => 'BEGIN DBMS_MVIEW.REFRESH("m_view1, m_view2, m_view3",''C''); END;',
NUMBER_OF_ARGUMENTS => 0,
START_DATE => SYSTIMESTAMP,
REPEAT_INTERVAL => 'FREQ=DAILY; BYHOUR=0',
END_DATE => NULL,
ENABLED => TRUE,
AUTO_DROP => FALSE,
COMMENTS => 'JOB TO REFRESH'
);
END;
但是在作业运行后我收到以下错误
ORA-12012:自动执行作业57179时出错 ORA-06550:ORA-06550行:第1行,第495栏: PLS-00114:标识符' m_view1,m_view2'太长 ,专栏:
我知道过程名称中有30个字符的约束。那么,这是否意味着我必须将工作分成3个不同的工作岗位?你能不能告诉我哪里出错了?
提前致谢!
答案 0 :(得分:2)
请你告诉我哪里出错了?
尝试编写这样的语句:
BEGIN DBMS_MVIEW.REFRESH(''m_view1,m_view2,m_view3'',''C'')
或者
BEGIN DBMS_MVIEW.REFRESH(''m_view1,m_view2,m_view3'',''CCC'')
使用字符串指定查看列表 - 因此使用单引号。我不知道视图列表中的空格是否相关。有疑问,我也删除了它们。
请注意,在第一种情况下,您有以后两个视图的默认刷新。如果您需要对所有视图进行完整刷新,则必须将 CCC 指定为刷新方法。
请参阅https://docs.oracle.com/cd/A97630_01/server.920/a96568/rarmviea.htm#94135