文档首页/
数据库和应用迁移 UGO/
用户指南/
语法转换指南/
转换错误码/
Oracle To GaussDB 转换错误码/
U0100029: 目标数据库不支持 MaterializedViewRefreshClause
更新时间:2025-10-22 GMT+08:00
U0100029: 目标数据库不支持 MaterializedViewRefreshClause
描述
GaussDB 不支持 MaterializedView 自动刷新。
数据库类型与版本
- 源库类型与版本:UGO 支持的 Oracle 版本。
- 目标库类型与版本:UGO 支持的 GaussDB 版本。
语法示例
Oracle脚本:
CREATE MATERIALIZED VIEW mv_hourly_sales REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/24 AS SELECT product_id, SUM(quantity) total_quantity, SUM(amount) total_amount FROM sales GROUP BY product_id;
改造建议
1、首先物化视图依赖的表存储模式必须是Astore;
2、注释掉 MATERIALIZED VIEW LOG
3、UGO转换配置项-物化视图中的REFRESH-选择注释物化视图中的REFRESH子句
4、然后创建一个PROCEDURE定时刷新物化视图
5、最后创建定时任务,定时任务包含两种方式:
方式1(推荐):DBE_SCHEDULER.CREATE_JOB
方式2:dbe_task.id_submit
GaussDB改写后的脚本:
---物化视图注释掉自动刷新
CREATE MATERIALIZED VIEW mv_hourly_sales
/*REFRESH FAST
START WITH SYSDATE NEXT SYSDATE + 1/24*/
AS
SELECT product_id, SUM(quantity) total_quantity, SUM(amount) total_amount
FROM sales
GROUP BY product_id;
---创建一个PROCEDURE定时刷新物化视图
CREATE OR REPLACE PROCEDURE refresh_mv_hourly_sales
AS
BEGIN
REFRESH MATERIALIZED VIEW mv_hourly_sales;
RAISE NOTICE 'Materialized view mv_hourly_sales refreshed at %', now();
END;
/
--方法1:使用DBE_SCHEDULER.CREATE_JOB创建定时任务
BEGIN
PERFORM DBE_SCHEDULER.CREATE_JOB('MY_JOB',
job_type=>'PLSQL_BLOCK', job_action=>
'BEGIN refresh_mv_hourly_sales; END;'
, number_of_arguments=>0,
start_date=>sysdate,
repeat_interval=>
'FREQ=HOURLY; INTERVAL=1',
end_date=>NULL,
job_class=>'DEFAULT_JOB_CLASS',
enabled=>TRUE,
auto_drop=>TRUE,comments=>
NULL
);
END;
/
--方法2:使用dbe_task.id_submit创建定时任务
call dbe_task.id_submit(100,'call refresh_mv_hourly_sales(); ', sysdate, 'interval ''1 hour''');