利用oracle快照實現兩台資料庫伺服器表同步

2021-06-27 06:59:35 字數 1776 閱讀 4671

利用oracle快照實現兩台資料庫伺服器表同步。

舉例,如源資料庫a,目標資料庫b,資料庫b需要同步資料庫a的表cross,具體步驟如下:

1、首先在資料庫b中建立dblink;

-- create database link 

create database link db_link_test

connect to its_l identified by itsadmin

using 'orcl_fwq';

2、在資料庫a中建立需要被同步的表,如表cross,語句就不寫了,在資料庫b中無需建立表,用快照即可,第5步說明;

3、在資料庫b中測試dblink

select * from cross@db_link_test

;如能正常執行就說明dblink沒有問題;

4、在資料庫a中建立快照日誌(當快照的重新整理方式為 fast  的時候需要建立,具體重新整理方式見最後說明)

create snapshot log on cross;

5、在資料庫b中建立相應的快照

create snapshot cross as select * from cross@db_link_test

;這裡的快照「cross」就可以當做資料庫b的同步表使用,資料可刪除修改;

在第2步驟中省略了在資料庫b中建立表在這裡補上了;

6、設定快照重新整理時間,可定時觸發

alter snapshot cross refresh fast start with sysdate+1/1440 next sysdate+1/1440;

設定快照重新整理在一分鐘後執行,並且每隔1分鐘執行一次;

一天的秒數=24小時*60分鐘*60鈔,應為oracle預設加減時間是天。

至此快照同步建立完畢,當資料庫a的表cross發生資料變化,則相應的資料庫b的快照cross也會相應的發生變化,時間延期為1分鐘。

以上測試環境為oracle 10g。 

相關:1、手動重新整理快照,在沒有自動重新整理的情況下,可以手動重新整理快照.

手動重新整理方式1

begin

dbms_refresh.refresh('cross');

end;

手動重新整理方式2

exec dbms_snapshot.refresh('sn_test_user','f');  //第乙個引數是快照名,第二個引數 f 是快速重新整理 c 是完全重新整理.

2、檢視快照最後一次重新整理時間

select name,last_refresh from all_snapshot_refresh_times;

3、檢視快照下次執行時間

select last_date,next_date,what from user_jobs order by next_date;

說明: 

1,oracle的快照重新整理方式refresh有三種: 

fast        快速重新整理,用snapshot log,只更新時間段變動部分  

complete    完全重新整理,執行sql語句  

force       自動判斷重新整理,介於fast和complete之間

快照技術提供給我們三種重新整理機制,分別是:

1) complete 完全重新整理機制,即對錶的所有資料進行重新整理,如果表的資料量十分龐大的,此法會消耗相當的時間;

2) fast 快速重新整理,即只對資料增量進行重新整理;

3) force 強制重新整理,首先判斷是否能用快速重新整理機制,如不行則用完全重新整理機制。

2,若在資料庫b上建立快速重新整理,則要在資料庫a上建立快照日誌物件,否則沒這個必要,即第4步。

區域網實現兩台資料庫同步

引用鄒建 同步兩個資料庫的示例 測試環境及同步要求 有資料庫伺服器srv1和srv2,兩台電腦能互相訪問,有資料 srv1.庫名.author有欄位 id,name,phone,srv2.庫名.author有欄位 id,name,telphone,adress 要求 srv1.庫名.author增加...

Oracle資料庫伺服器搭建

在安裝os之前一般需要做raid,至於是做raid5還是raid1 0則根據自己的需求在i o效能及安全性上衡量。在選擇安裝包的時候我一般不主張完全安裝,畢竟我們的伺服器資源還是很珍貴的,沒有必要的服務可以不用裝。我們可以按最小化安裝,以後再根據需要補充安裝。當然如果能確定需求的話直接選擇自己需要的...

oracle資料庫伺服器01

以下操作,必須以超級管理員身份登入,才能修改 oracle安裝後,會預設生成很多個使用者 以超級管理員身份登入,請注意,其中的空格符 sys是乙個超級管理員,有最大的許可權,dba是角色名,槓二邊是使用者名稱和密碼,以dba角色名進入,無需使用者名稱和密碼 sqlplus as sysdba 例如 ...