利用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 例如 ...