Windows下Oracle Golden gate12的單向複製 Oracle-Oracle
1.首先,先來了解下Golden gate吧,ogg概念與機制
2.這裡記錄Oracle和Oracle的windows下的同步,那麼到官網下這個安裝包吧,Ogg For Oracle
3.安裝好了Oracle的機器上,解壓安裝包,然後安裝,點選setup,如圖(源端和目標端都要安裝喲):
4.好了,安裝好了之後,設定環境變數,先檢視services.msc的Oracle服務如圖:
然後設定:
ORACLE_HOME=D:\oracle\product\11.2.0\dbhome_1
ORACLE_SID=ORCL
如圖:
5.接下來改下Oracle的日誌模式,總體結果圖如下(也是源端和目標端都要修改,以下除了特定說明不然都是兩邊執行sql):
1)開啟sqlplus.exe,登入sys賬號。
2)之後,開啟歸檔模式,這裡值得注意的是,登入Oracle的sys(超級管理員)時,你當前的使用者一定要是administrator,其他賬號即使是administrator組也不行。執行以下命令先確保Oracle沒有執行什麼業務先,因為可能需要好幾分鐘才可以改好。
SQL> archive log list; SQL> shutdown immediate; SQL> startup mount; SQL> alter database archivelog; SQL> alter database open;
3)忘記了sys密碼嗎,那看下圖:
這裡參考:https://www.cnblogs.com/jiangxinnju/p/7928029.html
4)在源端開啟force logging,輸入:
SQL> alter database force logging;
SQL> select force_logging from v$database;
FOR
---
YES
5)在源端開啟supplemental log,輸入:
SQL> alter database add supplemental log data; Database altered. SQL> alter system switch logfile; System altered.
6)在源端關閉回收站,輸入:
SQL> alter system set recyclebin=off;
System altered.
如果不行,就輸入:
SQL> alter system set recyclebin=off deferred;
6.源端建立ogg的使用者:ggs,就用上面登入過的sys賬號登入來建立並且授權吧,輸入:
SQL> create user ggs identified by 123456 default tablespace users temporary tablespace temp;
SQL> grant connect ,resource,unlimited tablespace to ggs;
SQL> grant execute on utl_file to ggs;
SQL> grant select any dictionary,select any table to ggs;
SQL> grant alter any table to ggs;
SQL> grant flashback any table to ggs;
SQL> grant execute on dbms_flashback to ggs;
7.目標端建立ogg的使用者:ggs (事實上,如果目標端以後也可能作為源端,所以你也可以乾脆兩邊都設定一樣的許可權)
SQL> create user ggs identified by 123456 default tablespace users temporary tablespace temp;
SQL> grant dba to ggs;
8.建立demo表,輸入:
SQL> create table demo(id number primary key,ename varchar2(10));
9.接下來,去到ogg安裝目錄下,開啟ggsci.exe,輸入(自動建立需要用到的資料夾):
create subdirs
然後登入ggs賬號,並且新增表級的trandata,輸入:
GGSCI (WIN-sjrh38) 5> dblogin userid ggs,password 123456
Successfully logged into database.
GGSCI (WIN-sjrh38 as [email protected]) 6> add trandata ggs.demo
Logging of supplemental redo data enabled for table GGS.DEMO.
TRANDATA for scheduling columns has been added on table 'GGS.DEMO'.
TRANDATA for instantiation CSN has been added on table 'GGS.DEMO'.
10.在目標端編輯GLOBAL檔案,輸入:
edit params ./GLOBALS -- 自動建立檔案,寫入後儲存就行
dblogin userid ggs,password 123456 -- 登入
checkpointtable ggs.checkpoint -- 新增這句進去
11.目標端新增checkpoint,ggsci.exe輸入:
add checkpointtable ggs.checkpoint
12.配置源端mgr管理程序,輸入:
GGSCI (WIN-sjrh38) 72> edit params mgr
檔案寫入:
port 7500
dynamicportlist 7501-7505
autorestart extract *,waitminutes 2,retries 5
然後輸入:start mgr 啟動mgr程序
13.配置源端extract抽取程序,輸入:
GGSCI (WIN-sjrh38) 73> edit params eora
檔案寫入:
extract eora
userid ggs,password 123456
exttrail D:\oracleGoldenGate12\install\dirdat\et
table ggs.demo;
然後新增並啟動eora程序,輸入:
add extract eora,tranlog,begin now
add exttrail D:\oracleGoldenGate12\install\dirdat\et,extract eora
start eora
14.配置源端的pump_so程序,輸入:
GGSCI (WIN-sjrh38) 74> edit params pump_so
檔案寫入:
extract Pump_so
Userid ggs,password 123456
rmthost 192.168.88.58, mgrport 7500
rmttrail E:\app\db\golden_gate12\install\dirdat\et
Table ggs.demo;
然後新增pump_so程序,輸入(先不啟動pump_so先):
add extract pump_so,exttrailsource D:\oracleGoldenGate12\install\dirdat\et -- 源端
add rmttrail E:\app\db\golden_gate12\install\dirdat\et,extract pump_so -- 目標端
15.配置目標端的mgr管理程序,目標端的ggsci.exe輸入:
edit params mgr
檔案寫入:
port 7500
dynamicportlist 7501-7505
autostart er *
autorestart extract *,waitminutes 2,retries 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts E:\app\db\golden_gate12\install\dirdat\et*,usecheckpoints,minkeepdays 3
啟動mgr,輸入:
start mgr
16.配置目標端的複製程序,輸入:
edit params repl
檔案寫入:
replicat repl
userid ggs,password 123456
assumetargetdefs
reperror default,discard
discardfile ./dirrpt/repl.dsc,append,megabytes 50
MAP ggs.demo, target ggs.demo;
新增並且啟動複製程序,輸入:
add replicat repl,exttrail E:\app\db\golden_gate12\install\dirdat\et,checkpointtable ggs.checkpoint
start repl
17.開啟目標端的7500-7505的埠,如圖:
18.源端啟動pump_so,ggsci.exe輸入:
start pump_so
19.目標端顯示了這個info,如圖:
20.源端的sqlplus.exe輸入:
表已建立。
SQL> insert into demo select 1,'aaa' from dual;
已建立 1 行。
SQL> insert into demo select 2,'bbb' from dual;
已建立 1 行。
SQL> commit;
21.然後再去目標端看看效果如何,如圖(我插入了7條):
注:如果以上步驟哪個有問題可以留言,另外,也可以到安裝ogg的根目錄找到ggserr.log檢視錯誤日誌。
以上部分參考:https://blog.csdn.net/qq_36276335/article/details/62232559
需要了解Mysql到Oracle同步的可以看這裡:https://blog.csdn.net/BAStriver/article/details/84637957