配置ogg異構oracle到mysql
最近研究了一下oracle Goldengate異構同步的過程, 真是幾天不用手生,敲命令竟然如此生疏。不過還算順利,經過一番折騰終於好了。
環境描述:
192.0.2.101( Oracle ) —> 192.0.2.102 (Mysql )
版本:
作業系統:redhat6.5
Oracle : 12.1.0.2.0
Mysql: 5.6.25
goldgate:
Version 12.2.0.1.1 for oracle
Version 12.2.0.1.1 for mysql
測試使用者:
在oracle建立2個使用者,並建立了2張表,同步到mysql test資料庫下。
Oracle to Mysql 需要注意的地方:
Supported data types for mysql :
CHAR |
DOUBLE |
TINYTEXT |
VARCHAR |
DATE |
MEDIUMTEXT |
INT |
TIME |
LONGTEXT |
TINYINT |
YEAR |
BLOB |
SMALL INT |
DATETIME |
TINYBLOB |
MEDIUM INT |
TIMESTAMP |
MEDIUMBLOB |
BIG INT |
BINARY |
LONGBLOB |
DECIMAL |
VARBINARY |
ENUM |
FLOAT |
TEXT |
BIT(M) |
Oracle GoldenGate supports InnoDB storage engine for a source MySQL database
goldengate
對mysql只支援innodb引擎
所以,在建立mysql端的表的時候,要指定表為innodb引擎。但是5.6預設的儲存引擎就是InnoDB。
一:Oracle端的基礎配置
初始化ogg
/u01/ogg/dbhome
[oracle@host01 dbhome]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO
Linux, x64, 64bit (optimized), Oracle 12c on Dec 12 2015 02:56:48
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
GGSCI (host01.example.com) 1>
GGSCI (host01.example.com) 9> create subdirs
1.1. 修改oracle資料庫的引數
1.2 修改資料庫為歸檔模式
1.3 開啟輔助日誌
alter database add supplemental log data
1.34 關閉回收站
alter system set recyclebin=off scope=both; (10g以後可以不關閉)
下面報錯以上由於沒設引數以及授予許可權,
OGG REPLICAT abend:
ERROR OGG-01820 Could not enable workspace.
ERROR OGG-01668 PROCESS ABENDING.
透過設定alter system set enable_goldengate_replication=true scope=both ;解決
1.5 建立複製用的使用者,並授權
create tablespace oggtb datafile '/u01/app/oracle/oradata/PROD4/oggtb01.dbf' size 1g ;
create tablespace oggtb datafile '/u01/app/oracle/oradata/EMREP/oggtb01.dbf' size 1g ;
create user ogg identified by ogg default tablespace oggtb;
grant connect,resource to ogg;
grant unlimited tablespace to ogg;
grant execute on utl_file to ogg;
在ogg的安裝目錄下登陸sqlplus,使用sys登陸sqlplus,然後執行如下配置
[oracle@local ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> @marker_setup.sql
SQL> @ddl_setup.sql;
SQL> @role_setup.sql;
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable.sql;
進入ogg控制檯,測試使用者是否建立成功
GGSCI (local) 1> dblogin userid ogg
Password: ogg
Successfully logged into database.
由於異構資料庫之間不支援ddl複製,mysql也沒有Oracle使用的
sequence
,所以資料庫上不需要啟用DDL
複製支援和
Sequence
複製支援。(上邊步驟可以省略)
二:target 端(Mysql)
2.1 配置Mysql引數
Mysql
的引擎很多,但是OGG只支援Innodb 的引擎,所以需要修改mysql的配置檔案開啟
binary
logging,
在
/
etc
/
my.conf
檔案中新增如下內容
log-bin=/u01/mysql/log/binary-log
log-bin-index=/u01/mysql/log/binary-log.index
binlog_format
=
row
說明:
1
.
設為
row
使得dml語句以
binary
格式記入日誌,任何其他日誌格式(mixed或
statement
)將引起
extract
程式停止。因為ogg支援InfoDB。
2
.
這裡直接將Mysql預設的引擎改成INNODB了,當然也可以在建立表的時候修改。
-- 重啟mysql資料庫:
[root@host02 ~]# msyqladmin shutdown
[root@host02 ~]# mysqld_safe &
建立測試資料庫test和表 zw ,tt
createtable zw(id integer primarykey,name varchar(20));
mysql> create table tt (id varchar(1));
Query OK, 0 rows affected (0.07 sec)
2.2 修改ogg引數
GGSCI (host02.example.com) 1> dblogin sourcedb test,userid root,password root123
GGSCI (host02.example.com) 1> edit params mgr
port 7808
GGSCI (host02.example.com) 2> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
三、配置同步source
GGSCI (host01.example.com) 1> add extract extmy3,tranlog,begin now
ADD EXTTRAIL /u01/ogg/dbhome/dirdat/E3, EXTRACT EXTMY3, megabytes 100
GGSCI (host01.example.com) 2> view param extmy3
extract extmy3
userid ogg,password ogg
exttrail /u01/ogg/dbhome/dirdat/E3
table test.zw;
table hr.tt;
--fetchoptions fetchpkupdatecols
GGSCI (host01.example.com) 3>
在source 端新增 datapump程式
GGSCI (host01.example.com) 3> add extract pumpmy3,exttrailsource /u01/ogg/dbhome/dirdat/E3
add rmttrail /u01/oggmysql/dirdat/R3,extract pumpmy3
GGSCI (host01.example.com) 4> view param pumpmy3
extract pumpmy3
rmthost 192.0.2.102,mgrport 7808
rmttrail /u01/oggmysql/dirdat/R3
passthru
gettruncates
table test.zw;
table hr.tt;
info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT ABENDED DPEA 00:00:00 95:05:49
EXTRACT ABENDED EXTA 00:00:00 95:05:54
EXTRACT RUNNING EXTMY3 00:00:00 00:00:08
EXTRACT ABENDED HRDPEA 00:00:00 95:05:49
EXTRACT ABENDED HREXTA 00:00:00 95:05:54
EXTRACT RUNNING PUMPMY3 00:00:00 00:00:05
配置 defegn
因為這裡是oracle到mysql的同步,所以要生成異構的檔案,並將檔案複製到target端的dirdef目錄下
在Oracle資料庫執行
GGSCI (host01.example.com) 7> edit param defgen
userid ogg,password ogg
defsfile /u01/ogg/dbhome/dirdef/oracle.def
table test.zw;
table hr.tt
出現如下錯:
OGG-00396 Command not terminated by semi-colon.
ERROR OGG-01668 PROCESS ABENDING.
原因是配置檔案中沒有以分號結尾;
解決辦法:修改配置檔案。
defgen paramfile /u01/ogg/dbhome/dirprm/defgen.prm
scp oracle.def
四: target 端配置replicat程式
修改mysql密碼
target 端配置replicat程式
mysqladmin -u root password "root123"
-- 建立 checkpointtable
GGSCI (host02.example.com DBLOGIN as root) 4> dblogin sourcedb test,userid root,password root123
Successfully logged into database.
add checkpointtable test.checkpoint
GGSCI (host02.example.com DBLOGIN as root) 5> add replicat r3,exttrail /u01/oggmysql/dirdat/R3,checkpointtable test.checkpoint
-- 修改引數
GGSCI (host02.example.com DBLOGIN as root) 6> view param R3
replicat R3
dboptions host localhost,connectionport 3306
targetdb test,userid root,password root123
sourcedefs /u01/oggmysql/dirdef/oracle.def
handlecollisions
assumetargetdefs
discardfile /u01/oggmysql/dirrpt/R3.dsc,append,megabytes 50
map test.zw,target test.zw;
map hr.tt,target test.tt;
GGSCI (host02.example.com DBLOGIN as root) 7> start r3
五: 測試
SQL> insert into hr.tt values ('3');
1 row created.
SQL>
SQL> commit ;
mysql> select * from test.tt;
+------+
| id |
+------+
| 2 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
select * from test.zw ;
ID NAME
---------- --------------------
1 missa
2 rita
3 ardu
SQL> insert into test.zw values (5,'ogg');
1 row created.
SQL> commit ;
Commit complete.
SQL> select * from test.zw ;
ID NAME
---------- --------------------
1 missa
2 rita
3 ardu
5 ogg
select * from test.zw;
+----+------+
| id | name |
+----+------+
| 3 | ardu |
+----+------+
1 row in set (0.00 sec)
mysql> select * from test.zw;
+----+------+
| id | name |
+----+------+
| 3 | ardu |
| 5 | ogg |
+----+------+
2 rows in set (0.00 sec)
delete from test.zw where id='3';
1 row deleted.
SQL> commit ;
Commit complete.
SQL> /
Commit complete.
SQL> select * from test.zw ;
ID NAME
---------- --------------------
1 missa
2 rita
5 ogg
mysql> select * from test.zw;
+----+------+
| id | name |
+----+------+
| 5 | ogg |
+----+------+
1 row in set (0.00 sec)
至此,源端就配置完畢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10201716/viewspace-2939705/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle GoldenGate 異構平臺同步(Mysql到Oracle)OracleGoMySql
- Linux下配置ORACLE-MYSQL 資料庫異構LinuxOracleMySql資料庫
- 配置OGG到MYSQL複製時登陸MYSQL報錯解決MySql
- OGG 12c mysql複製到oracle部署方案MySqlOracle
- 藉助ogg完成oracle到mysql的資料遷移OracleMySql
- Goldengate異構oracle->mysql搭建GoOracleMySql
- OGG_mysql 12c複製到OGG_oracle 11g部署方案MySqlOracle
- 配置ORACLE資料庫到達夢資料庫的異構DBLINKOracle資料庫
- OGG Oracle 分割槽壓縮表 到 MySQL分表的實現OracleMySql
- LINUX 環境 mysql to mysql OGG安裝配置(二)LinuxMySql
- EOS 區塊鏈資料實時異構到 MySQL區塊鏈MySql
- OGG19.1 oracle12c到oracle12c經典模式配置實施Oracle模式
- OGG 表結構變化導致同步異常
- ogg12 mysql to oracle 單向同步MySqlOracle
- 使用SQL Developer 遷移異構資料庫到OracleSQLDeveloper資料庫Oracle
- 從 SQL Server 到 MySQL (一):異構資料庫遷移ServerMySql資料庫
- 兩臺ORACLE之間配置OGG-未配置同步DDLOracle
- MySQL + Oracle GoldenGate + OGG Application AdpaterMySqlOracleGoAPP
- Goldengate異構 mysql——>oraclGoMySql
- ogg for oracle 19c 非cdb安裝配置Oracle
- 異構資料庫資料遷移 oracle to mysql之oracle sqlloader和mysql load data資料庫OracleMySql
- OGG到hadoopHadoop
- Oracle 11g RAC到單例項OGG同步Oracle單例
- OGG 12c MySQL to MySQLMySql
- 使用ogg 從oracle 同步mysql遇到問題記錄OracleMySql
- Oracle OGG 到 Kafka OGG-01431 OGG-01003 OGG-01151 OGG-01296 OGG-01668OracleKafka
- 異構資料庫的關聯查詢 oracle hsodbc 關聯mysql資料庫OracleMySql
- Oracle DG異構主備支援Oracle
- oracle to mysql的gg配置OracleMySql
- 模擬oracle rac節點異常時如何保持ogg正常執行Oracle
- 【OGG】RAC環境下配置OGG單向同步 (四)
- oracle時間格式記錄異常導致OGG複製程式報錯Oracle
- MySQL異構資料同步–tair為例MySqlAI
- OGG 的配置:不使用資料泵完成Oracle-Oracle的雙向複製。Oracle
- 在異構平臺配置Oracle11gR2 Streams同時再配置相同平臺的Oracle11gR2 DataguardOracle
- ORACLE與MYSQL程式碼開發差異OracleMySql
- Oracle OGG日常維護Oracle
- 【DG】Oracle11g異構平臺之Linux To Windows DataGuard安裝配置--duplicateOracleLinuxWindows