OGG_windows搭建實驗
windows解除安裝Oracle GoldenGate產品的方法
1、進入源或目標GG配置目錄,輸入以下命令:
gg> stop *
gg> stop mgr
2、刪除Oracle GoldenGate目錄
3、執行windows命令,執行sc delete [服務名]
此伺服器名就是./GLOBALS中的MGRSERVNAME
ggsci>install addservice其實就是呼叫OGG目錄中的mgr.exe
標準搭建步驟
實驗環境介紹
源和目標在同一臺伺服器上,因為伺服器安裝了DB客戶端和DB server,所以ggsci預設找DB客戶端的tns,為了不引起問題,在DB客戶端和DB server的tns中都加入了luxus和luxus2項
源:win7+ORACLE_11GR1_win32(db_name是luxus)+OGG_11GR1_win32
目標:win7+ORACLE_11GR1_win32(db_name是luxus2)+OGG_11GR1_win32
1. 解壓OGG_11GR1_win32至OGG源d:\gg\luxus和OGG目標d:\gg\luxus2
2. 源庫luxus保證
alter database archivelog;
select force_logging from v$database; yes
開啟方式:alter database force logging;
select supplemental_log_data_min from v$database; yes
開啟方式:alter database add supplemental log data;
alter system set recyclebin=off scope=spfile
3. 源庫luxus和目標庫luxus2都執行如下
create user ggs identified by ggs default tablespace users temporary tablespace temp;
grant dba to ggs; //建立goldengate管理使用者
conn ggs/ggs
create table demo(id number primary key,ename varchar2(10)); //建立測試表,生產環境不用這這樣建立這樣的測試表
4. OGG源端cd d:\gg\luxus執行ggsci後,執行create subdirs
5. OGG目標端cd d:\gg\luxus2執行ggsci後,執行create subdirs
6. OGG源端ggsci後edit params ./GLOBALS輸入MGRSERVNAME ggsource
7. exit退出源ggsci後install addservice
8. 源ggsci後edit params mgr輸入port 7809
9. 源ggsci後edit params eiextt輸入
EXTRACT EIEXTT
USERID ggs@luxus, PASSWORD ggs
EXTTRAIL ./dirdat/tt
TABLE ggs.*;
TABLE schemaname.*;
做好了DDL的配置的情況下,以上紅色兩行只是相對於對源庫和目標庫對一個初始化,以後源庫新增使用者,新使用者下新增的物件都會自動同步到目標庫。
10.源ggsci執行add extract eiextt,tranlog,begin now
11.源ggsci執行add exttrail ./dirdat/tt,extract eiextt, megabytes 5
12.源ggsci執行edit params epmptt輸入
EXTRACT EPMPTT
PASSTHRU
RMTHOST localhost,MGRPORT 7909
RMTTRAIL ./dirdat/tt
TABLE ggs.*;
TABLE schemaname.*;
做好了DDL的配置的情況下,以上紅色兩行只是相對於對源庫和目標庫對一個初始化,以後源庫新增使用者,新使用者下新增的物件都會自動同步到目標庫。
13.源ggsci執行add extract epmptt,exttrailsource ./dirdat/tt
14.源ggsci執行add rmttrail ./dirdat/tt,extract epmptt,megabytes 5
15.目標ggsci執行edit params ./GLOBALS輸入
MGRSERVNAME ggtarget
CHECKPOINTTABLE ggs.ggschkpt
16.exit退出目標ggsci後install addservice
17.目標ggsci執行edit params mgr輸入
port 7909
18.目標ggsci執行dblogin userid ggs@luxus2,password ggs
add checkpointtable ggs.ggschkpt
add replicat poratt,exttrail ./dirdat/tt,checkpointtable ggs.ggschkpt
19.目標ggsci執行edit param poratt輸入
replicat poratt
userid ggs@luxus2, password ggs
assumetargetdefs
reperror default, discard
discardfile ./dirrpt/poratt.dsc, purge
map ggs.*, target ggs.*;
map schemaname.*, target schemaname.*;
做好了DDL的配置的情況下,以上紅色兩行只是相對於對源庫和目標庫對一個初始化,以後源庫新增使用者,新使用者下新增的物件都會自動同步到目標庫。
20.源庫ggsci執行dblogin userid ggs@luxus,password ggs
add trandata ggs.*
add trandata schemaname.*
做好了DDL的配置的情況下,以上兩行只是相對於對源庫和目標庫對一個初始化,以後源庫新增使用者,新使用者下新增的物件都會自動同步到目標庫。
21.源端ggsci執行start mgr和start *
檢查是否正常啟動的命令為ggsci>status mgr或ggsci>status *
22.目的端ggsci執行start mgr和start *
檢查是否正常啟動的命令為ggsci>status mgr或gsci>status *
上述配置只是配置了dml相關(只要commit後就會同步到目標庫,不管目標庫是否歸檔模式),如果源庫增加一張表,壓根不會同步到目標庫
DDL的標準配置新增如下
1. 源例項luxus下執行SQL> GRANT EXECUTE ON utl_file TO ggs;
2. 源和目標都關閉所有程式和服務
ggsci>stop mgr
ggsci>stop *
3. 源ggsci下執行EDIT PARAMS ./GLOBALS新增如下
GGSCHEMA ggs
GGSCHEMA schemaname
4. 源例項luxus到d:\gg\luxus\下sqlplus / as sysdba執行如下
SQL> @marker_setup.sql
SQL> @ddl_setup.sql
SQL> @role_setup.sql
SQL> GRANT GGS_GGSUSER_ROLE to ggs;
SQL> @ddl_enable.sql
SQL> @marker_status.sql
SQL> exit
5. 目標例項luxus2到d:\gg\luxus2\下sqlplus / as sysdba執行如下
SQL> @marker_setup.sql
SQL> @ddl_setup.sql
6. 源ggsci下執行edit params eiextt新增如下(必須加,否則就不會捕獲ddl的相關資訊,只會捕獲dml相關資訊)
DDL INCLUDE ALL
7. 源和目標ggsci啟動所有程式和服務
ggsci>start mgr
ggsci>start *
後面新增的表沒有主鍵也可以正常同步到目標庫,且新建使用者後新使用者的表會自動同步到目標庫,不再需要重新對引數檔案新增map schemaname.*, target schemaname.*;且新增使用者及使用者許可權都會自動同步到目標庫
源端的捕獲程式對資料的存放路徑,放在了源端
源端的傳輸程式對資料的存放路徑,放到了目標端
源端配置檔案資訊
mgr程式配置檔案./GLOBALS的配置
MGRSERVNAME ggsource
GGSCHEMA ggs
EXTRACT抽取程式名為Eiextt的配置
EXTRACT EIEXTT
USERID ggs@luxus, PASSWORD ggs
EXTTRAIL ./dirdat/tt
DDL INCLUDE ALL
TABLE ggs.demo;
TABLE ggs.*;
EXTRACT傳輸程式名為Epmptt的配置
EXTRACT EPMPTT
PASSTHRU
RMTHOST localhost,MGRPORT 7909
RMTTRAIL ./dirdat/tt
TABLE ggs.demo;
TABLE ggs.*;
目標端配置檔案資訊
mgr程式配置檔案./GLOBALS的配置
MGRSERVNAME ggtarget
CHECKPOINTTABLE ggs.ggschkpt
replicat複製程式名為poratt的配置
replicat poratt
userid ggs@luxus2, password ggs
assumetargetdefs
reperror default, discard
discardfile ./dirrpt/poratt.dsc, purge
map ggs.demo, target ggs.demo;
map ggs.*, target ggs.*;
實驗中遇到的故障及解決方法
1. 源端的傳輸程式中也加入了DDL INCLUDE ALL一段配置後,報錯如下
解決方法:傳輸程式去掉DDL INCLUDE ALL這段配置後正常
2015-06-01 16:58:59 ERROR OGG-00528 Oracle GoldenGate Capture for Oracle, EPMPTT.prm: The DDL parameter is not supported for this data source. Please remove this parameter and all DDL operations will be propagated in pass-through (PASSTHRU) mode.
2. 在源中執行了ddl的sql語句後,源schema產生了一些表,但是目標schema沒有表,導致replicat程式無法啟動,報錯如下
解決方法:把源中的資料expdp、impdp到目標庫才能正常啟動目標中的replicat程式,程式
2015-06-03 15:10:54 ERROR OGG-00199 Oracle GoldenGate Delivery for Oracle, FUZHI.prm: Table GGS.GGS_SETUP does not exist in target database.
2015-06-03 15:10:54 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, FUZHI.prm: PROCESS ABENDING.
一些實驗過程中遇到的問題的問答
1. A1、A2兩表,源端和目標端的配置檔案中只配置了schema.A1,A2更新後目標的A2會更新嗎(增刪改)
A2表不會更新,連新增都不會同步到目標的A2
2. A1、A2兩表,源端和目標端的配置檔案中配置了schema.*,A2更新後目標的A2會更新嗎(增刪改)
增刪正常,改不行,如果想讓改也正常,必須在源庫中增加如下兩句,此下語句執行之前的的改不會同步到目標庫,執行之後產生的修改才會同步到目標庫
dblogin userid ggs@luxus,password ggs
add trandata schema.*
3. A1、A2兩表,源端和目標端的配置檔案中先配置schema.*,抽取程式配置檔案有有DDL INCLUDE ALL引數,複製程式配置檔案沒有DDL INCLUDE ALL引數,建立A3,並更新A3(增刪改),看目標A3更新嗎
正常更新
說明新增的表,不需要在源端重新執行一遍add trandata ggs.*即可正常改
4. A1、A2兩表,源端和目標端的配置檔案中先配置schema.A1,抽取程式配置檔案有DDL INCLUDE ALL引數,複製程式配置檔案沒有DDL INCLUDE ALL引數,建立A4,看目標建立A4嗎,並更新A4(增刪改),看目標A4更新嗎
建A4表成功
但是A4表新增都不成功,更不要說什麼刪改了
5. ddl配置好了的情況下,源的抽取程式去掉DDL INCLUDE ALL引數,源新增一個張A,會同步到目標庫嗎
不會同步過去
6. DDL INCLUDE ALL的配置放在配置檔案什麼位置沒有什麼影響,可以放最上面也可以放最下面,也可以放中間,並不需要考慮在什麼適當位置增加下列內容:DDL INCLUDE ALL
7. 中的所有服務並退出ggsci,否則會報錯有session連線伺服器,yes or no進行選擇繼續還取消
8. SQL>alter database add supplemental log data;將資料庫附加日誌開啟後還需要對每張表執行add trandata 嗎?
需要!
如果不執行add trandata,insert同步沒有問題(ORACLE資料庫),但是在同步update或delete操作時,就會因為丟失主鍵報同步錯誤。不開啟表級的最小附加日誌,update的redo資訊不記錄沒有進行更新的欄位資訊,如主鍵不更新的話主鍵不記錄在redo中,所以會導致同步失敗。表級補全日誌需要在最小補全日誌開啟的情況下才起作用,只開啟最小補全日誌(alter database add supplemental log data;),redolog記錄的資訊還不夠全面,必須再使用add trandata開啟表級的補全日誌以獲得必要的資訊。
9. 源端和目標表可以*.*如此模糊配置所有schema.objects嗎
不行
否則抽取程式、傳輸程式、複製程式都啟動不了,會報錯OGG-00259 Schema name cannot be wildcarded
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2124153/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ensp VRRP實驗搭建VR
- 搭建Ansible實驗環境
- OGG_linux搭建實驗Linux
- 1.搭建Hadoop實驗平臺Hadoop
- OCM實驗-測試環境的搭建
- 阿里雲體驗實驗室 教你《快速搭建Docker環境》阿里Docker
- 阿里雲體驗實驗室教程《快速搭建LAMP環境》阿里LAMP
- 阿里雲體驗實驗室 教你如何《快速搭建LNMP環境》阿里LNMP
- 阿里雲體驗實驗室 教你如何《搭建Hadoop環境》阿里Hadoop
- Oracle實驗環境搭建(windows + oracle 11g)OracleWindows
- 阿里雲體驗實驗室 教程《搭建Java Web開發環境》阿里JavaWeb開發環境
- Linux 0.11 實驗環境搭建與除錯Linux除錯
- 使用RMAN Duplicate方法搭建異名資料庫實驗資料庫
- 搭建獨立大資料實驗室的設想大資料
- RHEL9.4搭建虛擬機器實驗環境虛擬機
- 《搭建個人Leanote雲筆記本》阿里雲體驗實驗室 教程筆記阿里
- 阿里雲體驗實驗室 教你《搭建Node.js程式設計環境》阿里Node.js程式設計
- CDH5大資料實驗平臺搭建筆記H5大資料筆記
- oracle實驗記錄 (oracle 10G dataguard(1)手工搭建)Oracle
- 實驗11.ACL實驗
- 初學者如何搭建一個自己專屬的電子實驗室?
- 使用RMAN進行同名資料庫異地環境搭建實驗資料庫
- 搭建基於netfilter/iptables的防火牆實驗環境(轉)Filter防火牆
- 搭建Oracle GoldenGat (個人操作實驗文件,有興趣的可以照著實現下)OracleGo
- 實驗5.OSPF配置實驗
- 20個實驗之實驗11
- 20個實驗之實驗10
- 20個實驗之實驗16
- 30個實驗之實驗23
- 30個實驗之實驗25
- 實驗一--Easy IoT實現mqtt實驗MQQT
- 《轉》VMware vSphere 5.1 學習系列之一:實驗環境的搭建
- 實驗
- 視覺化搭建 - 元件值校驗視覺化元件
- hadoop2.2.0 搭建初體驗Hadoop
- 實驗7.Vlan劃分實驗
- 實驗10.3層vlan互通實驗
- 實驗8.Vlan Hybrid實驗