【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;
相關文章
- 檢視 Laravel 查詢資料語句Laravel
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- Oracle相關資料字典檢視Oracle
- Oracle常用的系統查詢語句整理Oracle
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- SQL查詢語句 (Oracle)SQLOracle
- oracle資料庫常用語句Oracle資料庫
- 資料庫查詢語句資料庫
- 【VIEW】Oracle如何查詢固定檢視的定義或底層sql語句ViewOracleSQL
- oracle檢視物件DDL語句Oracle物件
- oracle資料庫檢視鎖表的sql語句整理Oracle資料庫SQL
- mysql dba常用的查詢語句MySql
- postgresql dba常用sql查詢語句SQL
- ORACLE結構化查詢語句Oracle
- 資料庫的物化檢視資料庫
- 找到Oracle資料庫中效能最差的查詢語句BSOracle資料庫
- oracle資料庫sql查詢檢視第二次查詢很慢Oracle資料庫SQL
- Oracle普通檢視和物化檢視的區別Oracle
- MongoRepository查詢資料常用語法Go
- oracle查詢語句查詢增加一列內容Oracle
- ORACLE常用語句:Oracle
- PostgreSQL 原始碼解讀(44)- 查詢語句#29(等價類相關資料結構)SQL原始碼資料結構
- 連線資料後,當執行查詢語句報錯:ORA-01219: 資料庫未開啟: 僅允許在固定表/檢視中查詢資料庫
- MySQL關於根據日期查詢資料的sql語句MySql
- Laravel ORM SQL 語句查詢、檢視,附贈 IDE ORM 語法提示LaravelORMSQLIDE
- 關於使用plsql操作oracle的一點小技巧和幾個常用的查詢語句SQLOracle
- 資料查詢語句:DQL(Data Query Language)
- 【PDB】Oracle跨PDB檢視查詢Oracle
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- 19 Oracle Data Guard 相關檢視Oracle
- 關於使用plsql操作oracle的一點小技巧和幾個常用的查詢語句BUSQLOracle
- oracle常用查詢Oracle
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- 物化檢視
- DQL(Date Query Language)資料庫查詢語句資料庫
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL