GoldenGate簡單複製環境的搭建
今天試了下搭建GoldenGate,搭建的過程也簡單總結了一下。
目前源資料庫是newtest2 目標資料庫是dataguru 都是11.2.0.4.0版本
關於GoldenGate的下載可以到下面的連結下載
在11g中,存在一個和GoldenGate有關的引數,預設是false,我們需要在源庫,目標庫都開啟
SQL> show parameter golde
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
enable_goldengate_replication boolean FALSE
SQL> alter system set enable_goldengate_replication=true;
alter database
然後檢視supplemental log的情況,這個也是需要的設定。
SQL> select SUPPLEMENTAL_LOG_DATA_min from v$database;
SUPPLEMENTAL_LOG
----------------
YES
alter database add supplemental log data; 做完之後,切換日誌使得附加日誌生效。
SQL> alter system archive log current;
System altered.當然我們希望在源端和目標端的資料庫都配置一個資料庫使用者。OGG是宣稱不需要觸發器,中間表,增量標記和時間戳欄位的。
源端的配置資料庫使用者的指令碼如下:
create user ogg_source identified by oracle default tablespace users;
grant alter session to ogg_source;
grant create session to ogg_source;
grant connect to ogg_source;
grant resource to ogg_source;
grant select any dictionary to ogg_source;
grant select any table to ogg_source;
grant flashback any table to ogg_source;
grant alter any table to ogg_source;
目標端配置資料庫使用者的指令碼如下:
create user ogg_target identified by oracle default tablespace users;
grant alter session to ogg_target;
grant create session to ogg_target;
grant connect to ogg_target;
grant resource to ogg_target;
grant select any dictionary to ogg_target;
grant select any table to ogg_target;
grant flashback any table to ogg_target;
grant alter any table to ogg_target;
grant insert any table to ogg_target;
grant update any table to ogg_target;
grant delete any table to ogg_target;
新增一個表日誌:
> EDIT PARAMS ./GLOBALS
GGSCHEMA ogg_source
CHECKPOINTTABLE ogg_source.CHKPTAB
在源端使用資料庫使用者登入
1> dblogin userid ogg_source,password oracle
Successfully logged into database. 為所有要複製的表新增trandata,目前我需要複製的是newtest2這個資料庫下的n1使用者
2> add trandata n1.*;
ERROR: No viable tables matched specification.
這個時候就會明顯感覺到OGG的格式不大喜歡結尾符,得去掉結尾符才可以。
3> add trandata n1.*
2016-11-11 14:13:05 WARNING OGG-06439 No unique key is defined for
table A. All viable columns will be used to represent the key, but may
not guarantee uniqueness. KEYCOLS may be used to define the key.
Logging of supplemental redo data enabled for table N1.A.
TRANDATA for scheduling columns has been added on table 'N1.A'. 不過丟擲來下面的錯誤,是許可權不夠,還需要附一個許可權。
2016-11-11 14:13:05 WARNING OGG-00706 Failed to add supplemental log group on table N1.A due to ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_CAPTURE_ADM' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored SQL BEGIN
DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(table_name =>
'"N1"."A"', supplemental_logging => 'none'); END; 解決方法:
SQL> grant execute on sys.DBMS_CAPTURE_ADM to ogg_source;
Grant succeeded. 再次執行就沒有問題了。
然後連線到資料庫,開始配置抽取程式
14> dblogin userid ogg_source,password oracle
Successfully logged into database.
配置引數,使用本地的方式。
15> edit params ext_1
EXTRACT EXT_1
USERID ogg_source, PASSWORD oracle
EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss
TABLE N1.*;
新增抽取程式,從資料庫日誌中抓取資料。
> ADD EXTRACT EXT_1, TRANLOG, BEGIN NOW
EXTRACT added.
配置本地佇列,然後啟動
> ADD EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss, EXTRACT EXT_1
> start EXT_1
Sending START request to MANAGER ...
EXTRACT EXT_1 starting
配置完成之後,就可以檢視是否能夠正常抽取了,可以看到是沒有正常啟動。狀態現在還是STOPPED
> info EXT_1
EXTRACT EXT_1 Initialized 2016-11-11 16:16 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:01:22 ago)
Log Read Checkpoint Oracle Redo Logs
2016-11-11 16:16:04 Seqno 0, RBA 0
SCN 0.0 (0)在11g中沒有配置和OGG相關的資料庫引數,就會丟擲如下的問題了.
2016-11-11 16:17:11 ERROR OGG-02091 Oracle GoldenGate Capture for
Oracle, ext_1.prm: Operation not supported because
enable_goldengate_replication is not set to true.
2016-11-11 16:17:11 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, ext_1.prm: PROCESS ABENDING.修復之後,重新啟動,這個問題就迎刃而解了,檢視這個抽取程式的狀態,可以看到已經有了狀態資料。
> info ext_1
EXTRACT EXT_1 Last Started 2016-11-11 16:20 Status RUNNING
Checkpoint Lag 00:04:49 (updated 00:00:03 ago)
Process ID 53455
Log Read Checkpoint Oracle Redo Logs
2016-11-11 16:16:04 Seqno 9416, RBA 8206848
SCN 0.0 (0)然後開始在源端配置PUMP程式,目標資料庫的IP是10.127.2.32,PASSTHRU代表是一個傳輸程式data pump
> edit params dpump_1
EXTRACT dpump_1
PASSTHRU
RMTHOST 10.127.2.32, MGRPORT 1530
RMTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss
TABLE n1.*;
> ADD EXTRACT dpump_1,EXTTRAILSOURCE /home/oracle/ogg/ogg_work/dirdat/ss
EXTRACT added.
> ADD RMTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss, EXTRACT dpump_1
RMTTRAIL added.
配置完成之後,啟動PUMP程式。
> start dpump_1
Sending START request to MANAGER ...
EXTRACT DPUMP_1 starting檢視DUMP程式的資訊如下:
> info dpump_1
EXTRACT DPUMP_1 Last Started 2016-11-11 16:24 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:04 ago)
Process ID 53479
Log Read Checkpoint File /home/oracle/ogg/ogg_work/dirdat/ss000000000
First Record RBA 0
對於OGG如果估計最常用的就是info all這個命令了。
> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPUMP_1 00:00:00 00:00:07
EXTRACT RUNNING EXT_1 00:00:00 00:00:00
源端配置完成,我們來配置目標端。
新增表日誌:
> edit param ./GLOBALS
GGSCHEMA ogg_target
CHECKPOINTTABLE ogg_target.CHKPTAB
登入到資料庫端:
> dblogin userid ogg_target,password oracle
Successfully logged into database.
目標端配置檢查點:
> add checkpointtable ogg_target.CHKPTAB
Successfully created checkpoint table ogg_target.CHKPTAB
配置投遞佇列引數,將資料應用到目標庫,這裡有個對映關係,就是源庫的n1.*和目標庫的n1.*是對應的。
> edit params rep_1
REPLICAT REP_1
USERID ogg_target, PASSWORD oracle
ASSUMETARGETDEFS
HANDLECOLLISIONS
MAP n1.*,TARGET n1.*; 新增投遞佇列
> ADD REPLICAT
REP_1, EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss,CHECKPOINTTABLE
ggs_target.CHKPTAB
REPLICAT added.
這裡自己給自己埋了一個坑,先不說破了。看看下面的錯誤。
啟動投遞應用程式,但是發現卻有報錯。
> start REP_1
Sending START request to MANAGER ...
REPLICAT REP_1 starting
錯誤提示是比較奇怪的,怎麼使用者名稱密碼錯誤了。
Delivery for Oracle, rep_1.prm: OCI Error beginning session (status = 1017-ORA-01017: invalid username/password; logon denied),還有SYS.DBMS_STREAMS的訪問許可權不足
下面這個地方錯誤花了些時間來分析,最後才發現是自己把使用者名稱寫錯了。
先刪除,再新增
>delete replicat rep_1 新增的語句如下ogg_target.CHKPTAB是主要的地方,自己給寫錯為ggs_target了。
> ADD REPLICAT
REP_1, EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss,CHECKPOINTTABLE ogg_target.CHKPTAB
REPLICAT added.
再次啟動就沒有問題了。
> start REP_1
Sending START request to MANAGER ...
REPLICAT REP_1 starting
啟動成功後的狀態是這樣的。
> INFO REP_1
REPLICAT REP_1 Last Started 2016-11-11 17:02 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:02 ago)
Process ID 69571
Log Read Checkpoint File /home/oracle/ogg/ogg_work/dirdat/ss000000000
First Record RBA 0不過這個過程中,目標庫還沒有初始資料所以還無法同步,我們應該在目標庫先初始基礎資料,透過exp/imp,expdp/impdp都可以。
同步之後來簡單來一個小的測試。
在源端刪除表test_lock的資料
SQL> delete from test_lock;
99 rows deleted.
SQL> commit;
Commit complete.
然後在源端檢視,可以看到抽取程式的SCN開始變化
2016-11-11 17:15:04 Seqno 9417, RBA 729600
SCN 0.17848618 (17848618)
稍等一會就變為
2016-11-11 17:17:25 Seqno 9417, RBA 841728
SCN 0.17848776 (17848776)
然後檢視目標端,開始是有資料的
SQL> select count(*)from test_lock;
COUNT(*)
----------
99
稍作等待,就可以看到資料被刪除了。
SQL> /
COUNT(*)
----------
0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2128315/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 搭建oracle 11.2.0.4環境下的goldengate複製OracleGo
- 搭建一個Oracle到Oracle的GoldenGate單向複製測試環境OracleGo
- GoldenGate在異構環境下的複製Go
- GoldenGate複製的幾個簡單測試Go
- MySQL搭建帶過濾的複製環境MySql
- 生產環境搭建MySQL複製的教程MySql
- Oracle GoldenGate環境搭建OracleGo
- 快速搭建streams表級複製環境
- 生產環境中MySQL複製的搭建KPMySql
- goldengate單向複製的配置Go
- MySQL 5.5使用Xtrabackup線上搭建複製環境MySql
- 簡單搭建MySQL主從複製MySql
- GoldenGate單向複製配置(支援DDL複製)Go
- goldengate 單向複製配置Go
- GoldenGate的簡介與複製原理Go
- Redis多例項及主從複製環境搭建Redis
- MySQL 5.7 使用GTID方式搭建複製環境MySql
- Angular環境搭建及簡單體驗Angular
- Zookeeper環境搭建及簡單練習
- mongodb複製集(replica sets)+分片(sharding)環境搭建MongoDB
- 用RMAN複製 搭建 物理 Data Gurad 環境
- Windows 10環境簡單搭建ELK叢集Windows
- angular中使用Echarts(環境搭建+簡單使用)AngularEcharts
- Windows環境下ELK簡單搭建記錄Windows
- GoldenGate的複製原理Go
- aws 之 python 和 go 環境簡單搭建PythonGo
- MySQL InnoDB Cluster環境搭建和簡單測試MySql
- GoldenGate配置(一)之單向複製配置Go
- CentOS7.8 環境搭建 Redis 主從複製和哨兵模式CentOSRedis模式
- 簡易的開發環境搭建開發環境
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- 單機搭建ASM環境ASM
- Pytorch複製現有環境PyTorch
- hadoop的單機環境搭建Hadoop
- 最簡單的螢幕複製程式(象素複製) (轉)
- 通過goldengate從ORACLE向mysql的單向複製GoOracleMySql
- Dockfile搭建極簡LNMP環境LNMP