<< Oracle高可用>>部分书面作业 - 第十一课 Oracle Golden gate 设计及应用

1.不使用数据泵完成Oracle-Oracle的双向复制。


数据库配置:

ogg1和ogg2都启用归档和supplemental log:

SQL> alter database archivelog;

Database altered.

SQL> archive log list;
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3
SQL> alter database add supplemental log data;

Database altered.

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
YES

SQL>


ogg1上建立ogg和sender用户, sender下建立t1表:

SQL> create user ogg identified by oracle;

User created.

SQL> create user sender identified by oracle;

User created.

SQL> grant dba to ogg,sender;

Grant succeeded.

SQL> conn sender/oracle
Connected.
SQL> create table t1(id int);

Table created.

SQL>


ogg2上建立ogg和receiver用户, receiver下建立t1表:

SQL> create user ogg identified by oracle;

User created.

SQL> create user receiver identified by oracle;

User created.

SQL> grant dba to ogg,receiver;

Grant succeeded.

SQL> conn receiver/oracle
Connected.
SQL> create table t1(id int);

Table created.

SQL>


OGG配置(oggdb1 -> oggdb2):


ogg1配置

GGSCI (ogg1) 1> add extract ext1,tranlog,begin now
EXTRACT added.


GGSCI (ogg1) 3> add exttrail /opt/ogg/dirdat/e1,extract ext1
EXTTRAIL added.


GGSCI (ogg1) 15> view params ext1

extract ext1
TRANLOGOPTIONS EXCLUDEUSER ogg
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb1,password oracle
rmthost ogg2,mgrport 7809
rmttrail /opt/ogg/dirdat/e1
table sender.t1;


GGSCI (ogg1) 2> start extract ext1

Sending START request to MANAGER ...
EXTRACT EXT1 starting


GGSCI (ogg1) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EXT1        00:00:00      00:06:31    


GGSCI (ogg1) 5>


ogg2配置:

GGSCI (ogg2) 22> dblogin userid ogg@oggdb2 password oracle
Successfully logged into database.

GGSCI (ogg2) 23> add checkpointtable ogg.checkpoint

Successfully created checkpoint table ogg.checkpoint.

GGSCI (ogg2) 1> add replicat rep1,exttrail /opt/ogg/dirdat/e1,checkpointtable ogg.checkpoint
REPLICAT added.


GGSCI (ogg2) 24> view params rep1

replicat rep1
ASSUMETARGETDEFS
HANDLECOLLISIONS
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb2,password oracle
map sender.t1,target receiver.t1;


GGSCI (ogg2) 25> start replicat rep1

Sending START request to MANAGER ...
REPLICAT REP1 starting


GGSCI (ogg2) 26> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     REP1        00:00:00      00:00:01    


GGSCI (ogg2) 27>


OGG配置(oggdb2 -> oggdb1):

ogg2:

GGSCI (ogg2) 6> ADD EXTRACT ext2, TRANLOG, BEGIN now
EXTRACT added.


GGSCI (ogg2) 7> ADD RMTTRAIL /opt/ogg/dirdat/e2, EXTRACT ext2
RMTTRAIL added.


GGSCI (ogg2) 8> edit params ext2



GGSCI (ogg2) 9> view params ext2

extract ext2
TRANLOGOPTIONS EXCLUDEUSER ogg
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb2,password oracle
rmthost ogg1,mgrport 7809
rmttrail /opt/ogg/dirdat/e2
table receiver.t1;


GGSCI (ogg2) 10> start extract ext2

Sending START request to MANAGER ...
EXTRACT EXT2 starting


GGSCI (ogg2) 11> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EXT2        00:00:00      00:00:44    
REPLICAT    RUNNING     REP1        00:00:00      00:00:10    


GGSCI (ogg2) 12>

ogg1:

GGSCI (ogg1) 6> dblogin userid ogg@oggdb1 password oracle
Successfully logged into database.

GGSCI (ogg1) 7> ADD CHECKPOINTTABLE ogg.checkpoint

Successfully created checkpoint table ogg.checkpoint.

GGSCI (ogg1) 8> ADD REPLICAT rep2, EXTTRAIL /opt/ogg/dirdat/e2, BEGIN now
ERROR: No checkpoint table specified for ADD REPLICAT.


