广告
返回顶部
首页 > 资讯 > 数据库 >Oracle物化视图管理及重要视图怎么理解
  • 600
分享到

Oracle物化视图管理及重要视图怎么理解

2024-04-02 19:04:59 600人浏览 独家记忆
摘要

这篇文章主要讲解了“oracle物化视图管理及重要视图怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle物化视图管理及重要视图怎么理解”吧!

这篇文章主要讲解了“oracle物化视图管理及重要视图怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle物化视图管理及重要视图怎么理解”吧!

MView重要视图

Oracle文档中MView相关视图的链接Materialized View and Refresh Group Views。


在源数据库端的相关视图


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文档

  • DBMS_MVIES

  • DBMS_REFRESH


一些MView维护的相关问题


SNAPSHOT vs. Materialized View

SNAPSHOT == Materialized View (老版本的Oracle中管MView叫SNAPSHOT Oracle物化视图管理及重要视图怎么理解 )

  • 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 oe.orders@orc1.world o
  WHERE EXISTS (SELECT * FROM oe.customers@orc1.world 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 999999
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 hh34: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;

感谢各位的阅读,以上就是“Oracle物化视图管理及重要视图怎么理解”的内容了,经过本文的学习后,相信大家对Oracle物化视图管理及重要视图怎么理解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle物化视图管理及重要视图怎么理解

本文链接: https://www.lsjlt.com/news/68941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle物化视图管理及重要视图怎么理解
    这篇文章主要讲解了“Oracle物化视图管理及重要视图怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle物化视图管理及重要视图怎么理解”吧!...
    99+
    2022-10-19
  • Oracle物化视图怎么用
    这篇文章主要介绍了Oracle物化视图怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Oracle物化视图的用法与总结 物...
    99+
    2022-10-19
  • Oracle中怎么创建物化视图
    Oracle中怎么创建物化视图,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 oracle物化视图 一、oracle物化视图基本概念&nb...
    99+
    2022-10-18
  • 怎么理解mysql联合表及视图
    本篇内容介绍了“怎么理解mysql联合表及视图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1)验证环境 ...
    99+
    2022-10-18
  • Oracle12c 中如何理解完全刷新的物化视图工作原理
    Oracle12c 中如何理解完全刷新的物化视图工作原理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是物化视图?物化视图是用于复制数...
    99+
    2022-10-19
  • oracle中Job怎么定期执行存储刷新物化视图
    本篇内容主要讲解“oracle中Job怎么定期执行存储刷新物化视图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle中Job怎么定期执行存储刷新物化视图...
    99+
    2022-10-18
  • Python numpy视图与副本怎么理解
    本篇文章给大家分享的是有关Python numpy视图与副本怎么理解,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言:下面对 ndarray 内存结构主要分为两部分...
    99+
    2023-06-28
  • Entity Framework中怎么使用Code First模式管理视图
    今天小编给大家分享一下Entity Framework中怎么使用Code First模式管理视图的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章...
    99+
    2023-06-29
  • 详细讲解 MySQL的重要概念和用法,例如索引、事务、存储过程、触发器、视图、权限管理等,值得一看!
    作者:禅与计算机程序设计艺术 1.简介 2019年,微软推出了一款基于MySQL服务器的开源数据库管理系统——MySQL Server。而随着技术的日新月异,越来越多的人开始关注MySQL,希望用它来...
    99+
    2023-10-08
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • 数据可视化大屏应急管理综合指挥调度系统完整案例详解(PHP-API、Echarts、百度地图)
    文章目录 项目说明一、项目说明单位信息数据库字段:资源数据库字段项目需求 二、项目开发1.项目分析2.引入库3.项目开发(1)地图容器构建(2)筛选和返回按钮事件(3)企业筛选功能(4)百...
    99+
    2023-09-02
    信息可视化 echarts 前端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作