【ORACLE】常用物化檢視相關後設資料查詢語句
對物化檢視的狀態等資訊進行查詢,監控和管理時,需要對系統檢視進行查詢,以下列出了常用的物化檢視狀態、依賴關聯,批量維護時能用到的查詢語句,根據具體情況進行適當修改。
語句中使用到的系統表欄位說明請檢視物化檢視相關後設資料檢視欄位說明
基本資訊查詢
-- 物化檢視基本資訊
SELECT OWNER , --所有者賬戶
MVIEW_NAME , --名稱
LAST_REFRESH_DATE, --上次更新時間
REFRESH_METHOD , --更新方式
INVALID , --是否失效
QUERY --查詢語句
FROM USER_MVIEW_ANALYSIS
ORDER BY LAST_REFRESH_DATE DESC;
物化檢視輸出列
SELECT a.OWNER , --所有者賬戶
a.MVIEW_NAME , --名稱
b.COLUMN_NAME , --列名稱
b.COMMENTS --列註釋
FROM USER_MVIEW_ANALYSIS a
INNER JOIN USER_COL_COMMENTS b
ON a.MVIEW_NAME = b.TABLE_NAME;
物化檢視引用了哪些基表
-- 物化檢視關聯表
SELECT DISTINCT
A.OWNER, --所有者賬戶
A.MVIEW_NAME ,--物化檢視名稱
B.COMMENTS ,--檢視註釋
A.DETAILOBJ_OWNER,--基表所有者賬號
A.DETAILOBJ_NAME --基表名稱
FROM USER_MVIEW_DETAIL_RELATIONS A
INNER JOIN USER_MVIEW_COMMENTS B ON A.MVIEW_NAME = B.MVIEW_NAME
WHERE DETAILOBJ_NAME NOT LIKE 'BIN%';
物化檢視-基表-儲存過程引用關係
-- 物化檢視或普通檢視引用了什麼普通表,檢視被哪些儲存過程引用
WITH CTE AS (
SELECT DISTINCT
A.OWNER, -- 所有者賬戶
A.MVIEW_NAME , -- 物化檢視名稱
A.DETAILOBJ_OWNER , -- 被引用表賬號
A.DETAILOBJ_NAME -- 被引用表名稱
FROM USER_MVIEW_DETAIL_RELATIONS A
WHERE A.DETAILOBJ_NAME NOT LIKE 'BIN%'
UNION ALL
SELECT '' AS OWNER,
NAME AS MVIEW_NAME,
REFERENCED_OWNER AS DETAILOBJ_OWNER,
REFERENCED_NAME AS DETAILOBJ_NAME
FROM USER_DEPENDENCIES
WHERE TYPE ='VIEW'
)
SELECT A.OWNER ,-- 檢視所有者賬戶
A.MVIEW_NAME AS MV ,-- 檢視名稱
A.DETAILOBJ_OWNER ,-- 基表所有者賬戶
A.DETAILOBJ_NAME ,-- 基表/檢視
NVL(B.NAME,'-') AS PROC_NAME -- 儲存過程名稱
FROM CTE A
LEFT JOIN (SELECT DISTINCT NAME,REFERENCED_NAME
FROM USER_DEPENDENCIES B
WHERE B.TYPE = 'PROCEDURE'
) B ON A.MVIEW_NAME = B.REFERENCED_NAME
ORDER BY A.MVIEW_NAME,A.DETAILOBJ_NAME,B.NAME
;
批量刪除物化檢視日誌
將結果複製出來執行。
-- 批量刪除物化檢視日誌
SELECT MASTER,'DROP MATERIALIZED VIEW LOG ON ' || MASTER || ' ;' AS DSQL
FROM USER_MVIEW_LOGS;
刪除沒有被引用的基表的物化檢視日誌
將結果複製出來執行。
-- 刪除沒有被物化檢視引用的基表的物化檢視日誌
SELECT MASTER,'DROP MATERIALIZED VIEW LOG ON ' || MASTER || ';' AS A
FROM ALL_MVIEW_LOGS
WHERE MASTER NOT IN (
SELECT DETAILOBJ_NAME
FROM USER_MVIEW_DETAIL_RELATIONS
);
批量修改物化檢視重新整理方式
將結果複製出來執行。
--修改物化檢視為手動增量重新整理
SELECT 'ALTER MATERIALIZED VIEW ' || MVIEW_NAME || ' REFRESH FAST ON DEMAND;' AS S
FROM USER_MVIEWS WHERE MVIEW_NAME LIKE 'MV_%';
--手動執行物化檢視增量重新整理
SELECT 'DBMS_MVIEW.REFRESH(''' || MVIEW_NAME || ''',''F'');' AS S
FROM USER_MVIEWS WHERE MVIEW_NAME LIKE 'MV_%';
--修改物化檢視為自動增量重新整理
SELECT 'ALTER MATERIALIZED VIEW ' || MVIEW_NAME || ' REFRESH FAST ON COMMIT;' AS S
FROM USER_MVIEWS WHERE MVIEW_NAME LIKE 'MV_%';
--修改引用了某個基表的所有物化檢視為手動增量重新整理
SELECT 'ALTER MATERIALIZED VIEW ' || MVIEW_NAME || ' REFRESH FAST ON DEMAND;' AS S
FROM USER_MVIEWS
WHERE MVIEW_NAME IN (
SELECT DISTINCT NAME
FROM USER_DEPENDENCIES
WHERE TYPE = 'MATERIALIZED VIEW'
AND REFERENCED_NAME LIKE '%table_name%' -- 基表名稱
);
物化檢視重新整理資訊
--物化檢視重新整理資訊
SELECT MVIEW_NAME,--物化檢視名稱
REFRESH_MODE,--重新整理方式
REFRESH_METHOD,--重新整理型別
FAST_REFRESHABLE,--是否可重新整理
LAST_REFRESH_TYPE,--最近一次重新整理型別
LAST_REFRESH_DATE,--最近一次重新整理時間
STALENESS --資料是否過時
FROM USER_MVIEWS
--WHERE MVIEW_NAME = 'MV1'
ORDER BY LAST_REFRESH_DATE DESC;
物化檢視最近一次重新整理資訊
--查詢物化檢視最近一次重新整理資訊
SELECT MVIEW_NAME, --物化檢視名稱
LAST_REFRESH_DATE "START_TIME", --重新整理開始時間
CASE WHEN FULLREFRESHTIM <> 0
THEN LAST_REFRESH_DATE + FULLREFRESHTIM/60/60/24
WHEN INCREFRESHTIM <> 0
THEN LAST_REFRESH_DATE + INCREFRESHTIM/60/60/24
ELSE LAST_REFRESH_DATE
END "END_TIME", --重新整理結束時間
FULLREFRESHTIM, --全量重新整理耗時
INCREFRESHTIM , --增量重新整理耗時
REFRESH_METHOD, --最近一次重新整理方式
SUMMARY , --是否含有聚合查詢
INC_REFRESHABLE,--是否支援增量重新整理
INVALID , --是否失效
REWRITE_ENABLED --是否支援查詢重寫
FROM ALL_MVIEW_ANALYSIS
WHERE OWNER='OWNER' --物化檢視所有者賬戶
ORDER BY LAST_REFRESH_DATE DESC;
相關文章
- 【ORACLE】物化檢視相關後設資料檢視欄位說明Oracle
- 檢視 Laravel 查詢資料語句Laravel
- (轉)Oracle常用資料字典查詢語句Oracle
- Oracle常用的查詢語句Oracle
- oracle 常用查詢檢視Oracle
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- DB2資料庫物化檢視:MQT物化查詢表的使用DB2資料庫MQQT
- Oracle日常效能檢視常用語句Oracle
- Oracle物化檢視語法Oracle
- Oracle相關資料字典檢視Oracle
- 【MV】物化檢視查詢重寫
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- 物化檢視相關工具包
- 查詢基表的相關檢視
- Oracle常用的系統查詢語句整理Oracle
- Oracle - 表空間相關常用操作語句Oracle
- 有關Oracle分頁查詢語句Oracle
- 資料庫查詢語句資料庫
- Oracle11gr2物化檢視日誌新增PURGE語句Oracle
- Oracle - 約束、索引等相關常用操作語句Oracle索引
- SQL中查詢語句內的相關應用SQL
- oracle資料庫常用語句Oracle資料庫
- 物化檢視的CONSIDER FRESH語句(三)IDE
- 物化檢視的CONSIDER FRESH語句(二)IDE
- 物化檢視的CONSIDER FRESH語句(一)IDE
- SQL查詢語句 (Oracle)SQLOracle
- oracle查詢語句大全Oracle
- oracle物化檢視Oracle
- oracle檢視執行最慢與查詢次數最多的sql語句OracleSQL
- postgresql dba常用sql查詢語句SQL
- mysql dba常用的查詢語句MySql
- 常用Sqlserver中的查詢語句SQLServer
- Oracle最佳化技術---物化檢視查詢重寫query rewriteOracle
- Oracle11gr2物化檢視日誌新增COMMIT SCN語句OracleMIT
- 資料庫維護常用操作3--DDL語句檢視資料庫
- 使用物化檢視查詢重寫 優化對於 UNION ALL檢視的CONNECT BY查詢優化
- 【VIEW】Oracle如何查詢固定檢視的定義或底層sql語句ViewOracleSQL