GGSCI (ogg1) 9> ADD REPLICAT rep2,EXTTRAIL /opt/ogg/dirdat/e2,checkpointtable ogg.checkpoint
REPLICAT added.


GGSCI (ogg1) 15> edit params rep2



GGSCI (ogg1) 16> view params rep2

replicat rep2
ASSUMETARGETDEFS
HANDLECOLLISIONS
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb1,password oracle
map receiver.t1,target sender.t1;


GGSCI (ogg1) 17> start replicat rep2

Sending START request to MANAGER ...
REPLICAT REP2 starting


GGSCI (ogg1) 18> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EXT1        00:00:00      00:00:09    
REPLICAT    RUNNING     REP2        00:00:00      00:00:01    


GGSCI (ogg1) 19>


验证:

ogg1上插入一条数据:

SQL> insert into t1 values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

    ID
----------
     1

SQL>


ogg2上插入另一条数据, 查询发现ogg1上传过来的数据和新插入的数据:

SQL> insert into t1 values(2);

1 row created.

Commit complete.

SQL> select * from t1;

    ID
----------
     1
     2

SQL>



ogg1再次查询,发现ogg2的数据传到了ogg1上:

SQL> select * from t1;

    ID
----------
     1
     2

SQL>



--EOF--


2.使用数据泵进行Oracle-Oracle的单向复制。

为简化流程,这里继续沿用第一题的DB环境, 仅贴出ogg配置流程,复制方向为ogg1->ogg2.


ogg1:

为避免干扰先停掉第一题的extract和replicat进程:

GGSCI (ogg1) 19> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT1        00:00:00      00:00:05    
REPLICAT    STOPPED     REP2        00:00:00      00:00:02    


GGSCI (ogg1) 20> ADD EXTRACT ext3, TRANLOG, BEGIN now
EXTRACT added.


GGSCI (ogg1) 21> ADD EXTTRAIL /opt/ogg/dirdat/e3, EXTRACT ext3
EXTTRAIL added.


GGSCI (ogg1) 22> edit params ext3



GGSCI (ogg1) 23> view params ext3

extract ext3
TRANLOGOPTIONS EXCLUDEUSER ogg
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb1,password oracle
exttrail /opt/ogg/dirdat/e3
table sender.t1;


GGSCI (ogg1) 24> ADD EXTRACT pump3, EXTTRAILSOURCE /opt/ogg/dirdat/e3, BEGIN now
EXTRACT added.


GGSCI (ogg1) 25> ADD RMTTRAIL /opt/ogg/dirdat/p3, EXTRACT pump3
RMTTRAIL added.


GGSCI (ogg1) 26> edit params pump3



GGSCI (ogg1) 27> view params pump3

extract pump3
TRANLOGOPTIONS EXCLUDEUSER ogg
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb1,password oracle
rmthost ogg2,mgrport 7809
rmttrail /opt/ogg/dirdat/p3

table sender.t1;


GGSCI (ogg1) 28> start extract ext3

Sending START request to MANAGER ...
EXTRACT EXT3 starting


GGSCI (ogg1) 29> start extract pump3

Sending START request to MANAGER ...
EXTRACT PUMP3 starting


GGSCI (ogg1) 30> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT1        00:00:00      00:10:54    
EXTRACT     RUNNING     EXT3        00:01:33      00:00:04    
EXTRACT     RUNNING     PUMP3       00:00:00      00:01:00    
REPLICAT    STOPPED     REP2        00:00:00      00:10:50    


GGSCI (ogg1) 31>


ogg2:

dblogin userid ogg@oggdb2 password oracle
ADD CHECKPOINTTABLE ogg.checkpoint

GGSCI (ogg2) 20> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT2        00:00:00      00:00:25    
REPLICAT    STOPPED     REP1        00:00:00      00:00:20    


GGSCI (ogg2) 21> ADD REPLICAT rep3,EXTTRAIL /opt/ogg/dirdat/p3,checkpointtable ogg.checkpoint
REPLICAT added.


GGSCI (ogg2) 22> edit params rep3       



GGSCI (ogg2) 23> view params rep3

replicat rep3
ASSUMETARGETDEFS
HANDLECOLLISIONS
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb2,password oracle
map sender.t1,target receiver.t1;


