搭建GoldenGate的单向复制环境
配置环境:
建议在相同版本OGG(即Oracle GoldenGate)之间进行复制,我在这里之所以选择不同版本的OGG,便于后续的比较学习。
一、准备OGG的运行用户
在这里,我直接使用Oracle用户作为OGG的运行用户。
二、确认OGG的安装目录
在源端,即Linux环境下,我选择/u01/app/goldengate作为OGG的安装目录,注意:/u01/app/goldengate目录的属主必须为OGG的运行用户,在这里,该目录的属主必须为oracle。
在目标端,即Win环境下,我选择G:\app\goldengate作为OGG的安装目录
三、打开数据库的归档模式
SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 5 Current log sequence 7 SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL> alter database open;
四、打开源端数据库最小附加日志
因为这里搭建的只是单向复制,OGG捕捉的是源端数据库的更改,所以只需对源端数据库开启最小附加日志
SQL> select supplemental_log_data_min from v$database; SUPPLEME -------- NO SQL> alter database add supplemental log data; Database altered. SQL> alter system switch logfile; --切换日志使附加日志生效 System altered.
五、在数据库中建立OGG用户并赋予响应的权限
为了简化授权,直接将dba角色赋予给gg用户。
SQL> create user gg identified by gg; SQL> grant dba to gg;
六、上传软件包到指定目录,进行安装
在源端:
[oracle@node1 ~]$ cd /u01/app/goldengate/ [oracle@node1 goldengate]$ ls ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip [oracle@node1 goldengate]$ unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip Archive: ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.1.pdf inflating: Oracle GoldenGate 11.2.1.0.1 README.txt inflating: Oracle GoldenGate 11.2.1.0.1 README.doc [oracle@node1 goldengate]$ tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
在当前目录下,执行ggsci命令
[oracle@node1 goldengate]$ ./ggsci ./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
报以上错误,在/home/oracle/.bash_profile添加如下内容:export LD_LIBRARY_PATH=$ORACLE_HOME/lib,添加完毕后,记得使配置文件生效:source /home/oracle/.bash_profile。
注意:为了ggsci命令在任何目录下可以执行,可在/home/oracle/.bash_profile设置如下环境变量:
export GG_HOME=/u01/app/goldengate
export PATH=$GG_HOME:$PATH
重新执行ggsci命令
[oracle@node1 goldengate]$ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (node1.being.com) 1>
表示进入成功
在ggsci环境下创建GoldenGate子目录
[oracle@node1 goldengate]$ ggsci GGSCI (node1.being.com) 1> create subdirs Creating subdirectories under current directory /u01/app/goldengate Parameter files /u01/app/goldengate/dirprm: already exists Report files /u01/app/goldengate/dirrpt: created Checkpoint files /u01/app/goldengate/dirchk: created Process status files /u01/app/goldengate/dirpcs: created SQL script files /u01/app/goldengate/dirsql: created Database definitions files /u01/app/goldengate/dirdef: created Extract data files /u01/app/goldengate/dirdat: created Temporary files /u01/app/goldengate/dirtmp: created Stdout files /u01/app/goldengate/dirout: created
在目标端:即Win8环境下,注意,Win8的OGG版本是12.1.2.1.0,需图形界面安装,而11.2.1.0.1则不需要,直接解压缩即可。
将12.1.2.1.0版本的OGG解压缩以后,双击里面的setup文件。
第一步:选择OGG对应的数据库版本
第二步:指定OGG的运行目录
其它直接点击下一步即可。
安装完毕后,会启动一个mgr进程的窗口。
同样需要在目标端ggsci环境下创建GoldenGate子目录,因该OGG安装完毕后,以上目录均已自动创建,故不再创建。
七、配置Manager进程
在ggsci环境下配置Manager进程
源端配置如下:
[oracle@node1 goldengate]$ ggsci GGSCI (node1.being.com) 1> edit param mgr GGSCI (node1.being.com) 2> start mgr Manager started. GGSCI (node1.being.com) 3> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING --可见MGR进程已启动
目标端同样如此。
八、在源端上添加表级附加日志
为了验证搭建的效果,在这里我们新建一个test用户,并新建一张test表。
SQL> create user test identified by test; User created. SQL> grant connect,resource to test; Grant succeeded. SQL> conn test/test Connected. SQL> create table test (id number); Table created.
在ggsci命令行中登录数据库,为所有需要复制的表添加trandata
GGSCI (node1.being.com) 1> dblogin userid gg,password gg Successfully logged into database. GGSCI (node1.being.com) 2> add trandata test.* 2015-08-24 18:14:59 WARNING OGG-00869 No unique key is defined for table 'TEST'. 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 TEST.TEST.
从上面的WARNING我们可以看出,因为test表没有唯一性约束,故OGG将该行的所有列来作为它的唯一性约束。