ITPub博客

首页 > 数据库 > Oracle > 12c多租户架构下部署GoldenGate 12c

12c多租户架构下部署GoldenGate 12c

原创 Oracle 作者:hooca 时间:2016-07-06 12:17:55 0 删除 编辑

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安装
环境变量:

点击( 此处 )折叠或打开

  1. 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

点击( 此处 )折叠或打开

  1. > create subdirs

二、数据库准备

源端和目的端:
先在mount下执行:

点击( 此处 )折叠或打开

  1. ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;
  2. ALTER DATABASE FORCE LOGGING ;
  3. alter database flashback on ;
  4. SELECT supplemental_log_data_min , force_logging , flashback_on FROM v$ database ;
  5. SUPPLEME FORCE_LOGGING                                                       FLASHBACK_ON
  6. -------- --------------------------------------- ------------------
  7. YES      YES                                     YES

打开数据库:

点击( 此处 )折叠或打开

  1. alter database open ;
  2. ALTER SYSTEM SWITCH LOGFILE ;

修改参数:

点击( 此处 )折叠或打开

  1. alter system set ENABLE_GOLDENGATE_REPLICATION = TRUE scope = both ;

  2. / / UNDO参数修改到合适大小
  3. show parameter undo

  4. NAME                                  TYPE          VALUE
  5. ------------------------------------ ----------- ------------------------------
  6. temp_undo_enabled                                        boolean      FALSE
  7. undo_management                                              string          AUTO
  8. undo_retention                          integer         86400
  9. undo_tablespace                                          string          UNDOTBS1

用户与权限:
在源端只需要有一个Extract进程来捕获所有的PDB数据;而在目的端需要为每个PDB准备一个Replicat进程。因此在源端只需要在CDB建一个针对所有容器的DBA账户,目的端则在每个PDB建一个DBA账户。

点击( 此处 )折叠或打开

  1. / / 源端
  2. create user c##ggadm identified by ggadm ;
  3. grant dba to c##ggadm container = all ;

  4. / / 目的端,分别connect到每个PDB
  5. create user ggadm identified by ggadm ;
  6. grant dba to ggadm ;

  7. / / 以下两条摘自文档,但不完全包含所需的权限,比如CREATE SESSION就没有
  8. exec dbms_goldengate_auth . grant_admin_privilege ( 'c##ggadm' ) ;
  9. exec dbms_goldengate_auth . grant_admin_privilege ( 'c##ggadm' , container = > 'all' ) ;

三、用户认证

为了不在参数文件中显示密码,可以配置Credential Store。首先为其创建目录(比如/u01/ggs_1/credentialstore),然后进入ggsci:

点击( 此处 )折叠或打开

  1. edit params . / GLOBALS
  2. / / 编辑以下文字
  3. CREDENTIALSTORELOCATION / u01 / ggs_1 / credentialstore

退出ggsci,再重新进入,使以上参数生效,继续。

点击( 此处 )折叠或打开

  1. ADD CREDENTIALSTORE

  2. / / 源端为CDB和每个PDB都建立一个ALIAS
  3. ALTER CREDENTIALSTORE ADD USER c##ggadm PASSWORD ggadm ALIAS ggadm DOMAIN ext
  4. ALTER CREDENTIALSTORE ADD USER c##ggadm @ pdb1 PASSWORD ggadm ALIAS ggadm1 DOMAIN ext

  5. / / 目的端为每个PDB建立一个ALIAS
  6. ALTER CREDENTIALSTORE ADD USER ggadm @ pdb1 PASSWORD ggadm ALIAS ggadm1 DOMAIN rpl
  7. //查看配置
  8. info credentialstore
  9. //删除用户
  10. ALTER CREDENTIALSTORE DELETE USER ...

四、参数文件配置

4.1 源端Manager

点击( 此处 )折叠或打开

  1. view params mgr

  2. PORT 7809
  3. DYNAMICPORTLIST 7810 - 7820 , 7830
  4. AUTOSTART ER *
  5. AUTORESTART ER * , RETRIES 4 , WAITMINUTES 4
  6. STARTUPVALIDATIONDELAY 5
  7. USERIDALIAS ggadm DOMAIN ext
  8. PURGEOLDEXTRACTS /u01/ggs_1/dirdat/ lt * , USECHECKPOINTS , MINKEEPHOURS 2

启动Manager,start mgr

4.2 源端Extract进程

点击( 此处 )折叠或打开

  1. view params ext

  2. EXTRACT ext
  3. USERIDALIAS ggadm DOMAIN ext
  4. LOGALLSUPCOLS
  5. UPDATERECORDFORMAT COMPACT
  6. EXTTRAIL /u01/ggs_1/dirdat/ lt
  7. SOURCECATALOG pdb1
  8. TABLE sh . *;

4.3 源端Pump进程

点击( 此处 )折叠或打开

  1. view params ext_pump

  2. EXTRACT ext_pump
  3. USERIDALIAS ggadm DOMAIN ext
  4. RMTHOST WINEAST , MGRPORT 7809
  5. RMTTRAIL E : \ ggs_1\dirdat\rt
  6. SOURCECATALOG pdb1
  7. TABLE sh . *;