GGSCI (ogg2) 24> start replicat rep3

Sending START request to MANAGER ...
REPLICAT REP3 starting


GGSCI (ogg2) 25> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT2        00:00:00      00:12:50    
REPLICAT    STOPPED     REP1        00:00:00      00:12:45    
REPLICAT    RUNNING     REP3        00:00:00      00:00:01    


GGSCI (ogg2) 26>


验证:

ogg1插入一条数据并提交:

SQL> select * from t1;

no rows selected

SQL> insert into t1 values(3);

1 row created.

SQL> commit;

Commit complete.

SQL>


ogg2在几秒之后即可查到ogg1传过来的数据

SQL> select * from t1;

    ID
----------
     3

SQL>


--EOF--


3.完成Oracle-MySQL的单向复制。

为减少流程,继续沿用第一题的环境,同时在ogg2主机上启用mysqld服务,并创建同步所需要的表和db:

mysql> show databases;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.00 sec)

mysql> create database mydb;
Query OK, 1 row affected (0.00 sec)

mysql> use mydb;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table t1(id int);
Query OK, 0 rows affected (0.03 sec)

mysql> select * from t1;
Empty set (0.00 sec)

mysql> exit
Bye
[oracle@ogg2 ogg]$

复制方向: ogg1(oracle) -> ogg2(mysql)

ogg1:

GGSCI (ogg1) 32> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT1        00:00:00      00:13:48    
EXTRACT     RUNNING     EXT3        00:00:04      00:00:03    
EXTRACT     RUNNING     PUMP3       00:00:00      00:00:02    
REPLICAT    STOPPED     REP2        00:00:00      00:13:45    


GGSCI (ogg1) 33> ADD EXTRACT ext2my, TRANLOG, BEGIN now
EXTRACT added.


GGSCI (ogg1) 34> ADD RMTTRAIL /opt/oggmy/dirdat/em, EXTRACT ext2my
RMTTRAIL added.


GGSCI (ogg1) 35> edit params ext2my



GGSCI (ogg1) 36> view params ext2my

extract ext2my
TRANLOGOPTIONS EXCLUDEUSER ogg
SETENV(NLS_LANG="AMERICAN_AMERICA.UTF8")
userid ogg@oggdb1,password oracle
rmthost ogg2,mgrport 7809
rmttrail /opt/oggmy/dirdat/em
table sender.t1;


GGSCI (ogg1) 38> edit params defgen



GGSCI (ogg1) 39> view params defgen

DEFSFILE /opt/ogg/dirdat/ext2my.def
userid ogg@oggdb1,password oracle
table sender.t1;


GGSCI (ogg1) 40> start extract ext2my

Sending START request to MANAGER ...
EXTRACT EXT2MY starting


GGSCI (ogg1) 41> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXT1        00:00:00      01:03:41    
EXTRACT     RUNNING     EXT2MY      00:00:00      00:03:44    
EXTRACT     RUNNING     EXT3        00:00:00      00:00:09    
EXTRACT     RUNNING     PUMP3       00:00:00      00:00:05    
REPLICAT    STOPPED     REP2        00:00:00      01:03:37    


GGSCI (ogg1) 42> exit
[oracle@ogg1 ogg]$ defgen paramfile /opt/ogg/dirprm/defgen.prm

***********************************************************************
        Oracle GoldenGate Table Definition Generator for Oracle
      Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
   Linux, x64, 64bit (optimized), Oracle 10g on Apr 23 2012 05:09:39
 
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.


                    Starting at 2013-08-31 18:57:14
***********************************************************************

Operating System Version:
Linux
Version #1 Mon Apr 20 10:22:29 EDT 2009, Release 2.6.9-89.EL
Node: ogg1
Machine: x86_64
                         soft limit   hard limit
Address Space Size   :    unlimited    unlimited
Heap Size            :    unlimited    unlimited
File Size            :    unlimited    unlimited
CPU Time             :    unlimited    unlimited

Process id: 6592

***********************************************************************
**            Running with the following parameters                  **
***********************************************************************
DEFSFILE /opt/ogg/dirdat/ext2my.def
userid ogg@oggdb1,password ******
table sender.t1;
Retrieving definition for SENDER.T1

