oracle 物化檢視的自動重新整理方法
oracle 物化檢視的自動重新整理方法:
方法1,直接在建立的時候,指定start with ,如下代表每分鐘執行1次
create materialized view big_table_mv nologging
refresh fast on demand
with rowid
START WITH TO_DATE('18-03-2011 10:09:08', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1 / 60*24
as select * from big_table;
方法2:編寫批次重新整理某個使用者的所有物化檢視的procedure,然後結合job可以定時去執行,
create or replace procedure pro_refresh_maview is
begin
declare CURSOR c_number is
select user||'.'||mview_name mview_name from user_mviews;
my_re c_number%rowtype;
begin
open c_number;
loop
exit when c_number%notfound;
fetch c_number into my_re;
DBMS_MVIEW.REFRESH(my_re.mview_name,'C');
end loop;
close c_number;
end;
end pro_refresh_maview ;
重新整理某一個物化檢視的儲存過程mv_emp:
CREATE OR REPLACE PROCEDURE auto_refresh_mview_job_proc
AS
BEGIN
dbms_mview.REFRESH('mv_emp');
END;
/
建立前面儲存過程pro_refresh_maview的job(每五分鐘執行一次儲存過程)這壓根就自動重新整理了
declare
pro_refresh_maview_job number;
begin
dbms_job.submit( pro_refresh_maview_job,'pro_refresh_maview;',sysdate,'sysdate+1/24/60*5'); ##綠色部分是前面建立的儲存過程。紅色部分是自己編寫的名字
end;
2、查詢job的ID,前面建立的job,
select * from dba_jobs;
select * from all_jobs;
select * from user_jobs;
3、根據job的id手動執行前面該job ,
begin
dbms_job.run(44);
end;
引申內容。。。。
Oracle 11g 物化檢視語法如下:
create materialized view [view_name]
refresh [fast|complete|force]
[
on [commit|demand] |
start with (start_time) next (next_time)
]
as
{建立物化檢視用的查詢語句}
以上是Oracle建立物化檢視(Materialized View,以下簡稱MV)時的常用語法,各引數的含義如下:
1.refresh [fast|complete|force] 檢視重新整理的方式:
fast: 增量重新整理.假設前一次重新整理的時間為t1,那麼使用fast模式重新整理物化檢視時,只向檢視中新增t1到當前時間段內,主表變化過的資料.為了記錄這種變化,建立增量重新整理物化檢視還需要一個物化檢視日誌表。create materialized view log on (主表名)。(多張表時,此語句也生效,建立後,原來的表中會多出兩類檢視表:MLOG$_table_name和RUPD$_table_name)
complete:全部重新整理。相當於重新執行一次建立檢視的查詢語句。
force: 這是預設的資料重新整理方式。當可以使用fast模式時,資料重新整理將採用fast方式;否則使用complete方式。
2.MV資料重新整理的時間:
on demand:在使用者需要重新整理的時候重新整理,這裡就要求使用者自己動手去重新整理資料了(也可以使用job定時重新整理)
on commit:當主表中有資料提交的時候,立即重新整理MV中的資料;
start ……:從指定的時間開始,每隔一段時間(由next指定)就重新整理一次;
物化檢視的重新整理:
Oracle 的物化檢視的快速重新整理要求必須建立物化檢視日誌,透過物化檢視日誌可以實現增量重新整理功能。
3.
批次重新整理某個使用者的全部的物化檢視,使用遊標,這樣只能執行一個
begin
for rec in (select user||'.'||mview_name mview_name from user_mviews)
loop
DBMS_MVIEW.REFRESH(rec.mview_name,'C');
end loop;
end;
總結:oracle資料庫物化檢視定時重新整理就兩種方法,一種是建立的過程中指定start with引數,一種是procedure+jop,當然在程式裡面也可以去控制自動重新整理物化檢視。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2136213/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 物化檢視重新整理方法Oracle
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- Postgres使用trigger自動重新整理物化檢視
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 給物化檢視設定自動快速重新整理功能失敗
- 物化檢視的快速重新整理測試與物化檢視日誌
- 【ORACLE】物化檢視快速重新整理限制條件Oracle
- Oracle 物化檢視 快速重新整理 限制 說明Oracle
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- Oracle 物化檢視快速重新整理對效能的影響Oracle
- oracle物化檢視Oracle
- 物化檢視妙用__表同步使用物化檢視方法
- Oracle 物化檢視 詳細錯誤描述 檢視方法Oracle
- Oracle 物化檢視1 - 單表聚合及其快速重新整理Oracle
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- 物化檢視重新整理的問題及分析
- MV (Materialed View) 物化檢視的重新整理組View
- ORACLE中的物化檢視建立Oracle
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(三)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(二)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(一)
- 物化檢視日誌與增量重新整理
- StarRocks 物化檢視重新整理流程及原理
- Oracle普通檢視和物化檢視的區別Oracle
- Oracle物化檢視詳解Oracle
- ORACLE物化檢視測試Oracle
- Oracle 物化檢視案例分享Oracle
- Oracle物化檢視語法Oracle
- ORACLE物化檢視入門Oracle
- oracle物化檢視系列(二)Oracle
- oracle物化檢視系列(一)Oracle
- CUUG oracle物化檢視講解Oracle
- Oracle物化檢視3 - Prebuilt MVOracleUI
- Oracle 物化檢視 例項一Oracle
- Oracle物化檢視及SnapshotOracle
- 12c 物化檢視 - 對快速重新整理的理解