查询oracle物化视图,ORACLE物化视图

查询oracle物化视图,ORACLE物化视图MView 重要视图在源数据库端的相关视图 DBA BASE TABLE MVIEWS 此视图与系统视图 SYS SLOG 相对应 视图 DBA BASE TABLE MVIEWS 记录了使用 MViewLog 访问基表的相关刷新的信息 换句话说就是记录了使用了 MViewLog 并且做过快速刷新的 MView 的信息 必须同时满足有 MViewLog 以及做过快速刷新这两个条件 缺一不可 列名描述 OWNER 基表的 OW

MView重要视图

在源数据库端的相关视图

DBA_BASE_TABLE_MVIEWS

此视图与系统视图SYS.SLOG$相对应。

视图DBA_BASE_TABLE_MVIEWS记录了使用MView Log访问基表的相关刷新的信息。换句话说就是记录了使用了MView Log并且做过快速刷新的MView的信息,必须同时满足有MView Log以及做过快速刷新这两个条件,缺一不可。

列名描述

OWNER

基表的OWNER

MASTER

基表的名称

MVIEW_LAST_REFRESH_TIME

基于这个基表的MView最后的快速刷新的时间

MVIEW_ID

基于这个基表的MView在数据库中的ID,这个可以和DBA_REGISTERED_MVIEWS关联找出相应的MView的名称

备注:SYS.SLOG$的作用SYS.SLOG$记录了注册在源数据库端的能进行快速刷新的MView的信息。这个信息在进行快速刷新的时候会备用到,同时也会用来维护基表的MView Log信息。

DBA_REGISTERED_MVIEWS

此视图与系统视图SYS.REG_SNAP$相对应。

视图DBA_REGISTERED_MVIEWS记录了所有在主站点上面注册的MView的相关的信息,这里保存的东西只是起提供信息性的作用。当MView在创建的时候Oracle会自动的将MView的信息写入到此视图中,但是也不排除会有失败的情况,要是失败了的话需要手动的使用DBMS_MVIEW包中的REGISTER_MVIEW进行注册。

详细的列描述就不列了,具体的参看文档。

备注:SYS.REG_SNAP$的作用SYS.REG_SNAP$记录了注册在源数据库端的MView的信息,这个表只是为了提供信息而用。

DBA_MVIEW_LOGS

此视图与系统视图SYS.mlog$相对应。

此视图记录了源数据库中的所有的MView Log的相关信息。

详细的列描述就不列了,具体的参看文档。

在MView数据库端的相关视图

DBA_MVIEWS

此视图与系统视图SYS.SNAP$相对应。

此视图我们在之前已经接触了很多了,视图里面保存了数据库中所有的MView的信息。我们进行的大部分物化视图的查询工作都要基于这个视图来进行。

详细的列描述见文档。

DBA_MVIEW_REFRESH_TIMES

此视图与系统视图SYS.SNAP_REFTIME$相对应。

此视图记录了MView最后刷新的时间,这在我们检查MView是否正常的刷新过时很有用的。

详细的列描述见文档。

DBA_REFRESH和DBA_REFRESH_CHILDREN

这两个视图我们在之前也已经接触过了,主要是记录了刷新组相关的信息。

MView相关包

在进行MView的维护的时候使用的最多的就是DBMS_MVIEW和DBMS_REFRESH这两个包了,前一个用来进行MView的维护,另外一个进行MView刷新组的维护。

相关的Oracle文档

一些MView维护的相关问题

SNAPSHOT vs. Materialized View

SNAPSHOT == Materialized View (老版本的Oracle中管MView叫SNAPSHOT

115966585_1_20171112105535627.gif )

DBMS_SNAPSHOT == DBMS_MVIEW

CREATE SNAPSHOT == CREATE MATERIALIZED VIEW

清理无效的MView Log

1. 查询MV表信息

SELECT * FROM DBA_BASE_TABLE_MVIEWS;

ALL_BASE_TABLE_MVIEWS: All materialized views with log(s) in the database that the user can see

2. 查询已注册的快照信息

col owner for a15

col name for a30

col snapshot_site for a15

col refresh_method for a15

select owner, name, snapshot_site, refresh_method fromdba_registered_snapshots;

3. 对比上面两个结果找出很久没有刷新的MV ID,然后进行UNREGISTER_MVIEW操作

EXEC DBMS_MVIEW.UNREGISTER_MVIEW(mviewowner, mviewname, mviewsite);

mviewowner: MView的OWNER。

mviewname: MView的名字。

mviewsite: 这个可以从DBA_REGISTERED_MVIEWS中的MVIEW_SITE中看到。

4. 清理MVLOG记录

SQL> EXEC DBMS_MVIEW.PURGE_MVIEW_FROM_LOG(MVID);

查询MView Log的大小

set serveroutput on

declare v_output number;

begin

dbms_output.put_line(‘Owner                MV Table Name                            MV Log Size   ‘);

dbms_output.put_line(‘——————– —————————————- ————–‘);

