用prebuild mv 方法遷移資料

space6212發表於2019-07-20

/*
用prebuild mv 方法遷移資料

原理:用perbuild方法建立的物化檢視,在drop物化檢視時,不會把其對應的基表刪除。
好處:主要是利用物化檢視增量重新整理的方法減小down機時間。

*/


--步驟
--1 在目的資料庫端建立DB LINK
create database link test_tag_group
connect to test_tag_group identified by test_tag_group
using '201';
--2 在源資料庫端建立物化檢視日誌,用於物化檢視快速重新整理

SQL> create materialized view log on prebuild_table;

Materialized view log created

--3 在目標資料庫端建立與源庫一樣的表結構的空表
SQL> create table prebuild_table as select * from
where 1=2;

Table created

/*
也可以用9i的DBMS_METADATA.GET_DDL分別得到表、索引、約束的DDL。
select DBMS_METADATA.GET_DDL('TABLE',TABLE_NAME) from USER_TABLES;
select DBMS_METADATA.GET_DDL('INDEX',INDEX_NAME) from USER_INDEXES;
select DBMS_METADATA.GET_DDL('CONSTRAINT',CONSTRAINT_NAME) from USER_CONSTRAINTS;
注意:為了提高效率,應在所有資料重新整理後在應用索引和約束。建立的順序應該是 表->索引->約束
如果是9i的話推薦用這種方法。
*/

--4 在目標資料庫建立prebuild mv
SQL> CREATE MATERIALIZED VIEW prebuild_table
2 on
3 prebuilt table
4 REFRESH FAST WITH PRIMARY KEY for update
5 AS SELECT * FROM
;

Materialized view created


--5 重新整理物化檢視資料
SQL> exec dbms_snapshot.refresh('prebuild_table');

PL/SQL procedure successfully completed

--6 刪除物化檢視

SQL> drop materialized view prebuild_table;

Materialized view dropped

--7 用以前發過的一個過程同步序列
SQL>exec p_sync_sequence;

/*
prebuild mv與EXP/IMP比較
1、prebuild mv適用於停機時間很短的大資料量的資料遷移
2、EXP/IMP操作簡單,但需要較長的停機時間
3、一般來說,用prebuilt mv的方法是在空閒時間先對大表重新整理,然後在把應用停止,對目標資料庫的物化檢視執行增量重新整理,這樣就大大減小了down機時間。
對小表可以直接適用insert into xxx select * from
;

*/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63719/,如需轉載,請註明出處,否則將追究法律責任。

相關文章