Oracle主從同步、雙向同步的配置[轉]
(把主資料庫obpm 和從資料庫orcl 用實際的資料庫名給替換掉)
(配置主從同步後,再配置雙向同步,可能會有表資料重疊,建議在配置雙向同完成後,再匯入表資料!)
備註:主、從資料庫都用淡藍色標記了,方便查詢替換。
1.環境介紹
主資料庫SID : obpm
作業系統 : win 2003
IP地址 : 192.168.0.1
Global_name :
oracle version: 10.2.0.1
從資料庫SID: orcl
作業系統 : win 2003
IP地址 : 192.168.0.2
Global_name :
oracle version: 10.2.0.1
2.在主/從資料庫設定初始化引數(在主從資料庫都執行以下操作)
(以as sysdba身份,可在sqlplus中執行)
1) 以dba身份登入
1 |
|
2) 設定引數
1 2 3 4 |
|
3)重啟動兩個資料庫,重啟方式:
1 2 3 4 |
|
3.設定主資料庫(obpm )為歸檔mode (以as sysdba身份,可在sqlplus中執行)
1) --查是否歸檔,如是歸檔,請忽略第3點
1 |
|
2) 歸檔設定
1 2 3 4 5 6 |
|
4.主/從資料新建stream管理使用者(在主從資料庫都執行以下操作)
1 2 3 4 5 |
|
1 |
|
5.主資料庫網路環境設定 (就是在主資料庫中增加一個從資料庫的連線服務)
1)主資料庫中新增從資料庫的配置。(通過oracle圖形工具net configuration manager配置,服務名為從資料庫名orcl,並測試與從資料庫是否連通)
2)新建連線orcl的dblink
1 2 3 4 5 6 7 8 9 |
|
測試dblink:select sysdate from [email protected]; --測試dblink是否有效
6.從資料庫網路環境設定 (就是在從資料庫中增加一個主資料庫的連線服務)
1)從資料庫中新增主資料庫的配置。(通過oracle圖形工具net configuration manager配置,服務名為主資料庫名obpm,並測試與從資料庫是否連通)
2)新建連線obpm的dblink
1 2 3 4 5 6 7 8 9 |
|
測試dblink:select sysdate from [email protected]; --測試dblink是否有效
7.主資料庫流佇列建立 (可在plsql中的SQL中執行,登入名應為strmadmin)
1 2 3 4 5 |
|
8.從資料庫流佇列建立
1 2 3 4 5 |
|
9.主資料庫建立捕獲程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
10.從資料庫例項化strmadmin使用者 (win在CMD命令介面中執行)(這兩個路徑須一致)
1 |
|
在從資料庫新建strmadmin
1 |
|
11.主資料庫建立傳播程序
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
注意:此段語句執行可能會報錯,如果報錯,不用管,繼續執行後面的。
修改propagation休眠時間為0,表示實時傳播LCR,latency以秒為單位
1 2 3 4 5 6 |
|
12.從資料建立應用程序
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
13.啟動Stream
1)從資料庫啟動應用程序
1 2 3 4 5 |
|
2)主資料庫啟動捕獲程序
1 2 3 4 5 |
|
14.現在就可以進行測試了,在crm使用者中作何一個測試表新增資料,刪除資料,增加表,修改表結構,進行同步測試
備註:以上就是主從同步的所有配置,接下來配置雙向同步。
(雙向同步前請測試,主從單向同步是否成功!若成功,則下面進行雙向同步,若不成功,則拉到下面的“問題檢查解決方法處排查問題,主從同步成功後在進行雙向同步!!!”)
雙向同步配置:
1.設定從資料庫(orcl )為歸檔mode (以as sysdba身份,可在sqlplus中執行)
1) 查是否歸檔,如是歸檔,請忽略第3點
1 |
|
2) 歸檔設定
1 2 3 4 5 6 |
|
2.從資料庫(orcl )建立捕獲程序
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
3.主資料庫(obpm)例項化strmadmin使用者 (win在CMD命令介面中執行)(這兩個路徑須一致)
1 |
|
在主資料庫(obpm)新建strmadmin
1 |
|
4.從資料庫(orcl)建立傳播程序
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
修改propagation休眠時間為0,表示實時傳播LCR,latency以秒為單位
1 2 3 4 5 6 7 |
|
5.主資料(obpm)建立應用程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
6.啟動Stream
1)主資料庫(obpm)啟動應用程序
1 2 3 4 5 6 |
|
2)從資料庫(orcl)啟動捕獲程序
1 2 3 4 5 6 |
|
以上就是雙向同步的配置,雙向同步完成後,測試是否成功,若不成功,則用下面的“‘主從同步’問題檢查解決方法把主從資料庫名稱調換檢查”
‘主從同步’問題檢查解決方法:
15.停止stream
1)主資料庫停止Capture程序
1 2 3 4 5 6 |
|
2)從資料庫停止Apply程序
1 2 3 4 5 6 |
|
16.清除所有配置資訊
1)按上述方法停止capture,applya程序
2)分別在主從資料庫執行以下語句
1 2 |
|
17.如何知道捕捉(Capture)程序是否執行正常?
以strmadmin身份,登入主資料庫,執行如下語句:
1 |
|
如果STATUS狀態是ENABLED,表示Capture程序執行正常;
如果STATUS狀態是DISABLED,表示Capture程序處於停止狀態,只需重新啟動即可;
如果STATUS狀態是ABORTED,表示Capture程序非正常停止,查詢相應的ERROR_NUMBER、ERROR_MESSAGE列可以得到詳細的資訊;同時,Oracle會在跟蹤檔案中記錄該資訊。
18. 如何知道Captured LCR是否有傳播?
以strmadmin身份,登入主資料庫,執行如下語句:
1 |
|
如果APPLIED_SCN小於CAPTURED_SCN,則表示在主資料庫一端,要麼LCR沒有被dequeue,要麼Propagation程序尚未傳播到從資料庫一端。
如果出現此情況,主庫程序重啟下,看看 APPLIED_SCN和CAPTURED_SCN是否相等,若相等,再重啟下從庫程序即可。
19.如何知道Appy程序是否執行正常?
以strmadmin身份,登入從資料庫,執行如下語句:
1 |
|
如果STATUS狀態是ENABLED,表示Apply程序執行正常;
如果STATUS狀態是DISABLED,表示Apply程序處於停止狀態,只需重新啟動即可;
如果STATUS狀態是ABORTED,表示Apply程序非正常停止,查詢相應的ERROR_NUMBER、ERROR_MESSAGE列可以得到詳細的資訊;
同時,可以查詢DBA_APPLY_ERROR檢視,瞭解詳細的Apply錯誤資訊。
其它錯誤請跟蹤alter.log
注意:
第一步:如果在重啟作業系統,或者資料庫後,出現主從資料庫無法同步的情況時,請用17,18,,19步的方法檢視;
第二步:在19步查詢出現“ABORTED”時,請用SELECT apply_name, apply_captured, ERROR_NUMBER, ERROR_MESSAGE, status FROM dba_apply進行查詢;
錯誤原因:
1 |
|
1 |
|
會出現:
(使用者沒有例項化)
這時候需要重新在從資料庫這邊系統的cmd中執行例項化使用者即可:
1 |
|
第三步:
從資料庫停止Apply程序
1 2 3 4 5 6 |
|
從資料庫啟動應用程序
1 2 3 4 5 6 |
|
這樣就解決了出現的問題。出現問題的原因是在第10步的例項化使用者沒成功(檢視windows資料夾下有沒有建立“crm.dmp”檔案,如果沒有建立,則說明例項化使用者不成功,重啟後則會出現此錯誤)
以上就是Oracle主從同步和雙向同步的配置,和常見問題的解決方法,一般來說只要按照上面步驟一步一步走,應該沒有問題。
注意的是sql語句後面貼上複製經常會出現空格,有空格會報錯,這點經常會不小心遇到。遇到問題不用擔心,按照上面的方法進行排查即可,如果真的配錯了,執行清除命令重新配置即可。
轉自: