专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

面试官:你知道在Oracle物化视图重建时有什么要注意的地方吗?

ins518 2024-11-08 12:47:01 技术文章 26 ℃ 0 评论

概述

由于源库上的表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方面的内容,感兴趣的朋友可以关注下~


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表