700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 查询oracle物化视图 ORACLE物化视图

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

时间:2023-06-19 14:17:29

相关推荐

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

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

)

DBMS_SNAPSHOT == DBMS_MVIEW

CREATE SNAPSHOT == CREATE MATERIALIZED VIEW

清理无效的MView Log

1. 查询MV表信息

SELECT*FROMDBA_BASE_TABLE_MVIEWS;

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

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

colownerfora15

colnamefora30

colsnapshot_sitefora15

colrefresh_methodfora15

selectowner,name,snapshot_site,refresh_methodfromdba_registered_snapshots;

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

EXECDBMS_MVIEW.UNREGISTER_MVIEW(mviewowner,mviewname,mviewsite);

mviewowner: MView的OWNER。

mviewname: MView的名字。

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

4. 清理MVLOG记录

SQL>EXECDBMS_MVIEW.PURGE_MVIEW_FROM_LOG(MVID);

查询MView Log的大小

setserveroutputon

declarev_outputnumber;

begin

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

dbms_output.put_line('-------------------- ---------------------------------------- --------------');

forc_cursorin(selectowner,object_namefromall_objectswhereobject_namelike'MLOG$_%')LOOP

executeimmediate'select count(*) from'||c_cursor.owner||'.'||c_cursor.object_nameintov_output;

dbms_output.put_line(

rpad(substr(c_cursor.owner,0,20),20,'')||''

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

||''||v_output);

endloop;

end;

/

setserveroutputoff

检查MV的刷新兼容性

-- build table MV_CAPABILITIES_TABLE

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

-- explain mv

TRUNCATETABLEMV_CAPABILITIES_TABLE;

EXECUTEDBMS_MVIEW.EXPLAIN_MVIEW('mv_t3');

-- Or like this

TRUNCATETABLEMV_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;

/

-- 查看结果

COLMVOWNERFORA10

COLMVNAMEFORA20

COLMSGTXTFORA65

SELECTMVOWNER,MVNAME,CAPABILITY_NAME,POSSIBLE,MSGTXTFROMMV_CAPABILITIES_TABLE;

查询MView刷新延时

setlinesize130

columnintervalformat999999

column"rgroup owner"formata20

column"refresh group"formata20

column"minutes behind"format9999.99

column"master link"formata20

column"mview owner"formata15

columnnext_dateformata20

SELECT

-- int.rowner "rgroup owner",

-- int.rname "refresh group",

mv.owneras"mview owner",

mv.mview_nameas"mview name",

mv.master_linkas"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"

FROMdba_mviewsmv,

(

SELECTchild.owner,child.name,child.rowner,child.rname,job.next_date,job.next_date-job.last_dateasinterval

FROMdba_refreshref,dba_refresh_childrenchild,dba_jobsjob

WHEREref.rname=child.rnameAND((upper(job.what)LIKE'%'||ref.rname||'%')

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

)int

WHEREmv.owner=int.owner(+)ANDmv.mview_name=int.name(+)

ORDERBY(sysdate-mv.last_refresh_date)*1440DESC,mv.owner,mv.mview_name;

参考文档

Note:236233.1Materialized View Refresh : Log Population and Purge

Note 258634.1Materialized View registration at Master Site

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

8 Managing a Materialized View Replication Environment

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。