以上示例中,WINEAST是目的端主机名,在本地的/etc/hosts文件中需事先写入; E : \ ggs_1\dirdat\rt 是目的端的路径。

4.4 目的端Manager进程

点击( 此处 )折叠或打开

  1. view params mgr

  2. PORT 7809
  3. DYNAMICPORTLIST 7810 - 7820 , 7830
  4. STARTUPVALIDATIONDELAY 5
  5. USERIDALIAS ggadm1 DOMAIN rpl

目的端的Manager进程,可以用其中一个PDB的user来作为USERIDALIAS,只要权限足够即可。
然后即可启动Manager进程。

4.5 目的端Replicat进程

点击( 此处 )折叠或打开

  1. view params repl1
  2. REPLICAT repl1
  3. DBOPTIONS INTEGRATEDPARAMS ( parallelism 6 )
  4. USERIDALIAS ggadm1 DOMAIN rpl
  5. ASSUMETARGETDEFS
  6. SOURCECATALOG pdb1
  7. MAP sh . * , TARGET sh2 . *;

此时可以启动两端的manager进程,但目的端的replicat进程先不要启动。

五、创建进程组

5.1 源端操作
5.1.1 源端分别通过先前配置的ALIAS登录到 每个PDB ,添加每个schema的补充日志:

点击( 此处 )折叠或打开

  1. DBLOGIN USERIDALIAS ggadm1 DOMAIN ext
  2. add schematrandata SH allcols

  3. 2016 - 07 - 05 17 : 50 : 48  INFO    OGG - 01788  SCHEMATRANDATA has been added on schema SH .

  4. 2016 - 07 - 05 17 : 50 : 49  INFO    OGG - 01976  SCHEMATRANDATA for scheduling columns has been added on schema SH .

  5. 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

点击( 此处 )折叠或打开

  1. DBLOGIN USERIDALIAS ggadm DOMAIN ext
  2. Successfully logged into database CDB$ROOT .

  3. REGISTER EXTRACT ext DATABASE CONTAINER ( pdb1,pdb2 )
  4. 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

点击( 此处 )折叠或打开

  1. DBLOGIN USERIDALIAS ggadm DOMAIN ext

  2. > ADD EXTRACT ext , INTEGRATED TRANLOG , BEGIN NOW
  3. EXTRACT ( Integrated ) added .

  4. > ADD EXTTRAIL /u01/ggs_1 / dirdat/ lt , EXTRACT ext
  5. EXTTRAIL added .

5.1.4 添加Pump进程和远程Trail

点击( 此处 )折叠或打开

  1. > ADD EXTRACT ext_pump , EXTTRAILSOURCE /u01/ggs_1 / dirdat/ lt
  2. EXTRACT added .

  3. # add remote trail(source)
  4. > ADD RMTTRAIL E : \ ggs_1\dirdat\rt , EXTRACT ext_pump
  5. RMTTRAIL added .

5.2 目的端
5.2.1 添加Replicat进程

点击( 此处 )折叠或打开

  1. DBLOGIN USERIDALIAS ggadm1 DOMAIN rpl

  2. > ADD REPLICAT repl1 , INTEGRATED , EXTTRAIL E : \ ggs_1\dirdat\rt
  3. REPLICAT ( Integrated ) added .

6. 同步初始化
有条件的话可以在停止源端的情况下实现同步,这个最简单。如果不能停止源端,可按如下方式实现初始化同步。

6.1 准备Directory
两端各自在PDB中创建Directory,并在文件系统确认准备就绪:

点击( 此处 )折叠或打开

  1. create directory dumpdir as '/u01/pump' ;

6.2 源端确认当前SCN

点击( 此处 )折叠或打开

  1. select current_scn from v$ database ;
  2. CURRENT_SCN
  3. -----------
  4.     1816569

6.3 源端PDB导出schema

点击( 此处 )折叠或打开

  1. 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。

点击( 此处 )折叠或打开

  1. 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的状态,可以通过以下查询确认。

点击( 此处 )折叠或打开

  1. select CONSTRAINT_NAME , TABLE_NAME , VALIDATED from user_constraints ;

根据MOS ID 2048907.1,如果不是VALIDATED,当发生update语句时,将导致类似如下错误,导致Replicat进程中止:

点击( 此处 )折叠或打开

  1. ERROR OGG - 01169 Encountered an update where all key columns for target table ODSMGR . YFS_INVENTORY_SUPPLY are not present .

如果发现不是VALIDATED,按以下方式修改:

点击( 此处 )折叠或打开

  1. ALTER TABLE dept MODIFY CONSTRAINT dname_key VALIDATE ;

6.6 从指定SCN开始Replicat

点击( 此处 )折叠或打开

  1. start replicat repl1 , aftercsn 1816569

以上方法,可参考MOS ID:1276058.1 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-2121593/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 12c ASM中创建ACFS
请登录后发表评论 登录
全部评论

注册时间:2009-09-29

  • 博文量
    210
  • 访问量
    378343