概述
由于源库上的表rename切换时重建了物化视图日志,而物化视图完全刷新耗时过久,这里采取删除后重建方式。那么,只是按网上一样drop后重建就可以了吗?那你就很有可能踏坑了...
1、查看物化视图定义 select dbms_metadata.get_ddl('MATERIALIZED_VIEW','<TAB_NAME>','<Schema_name>') from dual; 2、查看物化视图上的索引 --查看物化视图上的索引 SELECT * FROM DBA_INDEXES WHERE TABLE_NAME='物化视图名字'; --查看索引定义 select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER') from dual; 3、重建物化表的日志表(在源库执行) --删除物化视图日志 DROP MATERIALIZED VIEW LOG ON 表名; --为将要创建物化视图的表添加带主键的日志表 CREATE MATERIALIZED VIEW LOG ON 表名 WITH PRIMARY KEY; 4、删除物化视图 DROP MATERIALIZED VIEW 表名; 5、创建物化视图和索引 5.1、创建物化视图 这里就用到前面事先查找的定义了 5.2、创建索引(主键索引会自动创建,不需要再创建) 这一步是很有可能被漏的,要谨慎! CREATE INDEX .... 6、验证是否创建成功 SELECT * FROM 物化视图表名; 7、查询 这里查看物化视图刷新状态信息和物化视图日志 SELECT MVIEW_NAME, LAST_REFRESH_DATE, STALENESS FROM USER_MVIEWS; SELECT NAME, LAST_REFRESH FROM USER_MVIEW_REFRESH_TIMES; SELECT * FROM MLOG$_xx; 觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~