一直以来就想测试这个功能,通过DIPC直接把数据库的数据同步到ADW上,但是一直有些问题没有解决,今天在同事们的热心帮助下,终于搞定了,感谢集体的力量。
心情无比澎湃,赶快记录下来。
测试架构如下:
初次测试的时候,可以通过DIPC建立ADW的连接,通过DIPC建立数据复制的时候,数据投递进程无法启动,报错信息如下:
ERROR OGG-00662 Oracle GoldenGate Delivery for Oracle, repadw.prm: OCI Error allocatingerror handle (status = -2).
我们在Oracle的support网站上看到了对这个问题的解决方法。这是因为DIPC的agent上的GoldenGate版本不支持ADW,需要先给GoldenGate打上一个补丁,补丁编号如下:Doc ID 2503322.1。
完成这个测试的主要步骤如下:
1. GoldenGate打补丁
1) 下载GoldenGate的补丁
2) 把补丁文件上传到安装DIPC的agent的服务器上的一个临时目录
3) 解压缩补丁文件
4) 重要步骤,把OPach16和oui目录拷贝到DIPC的agent的gghome目录中
5) 开始打补丁
cd<agent_install_loc>/dicloud/gghome
./ggsci
ggsci>stop extract *
ggsci>stop replicat*
ggsci>stop manager!
ggsci>stop pmsrvr
ggsci>exit
exportORACLE_HOME=`pwd`
sed -i"s#inventory_loc=.*#inventory_loc=$(pwd)/../oraInvGG123for12#"oraInst.loc
sed -i"s#LOC=\".*\" TYPE#LOC=\"$(pwd)\" TYPE#" ../oraInvGG123for12/ContentsXML/inventory.xml
cd OPatch16/29266457
../opatch apply,一路yes,就可以打上补丁了
6) 测试是否成功打上补丁
cd <agent_install_loc>/dicloud/gghome
./replicate –v
显示如下信息,表示补丁已经成功应用。
Oracle GoldenGate Delivery for Oracle
Version12.3.0.1.4 28966487_FBO
Linux, x64, 64bit(optimized), Oracle 12c on Jan 28 2019
13:54:15
Copyright (C) 1995, 2018,Oracle and/or its affiliates. All rights reserved.
2. 在DIPC上配置源端数据库连接
1) 建立源端数据库CDB链接
Type: choose OracleCDB
Username: fill the CDB user we have created. Here we use c##ggsrcService Name: Find it in source TNS file.
建立成功后,显示内容如下:
2)建立PDB数据库链接
For connection Settings, please note that:
Username: c##ggsrc
Schema name: C##GGSRC
CDB Connection: DB121Src-CDB
到此所有数据库链接建立完毕,显示内容如下:
3. 在DIPC上配置ADW的连接
1) 解锁ADW上的ggadmin数据库用户
alter user ggadmin identified by password account unlock;
GRANT UNLIMITED TABLESPACE data TO ggadmin;
2) 在DIPC上配置ADW的链接
这个设置很简单,注意的地方是数据库的连接用户必须是ggadmin,其他用户会报错。选择连接ADW的Wallet文件,ADW成功连接后,选择Service_name、Connection URL还有schema_Name的信息,然后保存连接配置。
4. 在DIPC上配置从源端数据库到ADW的数据复制
1) 建立Replicate data任务
点击Design按钮,进入数据复制设置页面,设置数据源和目标
点击保存和运行按钮,数据复制任务开始运行。
过几分钟DIPC的数据复制任务开始运行了,这个时候可能replicate进程可能会报错,我们需要登录到DIPC的agent服务器上,为replicate进程增加2个环境变量参数。
cd<agent_install_loc>/dicloud/gghome/dirrpm
vi rep进程的参数文件,为rep进程增加如下的参数:
replicat R7192119
setenv(TNS_ADMIN="/u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin")
setenv(ORACLE_HOME="/u01/app/oracle/product/12.2.0.1/dbhome_1")
useridaliasGGALIASTGT_CLASSIC_TESTADW
reportcount every 15minutes, rate
ddl include mapped
MAP PDB1.SOURCE.*,TARGET USER_TARGET.*;
保存,重新启动rep进程。
cd ..
./ggsci
GGSCI>start rep R7615408
GGSCI>info R7615408
进程成功启动了
5. 测试数据同步效果
在源端pdb上执行DML操作,在ADW上查看数据被成功复制过来。
源端:
增加empno是8的记录。
目标端:
我们再DIPC的控制台,也看到了这个insert操作被成功的复制到了ADW环境。
解决了这个问题,以后才从本地同步数据到ADW的时候就可以避免过多的认为操作,以后再从本地数据库向ADW同步数据,变得VERY EASY!!!