久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle物化視圖管理及重要視圖怎么理解

139次閱讀
沒有評論

共計 4332 個字符,預計需要花費 11 分鐘才能閱讀完成。

這篇文章主要講解了“Oracle 物化視圖管理及重要視圖怎么理解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“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$ 的作用

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  )

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 物化視圖管理及重要視圖怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計4332字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 龙州县| 阿克苏市| 津市市| 和平区| 长乐市| 澎湖县| 鄂托克前旗| 新龙县| 罗田县| 沙雅县| 金沙县| 福建省| 甘谷县| 西平县| 漳平市| 盐池县| 双牌县| 农安县| 公安县| 玉龙| 鹤岗市| 黔东| 福清市| 谷城县| 公安县| 扎赉特旗| 塔城市| 蛟河市| 师宗县| 祥云县| 卓资县| 宿州市| 海安县| 宜丰县| 蓬莱市| 东辽县| 武山县| 卢湾区| 公主岭市| 台中县| 雷山县|