for c_cursor in (select owner, object_name from all_objects whereobject_name like ‘MLOG$_%’) LOOP

execute immediate ‘select count(*) from ‘ || c_cursor.owner||’.’|| c_cursor.object_name into v_output;

dbms_output.put_line(

rpad(substr(c_cursor.owner,0,20),20,’ ‘)||’ ‘

||rpad(substr(c_cursor.object_name,7,40),40, ‘ ‘)

||’ ‘||v_output);

end loop;

end;

/

set serveroutput off

检查MV的刷新兼容性

— build table MV_CAPABILITIES_TABLE

SQL> @?/rdbms/admin/utlxmv.sql

— explain mv

TRUNCATE TABLE MV_CAPABILITIES_TABLE;

EXECUTE DBMS_MVIEW.EXPLAIN_MVIEW(‘mv_t3’);

— Or like this

TRUNCATE TABLE MV_CAPABILITIES_TABLE;

BEGIN

DBMS_MVIEW.EXPLAIN_MVIEW (‘SELECT * FROM o

WHERE EXISTS (SELECT * FROM c

WHERE o.customer_id = c.customer_id AND c.credit_limit > 500)’);

END;

/

— 查看结果

COL MVOWNER FOR A10

COL MVNAME FOR A20

COL MSGTXT FOR A65

SELECT MVOWNER,MVNAME,CAPABILITY_NAME,POSSIBLE,MSGTXT FROMMV_CAPABILITIES_TABLE;

查询MView刷新延时

set linesize 130

column interval format 

column “rgroup owner” format a20

column “refresh group” format a20

column “minutes behind” format 9999.99

column “master link” format a20

column “mview owner” format a15

column next_date format a20

SELECT

—    int.rowner “rgroup owner”,

—    int.rname “refresh group”,

mv.owner as “mview owner”,

mv.mview_name as “mview name”,

mv.master_link as “master link”,

round(1440*(sysdate – mv.last_refresh_date)) as “minutes behind”,

to_char(int.next_date, ‘yyyy-mm-dd hh24:mi:ss’) “next date”,

round(int.interval*1440) “interval”

FROM dba_mviews mv,

(

SELECT child.owner, child.name, child.rowner, child.rname,job.next_date, job.next_date – job.last_date as interval

FROM dba_refresh ref, dba_refresh_children child, dba_jobs job

WHERE ref.rname = child.rname AND ((upper(job.what) LIKE’%’||ref.rname||’%’)

OR (upper(job.what) LIKE ‘%’||ref.rname||’%’))

) int

WHERE mv.owner = int.owner(+) AND mv.mview_name = int.name(+)

ORDER BY (sysdate – mv.last_refresh_date) * 1440 DESC, mv.owner,mv.mview_name;

参考文档

Note:.1 Materialized View Refresh : Log Population and Purge

Note .1 Materialized View registration at Master Site

Note .1 Scripts to Report Information about Materialized View Logs at the Master Site.

8 Managing a Materialized View Replication Environment

来自Advanced Replication Management API Reference,很有用的MView管理实例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224741.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:15
下一篇 2026年3月17日 上午11:15


相关推荐

  • pycharm怎么打开database_数据库在生活中的实例

    pycharm怎么打开database_数据库在生活中的实例显示Database功能(已有自动忽略)窗口右侧打开Database输入数据库信息登录数据库可以进行任意数据库操作,该工具类似许多数据库管理软件

    2022年8月25日
    12
  • 415错误代码

    415错误代码检查错误1.前端是否为json传递2.后端是否导入了包<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.10.1</version></dependency>3.重新新后端的实体

    2022年5月29日
    134
  • IAP支付

    IAP支付一 IAP 支付流程 1 应用从服务端获取 ProductId2 应用根据 ProductId 从 AppStore 获取商品信息并展示 3 用户选中并点击后 应用向 AppStore 发送 payment 请求 AppStore 处理该请求并返回 transaction4 应用从 transaction 中获取 receipt 并发送给服务端 5 服务端记录 receipt 并发送 receipt 到 AppStore 校验结果是否合

    2026年3月20日
    2
  • 普罗米修斯监控系统_一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式…

    普罗米修斯监控系统_一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式…前言本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台。本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念也会精炼出提及下。系列主要分为以下几块Prometheus各个概念介绍和搭建,如何抓取数据(一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起)如何推送数据…

    2022年7月19日
    26
  • 进出口流程 & 报关单据

    进出口流程 & 报关单据出口流程一.委托人1.需找货运代理公司2.向代理公司询问价格一般为ALLIN价格(空运费+燃油费+战险费)总费用=ALLIN价格*(货物公斤数)ALLIN价格

    2022年7月3日
    34
  • 文末彩蛋 | 这个 Request URL 长得好不一样

    文末彩蛋 | 这个 Request URL 长得好不一样有朋友拿到一个网站请求的链接问这要怎么解密?很明显这不是加密的数据,这是一张图片base64后的结果,第一次写爬虫朋友遇到这样的请求,可能需要琢磨一下这是什么东西。如…

    2022年10月19日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号