2013-08-31 18:57:16  WARNING OGG-00869  No unique key is defined for table 'T1'. All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.



Definitions generated for 1 table in /opt/ogg/dirdat/ext2my.def

[oracle@ogg1 ogg]$ scp /opt/ogg/dirdat/ext2my.def ogg2:/opt/oggmy/dirdat/ext2my.def
ext2my.def                                                                                        100%  910     0.9KB/s   00:00    
[oracle@ogg1 ogg]$

ogg2:

下载并解压ogg for mysql至/opt/oggmy目录.

[oracle@ogg2 oggmy]$ ./ggsci

Oracle GoldenGate Command Interpreter for MySQL
Version 11.1.1.1.1 OGGCORE_11.1.1.1.1_PLATFORMS_110729.1700
Linux, x64, 64bit (optimized), MySQL Enterprise on Jul 29 2011 22:29:06

Copyright (C) 1995, 2011, Oracle and/or its affiliates. All rights reserved.



GGSCI (ogg2) 20> view params mgr

PORT 7810


GGSCI (ogg2) 11> view param rep2my

replicat rep2my
sourcedefs /opt/oggmy/dirdat/ext2my.def
setenv(NLS_LANG="ENGLISH_UNITED KINDOM.UTF8")
APPLYNOOPUPDATES
HANDLECOLLISIONS
SOURCEDB mydb, USERID root, PASSWORD 1234
discardfile /opt/oggmy/dirdat/rep2my_discard.txt,append,megabytes 10
map sender.t1,target mydb.t1;


GGSCI (ogg2) 9> start manager

Manager started.


GGSCI (ogg2) 12> start replicat rep2my

Sending START request to MANAGER ...
REPLICAT REP2MY starting


GGSCI (ogg2) 19> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    STOPPED     REP2MY      00:00:00      00:37:24    


GGSCI (ogg2) 20>



REPLICAT - REP2MY一直起不来,试过不同的linux和mysql版本,始终报如下相同的错误,不知何故?

[oracle@ogg2 oggmy]$ tail ggserr.log
2013-08-31 19:56:16  INFO    OGG-00975  Oracle GoldenGate Manager for MySQL, mgr.prm:  REPLICAT REP2MY starting.
2013-08-31 19:56:16  INFO    OGG-00995  Oracle GoldenGate Delivery for MySQL, rep2my.prm:  REPLICAT REP2MY starting.
2013-08-31 19:56:16  ERROR   OGG-00303  Oracle GoldenGate Delivery for MySQL, rep2my.prm:  Problem at line 27.  Expecting file, table, or record definition.
2013-08-31 19:56:16  ERROR   OGG-01668  Oracle GoldenGate Delivery for MySQL, rep2my.prm:  PROCESS ABENDING.
2013-08-31 20:04:27  INFO    OGG-00987  Oracle GoldenGate Command Interpreter for MySQL:  GGSCI command (oracle): start replicat rep2my.
2013-08-31 20:04:27  INFO    OGG-00963  Oracle GoldenGate Manager for MySQL, mgr.prm:  Command received from GGSCI on host 192.168.1.122 (START REPLICAT REP2MY ).
2013-08-31 20:04:27  INFO    OGG-00975  Oracle GoldenGate Manager for MySQL, mgr.prm:  REPLICAT REP2MY starting.
2013-08-31 20:04:27  INFO    OGG-00995  Oracle GoldenGate Delivery for MySQL, rep2my.prm:  REPLICAT REP2MY starting.
2013-08-31 20:04:27  ERROR   OGG-00303  Oracle GoldenGate Delivery for MySQL, rep2my.prm:  Problem at line 27.  Expecting file, table, or record definition.
2013-08-31 20:04:27  ERROR   OGG-01668  Oracle GoldenGate Delivery for MySQL, rep2my.prm:  PROCESS ABENDING.
[oracle@ogg2 oggmy]$


--EOF--


4.完成Oracle分别向Oracle和mysql双路的单向复制。

可在源端配置两个extract, 一个为Oracle->Oracle,一个为Oracle->mysql,目标端分别配置Oracle和mysql的replicat,详细步骤即为第2和第3题,因此不再重复.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值