我們經常希望把各地的資料入庫後進行統一的應用。現在可以用複製技術來解決這個問題。但實現資料庫複寫也是要有一些條件的。
首先,資料庫要具備進階複製功能(用system身份登入資料庫,查看v$option視圖,如果其中Advanced replication為TRUE,則支援進階複製功能;否則不支援)。
如果具備進階複製功能,資料庫要進行一些參數初始化。
db_domain = test.com.cn 指明資料庫的網域名稱(預設的是WORLD),這裡可以用您公司的網域名稱;global_names = true 它要求資料庫連結(database link)和被串連的資料庫名稱一致,現在全域資料庫名:db_name+”.”+db_domain ;
跟資料庫job執行有關的參數:
job_queue_processes = 1;
job_queue_interval = 60;
distributed_transactions = 10;
open_links = 4
第一行定義SNP進程的啟動個數為n。系統預設值為0,正常定義範圍為0~36,根據任務的多少,可以配置不同的數值。第二行定義系統每隔N秒喚醒該進程一次。系統預設值為60秒,正常範圍為1~3600秒。事實上,該進程執行完當前任務後,就進入睡眠狀態,睡眠一段時間後,由系統的總控負責將其喚醒。如果修改了以上這幾個參數,需要重新啟動資料庫以使參數生效。
做完了初步的準備,我們來實現資料庫複製。
假設在Internet上有兩個資料庫:一個叫中國(China),一個叫日本(Japan)。
具體配置如下:
資料庫名:China、Japan
資料庫網域名稱 test.com.cn
資料庫sid號 China、Japan
Listener連接埠號碼 1521
伺服器ip地址 10.1.0.100 10.1.0.200
確認兩個資料庫之間可以互相訪問,在tnsnames.ora裡設定資料庫連接字串。
中國這邊的資料庫連接字串是以下的格式:
Japan =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Japan)
)
)