基於快照實現遠端資料只讀複製

guoge發表於2012-01-18

 其實也沒太大難度,只是在這記錄,以供以後查詢使用。

          

1. 在目標資料庫中配置指向源資料庫的伺服器網路名。例如:

HITCSRV5=

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 132.147.100.5)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ORCL)

    )

  )

JGPT 21.104.128.52 hospital/hospital

ORA-02063/01017

測試資料庫能夠連通:

SQL> conn comm/comm@hitcsrv5

Connected.

2. 在源資料庫中建立資料庫連結:

drop public database link hitcsrv5;

Create public DATABASE LINK hitcsrv5 CONNECT TO comm IDENTIFIED BY comm USING 'hitcsrv5';

測試資料庫連結生效:

SQL> select * from dual@hitcsrv5

  2  ;

D

-

X

3. 在源 資料庫上建立要同步的表(最好有主鍵約束,快照才可以快速重新整理)

create table  Sync_table(id number(10) primary key,name varchar2(12),age number(3));

4. 在源資料庫的表上建立同步表的快照日誌

SQL> create materialized view log on Sync_table WITH ROWID;

;

Materialized view log created.

以下幾種情況都可以

--主鍵模式

create snapshot log on Sync_table;

create materialized view log on Sync_table

--基於ROWID

create materialized view log on Sync_table WITH ROWID;

5. 在目的資料庫中建立快照:

Create snapshot Sync_table 

refresh fast with rowid

as select * from Sync_table@hitcsrv5;

6. 設定快照重新整理時間

Alter snapshot Sync_table refresh fast Start with sysdate next sysdate+1/24*60 with rowid;

此為1分鐘重新整理一次

修改時間格式

ALTER SESSION SET NLS_DATE_FORMAT = 'MM-DD HH24:MI:SS';

7. 檢視快照最後一次重新整理時間

SELECT NAME,LAST_REFRESH FROM ALL_SNAPSHOT_REFRESH_TIMES WHeren name ='SYNC_TABLE';

8..檢視快照下次執行時間
select last_date,next_date,what from user_jobs order by next_date;


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

相關文章