0

0

如何查询物化视图刷新状态_DBA_MVIEWS查看上次刷新时间与失败报错

P粉602998670

P粉602998670

发布时间:2026-03-17 08:53:03

|

790人浏览过

|

来源于php中文网

原创

靠不住。LAST_REFRESH_DATE仅记录最后一次成功刷新完成时间,失败、中断或取消均不更新;STALENESS为STALE/UNUSABLE时即使时间新也无有效数据;需结合DBA_SCHEDULER_JOB_RUN_DETAILS查失败日志,并以STALENESS='FRESH'为准判断是否生效。

DBA_MVIEWS 里刷新时间字段到底靠不靠谱?

靠不住。字段 last_refresh_date 只记录「最后一次成功刷新的完成时间」,如果刷新失败、中断或被取消,这个值不会更新,也不会存失败信息——它只管“成功落库”的那一刻。

常见错误现象:LAST_REFRESH_DATE 显示是昨天,但业务查不到新数据,STALENESSSTALEUNUSABLE,说明物化视图没真正刷进去。

  • LAST_REFRESH_DATE 为空?说明从未成功刷新过(哪怕执行过 DBMS_MVIEW.REFRESH
  • STALENESSNEEDS_COMPILE:依赖对象改了,但没重编译 MV,此时即使时间看起来新,也可能查不到数据
  • 快照太老时,Oracle 可能跳过刷新直接报错,但 LAST_REFRESH_DATE 不变

刷新失败日志藏在哪?别只盯 DBA_MVIEWS

Oracle 不把失败详情写进 DBA_MVIEWS,得去查刷新任务本身的执行痕迹。最直接的是看 DBA_JOBSDBA_SCHEDULER_JOB_LOG(取决于你用的是旧式 job 还是 scheduler),再结合 DBA_SCHEDULER_JOB_RUN_DETAILS 看错误堆栈。

  • 如果用 DBMS_MVIEW.REFRESH 手动刷,且没捕获异常,错误就直接抛给调用方,不会落地日志
  • 自动刷新(比如通过 DBMS_SCHEDULER)失败后,LOG_DATESTATUS = 'FAILED' 的记录才真正反映问题
  • 关键字段要查:ERROR#(Oracle 错误号)、ADDITIONAL_INFO(含 ORA-xxxx 和触发语句)

示例查最近 10 条失败记录:

SELECT LOG_DATE, JOB_NAME, ERROR#, ADDITIONAL_INFO
FROM DBA_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'FAILED'
  AND JOB_NAME LIKE '%MV_%'
ORDER BY LOG_DATE DESC
FETCH FIRST 10 ROWS ONLY;

DBMS_MVIEW.EXPLAIN_MVIEW 能提前暴露刷新隐患

很多刷新失败不是运行时才爆,而是建模阶段就埋了雷:比如基表没主键、远程数据库链接不稳定、物化视图日志缺失。用 EXPLAIN_MVIEW 把这些「静态缺陷」打出来,比等失败后再翻日志高效得多。

NameGPT名称生成器
NameGPT名称生成器

免费AI公司名称生成器,AI在线生成企业名称,注册公司名称起名大全。

下载
  • 输出结果里 MSGTXT 字段含具体限制,如 "materialized view log does not exist on table"
  • CAPABILITY_NAME = 'REFRESH_FAST_PCT' 但实际不支持?说明分区变更跟踪没开,PCT 刷新会退化成完全刷新甚至失败
  • 对大型 MV,先跑 EXPLAIN_MVIEW 再提交刷新任务,能避开 70% 以上的「ORA-12008 + ORA-00600」组合拳

为什么 LAST_REFRESH_DATEV$MVREFRESH 时间对不上?

因为 V$MVREFRESH 记的是「当前正在执行的刷新会话的开始时间」,而 DBA_MVIEWS.LAST_REFRESH_DATE 是「上一次提交事务的 SCN 对应的时间戳」——两者不在一个生命周期里。更麻烦的是,V$MVREFRESH 是内存视图,实例重启就清空,没法追溯历史。

  • 想确认某次刷新是否真完成了?不能只比对两个时间,得查 DBA_MVIEWS.STALENESS + STALENESS 是否为 FRESH
  • 并行刷新时,V$MVREFRESH 可能显示多个条目,但 DBA_MVIEWS 只记最终 commit 时间
  • 跨库刷新(DB Link)失败时,LAST_REFRESH_DATE 不变,V$MVREFRESH 可能早没了,唯一可靠线索只剩调度日志里的 ADDITIONAL_INFO

真正要盯的不是「什么时候刷的」,而是「刷完有没有生效」——STALENESS = 'FRESH'STALENESS 不是 UNUSABLE,才是硬指标。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

513

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

385

2023.10.25

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

448

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

606

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

448

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

606

2023.08.10

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

271

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

221

2023.09.15

chatgpt使用指南
chatgpt使用指南

本专题整合了chatgpt使用教程、新手使用说明等等相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号