OS:Oracle Linux 6.6 x64和Windows Server 2008 R2 x64
DB:Oracle 12.1.2.0
GoldenGate:12.2.0.1.1
注意:先参考 https://blog.csdn.net/rgb_rgb/article/details/77346017
不然会掉坑!!
环境简单描述:
源端和目的端都是CDB/PDB架构,源端主库prod,目的端主库east;两端都含有名为pdb1的PDB。源端pdb1中含有名为sh的schema。
一、安装
1.1 Linux安装
环境变量:
点击( 此处 )折叠或打开
- export GGS_HOME = / u01/ggs_1
LD_LIBRARY_PATH和PATH都要加上$GGS_HOME。如果使用的是oracle用户以外的用户,需加上ORACLE_HOME和ORACLE_SID变量。
1.2 Windows安装
在系统变量中加上ORACLE_HOME和ORACLE_SID变量。
1.3 安装完成后
在命令行中进入$GGS_HOME目录,运行ggsci,创建相关subdirs
点击( 此处 )折叠或打开
- > create subdirs
二、数据库准备
源端和目的端:
先在mount下执行:
点击( 此处 )折叠或打开
- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;
- ALTER DATABASE FORCE LOGGING ;
- alter database flashback on ;
- SELECT supplemental_log_data_min , force_logging , flashback_on FROM v$ database ;
- SUPPLEME FORCE_LOGGING FLASHBACK_ON
- -------- --------------------------------------- ------------------
- YES YES YES
打开数据库:
点击( 此处 )折叠或打开
- alter database open ;
- ALTER SYSTEM SWITCH LOGFILE ;
修改参数:
点击( 此处 )折叠或打开
- alter system set ENABLE_GOLDENGATE_REPLICATION = TRUE scope = both ;
-
- / / UNDO参数修改到合适大小
- show parameter undo
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- temp_undo_enabled boolean FALSE
- undo_management string AUTO
- undo_retention integer 86400
- undo_tablespace string UNDOTBS1
用户与权限:
在源端只需要有一个Extract进程来捕获所有的PDB数据;而在目的端需要为每个PDB准备一个Replicat进程。因此在源端只需要在CDB建一个针对所有容器的DBA账户,目的端则在每个PDB建一个DBA账户。
点击( 此处 )折叠或打开
- / / 源端
- create user c##ggadm identified by ggadm ;
- grant dba to c##ggadm container = all ;
-
- / / 目的端,分别connect到每个PDB
- create user ggadm identified by ggadm ;
- grant dba to ggadm ;
-
- / / 以下两条摘自文档,但不完全包含所需的权限,比如CREATE SESSION就没有
- exec dbms_goldengate_auth . grant_admin_privilege ( 'c##ggadm' ) ;
- exec dbms_goldengate_auth . grant_admin_privilege ( 'c##ggadm' , container = > 'all' ) ;
三、用户认证
为了不在参数文件中显示密码,可以配置Credential Store。首先为其创建目录(比如/u01/ggs_1/credentialstore),然后进入ggsci:
点击( 此处 )折叠或打开
- edit params . / GLOBALS
- / / 编辑以下文字
- CREDENTIALSTORELOCATION / u01 / ggs_1 / credentialstore
退出ggsci,再重新进入,使以上参数生效,继续。
点击( 此处 )折叠或打开
- ADD CREDENTIALSTORE
-
- / / 源端为CDB和每个PDB都建立一个ALIAS
- ALTER CREDENTIALSTORE ADD USER c##ggadm PASSWORD ggadm ALIAS ggadm DOMAIN ext
- ALTER CREDENTIALSTORE ADD USER c##ggadm @ pdb1 PASSWORD ggadm ALIAS ggadm1 DOMAIN ext
-
- / / 目的端为每个PDB建立一个ALIAS
- ALTER CREDENTIALSTORE ADD USER ggadm @ pdb1 PASSWORD ggadm ALIAS ggadm1 DOMAIN rpl
- //查看配置
- info credentialstore
- //删除用户
- ALTER CREDENTIALSTORE DELETE USER ...
四、参数文件配置
4.1 源端Manager
点击( 此处 )折叠或打开
- view params mgr
-
- PORT 7809
- DYNAMICPORTLIST 7810 - 7820 , 7830
- AUTOSTART ER *
- AUTORESTART ER * , RETRIES 4 , WAITMINUTES 4
- STARTUPVALIDATIONDELAY 5
- USERIDALIAS ggadm DOMAIN ext
- PURGEOLDEXTRACTS /u01/ggs_1/dirdat/ lt * , USECHECKPOINTS , MINKEEPHOURS 2
启动Manager,start mgr
4.2 源端Extract进程
点击( 此处 )折叠或打开
- view params ext
-
- EXTRACT ext
- USERIDALIAS ggadm DOMAIN ext
- LOGALLSUPCOLS
- UPDATERECORDFORMAT COMPACT
- EXTTRAIL /u01/ggs_1/dirdat/ lt
- SOURCECATALOG pdb1
- TABLE sh . *;
4.3 源端Pump进程
点击( 此处 )折叠或打开
- view params ext_pump
-
- EXTRACT ext_pump
- USERIDALIAS ggadm DOMAIN ext
- RMTHOST WINEAST , MGRPORT 7809
- RMTTRAIL E : \ ggs_1\dirdat\rt
- SOURCECATALOG pdb1
- TABLE sh . *;
以上示例中,WINEAST是目的端主机名,在本地的/etc/hosts文件中需事先写入; E : \ ggs_1\dirdat\rt 是目的端的路径。
4.4 目的端Manager进程
点击( 此处 )折叠或打开
- view params mgr
-
- PORT 7809
- DYNAMICPORTLIST 7810 - 7820 , 7830
- STARTUPVALIDATIONDELAY 5
- USERIDALIAS ggadm1 DOMAIN rpl
目的端的Manager进程,可以用其中一个PDB的user来作为USERIDALIAS,只要权限足够即可。
然后即可启动Manager进程。
4.5 目的端Replicat进程
点击( 此处 )折叠或打开
- view params repl1
- REPLICAT repl1
- DBOPTIONS INTEGRATEDPARAMS ( parallelism 6 )
- USERIDALIAS ggadm1 DOMAIN rpl
- ASSUMETARGETDEFS
- SOURCECATALOG pdb1
- MAP sh . * , TARGET sh2 . *;
此时可以启动两端的manager进程,但目的端的replicat进程先不要启动。
五、创建进程组
5.1 源端操作
5.1.1 源端分别通过先前配置的ALIAS登录到 每个PDB ,添加每个schema的补充日志:
点击( 此处 )折叠或打开
- DBLOGIN USERIDALIAS ggadm1 DOMAIN ext
- add schematrandata SH allcols
-
- 2016 - 07 - 05 17 : 50 : 48 INFO OGG - 01788 SCHEMATRANDATA has been added on schema SH .
-
- 2016 - 07 - 05 17 : 50 : 49 INFO OGG - 01976 SCHEMATRANDATA for scheduling columns has been added on schema SH .
-
- 2016 - 07 - 05 17 : 50 : 49 INFO OGG - 01977 SCHEMATRANDATA for all columns has been added on schema SH .
5.1.2 注册Extract到每个PDB
登录到CDB
点击( 此处 )折叠或打开
- DBLOGIN USERIDALIAS ggadm DOMAIN ext
- Successfully logged into database CDB$ROOT .
-
- REGISTER EXTRACT ext DATABASE CONTAINER ( pdb1,pdb2 )
- 2016 - 06 - 21 18 : 48 : 39 INFO OGG - 02003 Extract SHGRP successfully registered with database at SCN 1905154 .
PDB需是已经存在,注册后Extract进程只会捕获列表中的PDB数据。如果以后又新增或删除了PDB,可以用命令REGISTER EXTRACT {ADD | DROP} CONTAINER。。。
5.1.3 添加Extract进程和本地Trail
登录到CDB
点击( 此处 )折叠或打开
- DBLOGIN USERIDALIAS ggadm DOMAIN ext
-
- > ADD EXTRACT ext , INTEGRATED TRANLOG , BEGIN NOW
- EXTRACT ( Integrated ) added .
-
- > ADD EXTTRAIL /u01/ggs_1 / dirdat/ lt , EXTRACT ext
- EXTTRAIL added .
5.1.4 添加Pump进程和远程Trail
点击( 此处 )折叠或打开
- > ADD EXTRACT ext_pump , EXTTRAILSOURCE /u01/ggs_1 / dirdat/ lt
- EXTRACT added .
-
- # add remote trail(source)
- > ADD RMTTRAIL E : \ ggs_1\dirdat\rt , EXTRACT ext_pump
- RMTTRAIL added .
5.2 目的端
5.2.1 添加Replicat进程
点击( 此处 )折叠或打开
- DBLOGIN USERIDALIAS ggadm1 DOMAIN rpl
-
- > ADD REPLICAT repl1 , INTEGRATED , EXTTRAIL E : \ ggs_1\dirdat\rt
- REPLICAT ( Integrated ) added .
6. 同步初始化
有条件的话可以在停止源端的情况下实现同步,这个最简单。如果不能停止源端,可按如下方式实现初始化同步。
6.1 准备Directory
两端各自在PDB中创建Directory,并在文件系统确认准备就绪:
点击( 此处 )折叠或打开
- create directory dumpdir as '/u01/pump' ;
6.2 源端确认当前SCN
点击( 此处 )折叠或打开
- select current_scn from v$ database ;
- CURRENT_SCN
- -----------
- 1816569
6.3 源端PDB导出schema
点击( 此处 )折叠或打开
- expdp system/oracle@pdb1 directory = dumpdir SCHEMAS = sh parallel = 2 dumpfile = sh_%u . dmp flashback_scn = 1816569
将导出文件发送到目的端的Directory对应路径下。
6.4 目的端PDB导入schema
这里需要先行在PDB中创建需要的表空间,否则导入会失败。用户可以不用先行创建,导入时会自动创建,但事后要grant相关权限。
另外这里使用了map。
点击( 此处 )折叠或打开
- impdp system/oracle@pdb1 directory = dumpdir REMAP_SCHEMA = sh : sh2 dumpfile = sh_01 . dmp , sh_02 . dmp logfile = sh_imp . log
6.5 键和约束
确保schema中的约束(constraint)处于Validated的状态,可以通过以下查询确认。
点击( 此处 )折叠或打开
- select CONSTRAINT_NAME , TABLE_NAME , VALIDATED from user_constraints ;
根据MOS ID 2048907.1,如果不是VALIDATED,当发生update语句时,将导致类似如下错误,导致Replicat进程中止:
点击( 此处 )折叠或打开
- ERROR OGG - 01169 Encountered an update where all key columns for target table ODSMGR . YFS_INVENTORY_SUPPLY are not present .
如果发现不是VALIDATED,按以下方式修改:
点击( 此处 )折叠或打开
- ALTER TABLE dept MODIFY CONSTRAINT dname_key VALIDATE ;
6.6 从指定SCN开始Replicat
点击( 此处 )折叠或打开
- start replicat repl1 , aftercsn 1816569
以上方法,可参考MOS ID:1276058.1
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-2121593/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22621861/viewspace-2121593/