讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

Seko
Seko

AI短剧一键生成成片

Laper
Laper

剧本策划到成片协作

剧云
剧云

中文短剧剧本制作平台

怎样在Oracle 19c中监控SQL物化视图刷新的耗时与状态

轻涛小哥_5783

轻涛小哥_5783

发布时间:2026-11-14 11:30:20

|

517人浏览过

|

来源于php中文网

原创

真实耗时必须查V$MVREFRESH:刷新前记录DBMS_UTILITY.GET_TIME,刷新后取END_TIME−START_TIME换算秒级耗时;它仅在刷新中或刚结束时可见,需主动轮询,不可依赖滞后更新的DBA_MVIEWS.LAST_REFRESH_DATE。

怎样在oracle 19c中监控sql物化视图刷新的耗时与状态

不能只看 DBA_MVIEWS.LAST_REFRESH_DATE —— 它只存时间点,不存耗时,且更新滞后于实际提交;真实耗时必须从运行时动态视图捕获。

查 V$MVREFRESH 拿单次刷新的精确秒级耗时

这是唯一能拿到“本次刷新执行了多久”的视图,但它只在刷新进行中或刚结束时可见(通常保留几秒到几分钟,取决于系统负载)。关键不是等它“自动出现”,而是主动轮询+计算:

  • 刷新前先记下 DBMS_UTILITY.GET_TIME(毫秒级),或用 SYSDATE
  • 立刻执行 SELECT START_TIME, END_TIME FROM V$MVREFRESH WHERE MVIEW_NAME = 'YOUR_MV_NAME'
  • 若 END_TIME 非空,耗时 = (END_TIME - START_TIME) * 24 * 60 * 60(转成秒)
  • 若 END_TIME 为空,说明还在跑;此时别干等,转去看 V$SESSION_LONGOPS

常见错误:直接查 DBA_MVIEWS.LAST_REFRESH_DATE 算差值。它可能在刷新成功后延迟数秒甚至更久才更新,尤其在高并发或大事务环境下,结果完全不可信。

用 V$SESSION_LONGOPS 监控正在跑的刷新进度

当刷新卡住、变慢、或你怀疑它没动时,V$SESSION_LONGOPS 是第一响应工具。它反映的是 Oracle 内部对“长时间操作”的实时估算,包括 FAST 和 COMPLETE 刷新:

  • 执行 SELECT SID, SERIAL#, OPNAME, TARGET, ROUND(SOFAR/TOTALWORK*100, 2) "%_COMPLETE", SOFAR, TOTALWORK FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'Refresh%' AND TOTALWORK != 0 AND SOFAR
  • OPNAME 值为 Refresh MV 或 Refresh Fast MV 才是目标
  • %_COMPLETE 不是绝对准确,但能判断是否卡死(比如 5 分钟不动在 1%)
  • 注意:DBA_MVIEWS.LAST_REFRESH_DATE 在这里卡住时纹丝不动,别被它骗了

这个视图不依赖刷新类型,FAST 和 COMPLETE 都会上报;但 ON COMMIT 刷新因在事务内完成,通常太快,很少出现在这里。

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载

确认是否真走 FAST 刷新,而非静默降级

即使 DBMS_MVIEW.REFRESH 返回成功,也可能已悄悄退化为 COMPLETE —— 这种“静默降级”最坑人,因为耗时暴涨却无报错:

  • 刷新后立刻查 SELECT FAST_REFRESHABLE FROM DBA_MVIEWS WHERE MVIEW_NAME = 'YOUR_MV_NAME',值必须是 YES 才算真正支持 FAST
  • 查日志表消费情况:SELECT COUNT(*) FROM MLOG$_t WHERE SNAPTIME$$ = TO_DATE('4000-01-01', 'YYYY-MM-DD'),刷新前后对比。差值为 0 → 没走增量;差值非零但耗时高 → 增量逻辑本身慢(比如日志膨胀、基表函数导致无法索引)
  • 运行 EXEC DBMS_MVIEW.EXPLAIN_MVIEW('YOUR_MV_NAME'),查 MVIEW_EXPRESS 表里的 MSGTXT 字段,重点找 "REFRESH FAST IS NOT POSSIBLE" 或 "NO LOG ON BASE TABLE"

ON COMMIT 模式下 FORCE 不会 fallback,但 ON DEMAND 下的 FORCE 就会——这点最容易被忽略。

抓底层 SQL 的执行计划和并行行为

耗时高不一定在 MV 逻辑层,可能卡在生成的刷新 SQL 上。尤其当你传了 parallelism 参数时,得验证它是否真生效:

  • 确保 STATISTICS_LEVEL = TYPICAL(BASIC 下 V$ALL_SQL_PLAN_MONITOR 无数据)
  • 刷新触发后立即查 SELECT KEY, SQL_ID, SQL_EXEC_ID FROM V$ALL_SQL_MONITOR WHERE SQL_TEXT LIKE '%YOUR_MV_NAME%' AND STATUS = 'EXECUTING'
  • 用拿到的 KEY 查 SELECT PLAN_OPERATION, DOP, LAST_DEGREE FROM V$ALL_SQL_PLAN_MONITOR WHERE KEY = :key,看到 PX COORDINATOR 且 DOP > 1 才算并行启动
  • 注意:parallelism 对 FAST 刷新完全无效,只影响 COMPLETE;ON COMMIT 下传该参数会直接报 ORA-12054

真正难定位的,是那些“看起来在跑、进度在动、但就是慢”的刷新——往往卡在基表全表扫描、MVIEW$_ 日志表没索引、或 PGA 不足导致大量临时段写入,这些都得靠 V$ALL_SQL_PLAN_MONITOR 和 DBA_HIST_SQL_PLAN 往下挖。

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4983

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1011

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1309

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

7041

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

3703

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

7040

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

9841

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1330

2024.04.29

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

20

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn