zoukankan      html  css  js  c++  java
  • 12c多租户架构下部署GoldenGate12c

    环境简单描述:源端和目的端都是CDB/PDB架构,源端主库PDB$SEED,目的端主库PDB$SEED;两端都含有名为pdborclall的PDB。源端pdborclall中含有名为zyj的schema。

    一、安装
    1.1 Linux安装
    --环境变量:
    export GGS_HOME = / u01/ggs_1
    LD_LIBRARY_PATH和PATH都要加上$GGS_HOME。如果使用的是oracle用户以外的用户,需加上ORACLE_HOME和ORACLE_SID变量。
    1、静默安装:
    --11g数据库选择ORA11g,12C选择ORA12c
    mkdir -p /home/oracle/ogg12
    cd /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/
    --11g数据库选择ORA11g,12C选择ORA12c
    vi oggcore.rsp

    INSTALL_OPTION=ORA12c
    SOFTWARE_LOCATION=/home/oracle/ogg12

    --开始安装
    /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller -silent -nowait -responseFile /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

    --检测是否正常安装
    cd /home/oracle/ogg12
    ldd ggsci

    1.2 Windows安装
    在系统变量中加上ORACLE_HOME和ORACLE_SID变量。

    1.3 安装完成后
    --在命令行中进入$GGS_HOME目录,运行ggsci,创建相关subdirs
    cd /ogg
    create subdirs

    二、数据库准备
    源端和目的端:
    shutdown immediate
    startup mount
    alter database archivelog;
    alter database flashback on;
    alter database open;
    show pdbs
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;
    ALTER DATABASE FORCE LOGGING ;
    SELECT supplemental_log_data_min , force_logging , flashback_on FROM v$database ;
    alter database open ;
    ALTER SYSTEM SWITCH LOGFILE ;

    --修改参数:12.1无此参数
    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' ) ;
    --ORA-06550: line 1, column 79:
    exec dbms_goldengate_auth . grant_admin_privilege ( 'c##ggadm' , container = > 'all' ) ;

    三、用户认证
    --为了不在参数文件中显示密码,可以配置Credential Store
    mkdir -p /home/oracle/ogg12/credentialstore
    ./ggsci
    edit params ./GLOBALS
    --编辑以下文字
    CREDENTIALSTORELOCATION /home/oracle/ogg12/credentialstore
    --退出ggsci,再重新进入,使以上参数生效
    exit
    ggsci
    ADD CREDENTIALSTORE

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

    / / 目的端为每个PDB建立一个ALIAS
    ALTER CREDENTIALSTORE ADD USER ggadm@pdborclall PASSWORD ggadm ALIAS ggadm1 DOMAIN rpl
    --若需要delete credentialstore
    ALTER CREDENTIALSTORE delete USER ggadm@pdborclall alias ggadm1 domain rp
    //查看配置
    info credentialstore
    //删除用户
    ALTER CREDENTIALSTORE DELETE USER ...

    四、参数文件配置
    --创建测试表
    --source
    create table zyj.A34
    (
    id INTEGER,
    name VARCHAR2(4),
    addr VARCHAR2(4)
    )
    tablespace USERS;

    create table zyj.tab1
    (
    id INTEGER,
    name VARCHAR2(4),
    addr VARCHAR2(4)
    )
    tablespace USERS;

    insert into zyj.a34 select 1,'n1','a1' from dual;
    insert into zyj.a34 select 2,'n2','a2' from dual;
    insert into zyj.tab1 select 1,'n1','a1' from dual;
    insert into zyj.tab1 select 2,'n2','a2' from dual;
    commit;
    ----------------------------------------
    --target
    create table zyj2.A34
    (
    id INTEGER primary key,
    name VARCHAR2(4),
    addr VARCHAR2(4)
    )
    tablespace USERS;

    create table zyj2.tab1
    (
    id INTEGER,
    name VARCHAR2(4),
    addr VARCHAR2(4)
    )
    tablespace USERS;

    4.1 源端Manager
    edit params mgr

    PORT 7809
    DYNAMICPORTLIST 7810-7820 , 7830
    AUTOSTART ER *
    AUTORESTART ER * , RETRIES 4 , WAITMINUTES 4
    STARTUPVALIDATIONDELAY 5
    USERIDALIAS ggadm DOMAIN ext
    PURGEOLDEXTRACTS /home/oracle/ogg12/dirdat , USECHECKPOINTS , MINKEEPHOURS 2

    --启动Manager
    start mgr

    4.2 源端Extract进程
    edit params ext

    EXTRACT ext
    USERIDALIAS ggadm DOMAIN ext
    LOGALLSUPCOLS
    UPDATERECORDFORMAT COMPACT
    EXTTRAIL /home/oracle/ogg12/dirdat/lt
    SOURCECATALOG PDBORCLALL
    TABLE zyj.*;

    4.3 源端Pump进程
    --以上示例中,WINEAST是目的端主机名,在本地的/etc/hosts文件中需事先写入
    edit params ext_pump

    EXTRACT ext_pump
    USERIDALIAS ggadm DOMAIN ext
    RMTHOST 192.168.92.19, MGRPORT 7809
    RMTTRAIL /home/oracle/ogg12/dirdat/rt
    SOURCECATALOG PDBORCLALL
    TABLE zyj.*;

    4.4 目的端Manager进程
    --目的端的Manager进程,可以用其中一个PDB的user来作为USERIDALIAS,只要权限足够即可。
    edit params mgr

    PORT 7809
    DYNAMICPORTLIST 7810-7820 , 7830
    STARTUPVALIDATIONDELAY 5
    USERIDALIAS ggadm1 DOMAIN rpl

    --启动Manager进程。
    start mgr

    4.5 目的端Replicat进程
    --此时可以启动两端的manager进程,但目的端的replicat进程先不要启动。
    edit params repl1

    REPLICAT repl1
    DBOPTIONS INTEGRATEDPARAMS ( parallelism 6 )
    USERIDALIAS ggadm1 DOMAIN rpl
    ASSUMETARGETDEFS
    SOURCECATALOG PDBORCLALL
    MAP zyj.* , TARGET zyj2.*;

    五、创建进程组
    5.1 源端操作
    5.1.1 源端分别通过先前配置的ALIAS登录到 每个PDB ,添加每个schema的补充日志:
    DBLOGIN USERIDALIAS ggadm1 DOMAIN ext
    add schematrandata zyj 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
    REGISTER EXTRACT ext DATABASE CONTAINER ( pdborclall )

    --注册后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
    ADD EXTTRAIL /home/oracle/ogg12/dirdat/lt , EXTRACT ext

    5.1.4 添加Pump进程和远程Trail
    ADD EXTRACT ext_pump , EXTTRAILSOURCE /home/oracle/ogg12/dirdat/lt
    --add remote trail(source)
    ADD RMTTRAIL /home/oracle/ogg12/dirdat/rt , EXTRACT ext_pump

    5.2 目的端
    5.2.1 添加Replicat进程
    DBLOGIN USERIDALIAS ggadm1 DOMAIN rpl
    ADD REPLICAT repl1 , INTEGRATED , EXTTRAIL /home/oracle/ogg12/dirdat/rt

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

    6.1 准备Directory
    --两端各自在PDB中创建Directory,并在文件系统确认准备就绪:
    ho mkdir -p /home/oracle/ogg12/pump
    create directory dumpdir as '/home/oracle/ogg12/pump';
    grant read,write on directory dumpdir to public;

    6.2 源端确认当前SCN 2089096
    select current_scn from v$database ;
    CURRENT_SCN
    -----------
    1816569

    6.3 源端PDB导出schema
    expdp system/oracle@pdborclall directory=dumpdir SCHEMAS=zyj parallel=2 dumpfile=sh_%u.dmp flashback_scn=2089096
    --将导出文件发送到目的端的Directory对应路径下。

    6.4 目的端PDB导入schema
    这里需要先行在PDB中创建需要的表空间,否则导入会失败。用户可以不用先行创建,导入时会自动创建,但事后要grant相关权限。另外这里使用了map。
    --dumpfile=sh_01.dmp,sh_02.dmp
    impdp system/oracle@pdborclall directory=dumpdir REMAP_SCHEMA=zyj:zyj2 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 2089096
    --以上方法,可参考MOS ID:1276058.1

    --启动extract报错:ERROR OGG-02912 Patch 17030189 is required on your Oracle mining database for
    trail format RELEASE 12.2 or later.
    sqlplus / as sysdba
    @prvtlmpg.plb

  • 相关阅读:
    太鼓达人
    DB2中循环日期跑数据
    DB2分区表删除和添加分区
    DB2日常运维之总结(转)
    oracle SQL not in null,单列,复合列
    利用rlwrap配置linux下oracle sqlplus 历史记录回调
    Oracle非默认监听的处理会遇到的问题以及处理方法
    Sqlserver循环嵌套
    rman全备份异机恢复
    Windows系统下Oracle数据库冷备
  • 原文地址:https://www.cnblogs.com/buffercache/p/11671887.html
Copyright © 2011-2022 走看看