• 12c向19c迁移:OGG基本配置


    目录

    配置源端(Oracle 12c)数据库,增加补充日志并开启归档日志:

    配置目标端(Oracle 19c)数据库:

    安装(Oracle 12c)源端OGG:

    安装(Oracle 19c)目标端OGG:

    配置源端(Oracle 12c)OGG:

    配置目标端(Oracle 19c)OGG:

    例子

    高版本(19c)向低版本(12c)同步



    下图1->2->3->4->5->6->7->8->9是OGG增量同步过程:

    源端(左):

    Extract进程通过分析Oracle redo/archive日志,捕获数据变更,结果写到Trail文件,Data pump进程读取Trail文件发给目标端。

    目标端(右):

    collector进程接收Trail文件并写到目标端目录,Replicat进程读取Trail,转换为对目标端数据库的操作。

    除了下图的Extract进程、Data pump进程、collector进程、Replicat进程和Trail文件,在源端和目标端还需开启manager进程,它负责控制Extract、Data pump、collecor和Replicat。

    配置源端(Oracle 12c)数据库,增加补充日志并开启归档日志:

    SHUTDOWN IMMEDIATE

    STARTUP MOUNT

    ALTER SYSTEM SET log_archive_dest='/mnt/disk01/oracle_archive_log';

    ALTER DATABASE ARCHIVELOG;

    ALTER SYSTEM SET enable_goldengate_replication=TRUE;

    (否则会有ERROR   OGG-02091  Operation not supported because enable_goldengate_replication is not set to true.)

    ALTER DATABASE FORCE LOGGING;

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    ALTER DATABASE OPEN;

    ARCHIVE LOG LIST;

    配置目标端(Oracle 19c)数据库:

    alter system set enable_goldengate_replication=true scope=both;

    这个参数不需要重启数据库就可以生效。

    否则Replicat启动失败,报错:

    ERROR   OGG-02091  Operation not supported because enable_goldengate_replication is not set to true.

    安装(Oracle 12c)源端OGG:

    我的源端和目标端都安装一样的OGG版本:

    213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip

    下载地址:

    Oracle GoldenGate Downloads

    以oracle用户解压213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip

    unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip -d ogg-for-oracle

    cd ogg-for-oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response

    修改配置文件:

    cp oggcore.rsp oggcore-setup.rsp

    vim oggcore-setup.rsp

    修改下面几项:

    INSTALL_OPTION=ora21c

    SOFTWARE_LOCATION=/mnt/disk01/INSTALLED_OGG21C

    START_MANAGER=false

    然后执行:

    cd ogg-for-oracle/fbo_ggs_Linux_x64_shiphome/Disk1

    ./runInstaller -silent -responseFile /mnt/disk01/ogg-for-oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore-setup.rsp

    等待直到打印 “ The installation of Oracle GoldenGate Core was successful. ” 表示安装完成。

    OGG将安装在/mnt/disk01/INSTALLED_OGG21C目录下。

    配置环境变量:

    export OGG_HOME=/mnt/disk01/INSTALLED_OGG21C

    export LD_LIBRARY_PATH=/mnt/disk01/INSTALLED_OGG21C:$LD_LIBRARY_PATH

    export PATH=/mnt/disk01/INSTALLED_OGG21C:$PATH

    安装(Oracle 19c)目标端OGG:

    以oracle用户解压213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip

    unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip -d ogg-for-oracle

    cd ogg-for-oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response

    修改配置文件:

    cp oggcore.rsp oggcore-setup.rsp

    vim oggcore-setup.rsp

    修改下面几项:

    INSTALL_OPTION=ora21c

    SOFTWARE_LOCATION=/mnt/disk01/INSTALLED_OGG21C

    START_MANAGER=false

    然后执行:

    cd ogg-for-oracle/fbo_ggs_Linux_x64_shiphome/Disk1

    ./runInstaller -silent -responseFile /mnt/disk01/ogg-for-oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore-setup.rsp

    等待直到打印 “ The installation of Oracle GoldenGate Core was successful. ” 表示安装完成。

    OGG将安装在/mnt/disk01/INSTALLED_OGG21C目录下。

    配置环境变量:

    export OGG_HOME=/mnt/disk01/INSTALLED_OGG21C

    export LD_LIBRARY_PATH=/mnt/disk01/INSTALLED_OGG21C:$LD_LIBRARY_PATH

    export PATH=/mnt/disk01/INSTALLED_OGG21C:$PATH

    配置源端(Oracle 12c)OGG:

    进入安装目录$OGG_HOME,执行ggsci启动OGG终端GGSCI,所有配置和操作都在这个终端下进行。

    第一步、创建子目录

    GGSCI > create subdirs

    第二步、配置manager,编辑manager配置文件

    GGSCI > edit param mgr

    PORT 7809     --监听端口

    AUTOSTART ER *

    AUTORESTART ER *

    启动manager

    GGSCI > start manager

    关闭manager

    GGSCI > stop manager

    第三步、用户登录数据库

    GGSCI的有些操作,需要以数据库用户连接到数据库,建议使用被迁移数据库的用户,只要确保有足够权限就行,例如,在我的Oracle中主要使用数据库用户paastest,在GGSCI中尝试连接:

    GGSCI >dblogin userid paastest@172.32.150.13:1521/nlpass01 password Paas1015

    第四步、编辑Extract配置文件

    文件名随便取(这里是extora),最好和Extract组名相同,编辑完退出后,会在$OGG_HOME/dirprm目录下创建名为extora.prm的文本文件:

    GGSCI >edit param extora

    EXTRACT extora -- Extract组名

    -- 客户端的编码,如果oracle字符串编码不是UTF8会转为UTF8

    SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")  

    -- 连接Oracle服务器的信息,最好OGG与Oracle安装在同一台机器上

    USERID paastest@172.32.150.13:1521/nlpass01, PASSWORD Paas1015

    -- discard文件,出错时可查看详细信息

    DISCARDFILE ./dirrpt/extora.dsc, APPEND, MEGABYTES 1024

    -- Trail文件路径,会生成多个Trail文件,文件名为前缀ex+文件编号

    EXTTRAIL /mnt/disk03/ogg_trail/ex

    --支持truncate

    GETTRUNCATES

    -- 捕获delete、update不使用压缩方式

    NOCOMPRESSDELETES FETCHMISSINGCOLUMNS

    NOCOMPRESSDELETES

    NOCOMPRESSUPDATES

    -- 需要捕获的表,每个表一行,全部列出包含schema名

    TABLE PAASTEST.ACT_EVT_LOG;

    .....

    更详细的命令和参数说明,参考:Summary of Oracle GoldenGate Commands

    第五步、创建Extract组

    一个Extract组代表一个Extract进程,前面的Extract配置文件需要与Extract组关联,步骤如下:

    先在GGSCI中连接Oracle

    GGSCI >DBLOGIN USERID PAASTEST@172.32.150.13:1521/nlpass01 PASSWORD Paas1015

    创建心跳表,用于监控同步进度,这步可选,但最好加上,后面监控会方便很多

    GGSCI >ADD HEARTBEATTABLE

    执行add extract命令,创建Extract组,前面配置文件里的组名,要与这里的组名相同,表示配置文件用于这个组:

    GGSCI (dkapp12 as PAASTEST@nlpass01) >ADD EXTRACT extora,TRANLOG,BEGIN NOW

    GGSCI (dkapp12 as PAASTEST@nlpass01) >ADD EXTRACT extora,TRANLOG,BEGIN 2022-09-15 16:00

    注册extract组:

    GGSCI (dkapp12 as PAASTEST@nlpass01) >register extract extora, database

    否则启动Extract时,会有报错ERROR OGG-02022 Logmining server does not exist on this Oracle database

    删除Extract组:

    -- 连接源端数据库

    GGSCI >DBLOGIN USERID PAASTEST@172.32.150.13:1521/nlpass01 PASSWORD Paas1015

    GGSCI >DELETE EXTRACT extora

    GGSCI (dkapp12 as PAASTEST@nlpass01) >unregister extract extora, database

    查看状态:

    GGSCI >info extora

    第六步、创建Trail文件:

    GGSCI >ADD EXTTRAIL /mnt/disk03/ogg_trail/ex, EXTRACT extora, MEGABYTES 200

    解释:增量数据都缓存在里面,Trail文件会有多个,以ex开头,放在目录/mnt/disk03/ogg_trail/下,请确保目录所在磁盘足够大,”EXTRACT extora”将Trail文件和Extract组关联,MEGABYTES 200表示每个Trail文件200M。

    删除Trail文件:

    DELETE EXTTRAIL /mnt/disk03/ogg_trail/ex

    rm /mnt/disk03/ogg_trail/ex*

    第七步、创建Data Pump配置文件

    文件名随便取(这里是pumpora),建议与Data Pump组名相同:

    GGSCI >edit param pumpora

     -- Data Pump组名称

    EXTRACT pumpora

    SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

    -- 不处理数据,直接转发给目标端

    PASSTHRU

    -- RMTHOST是目标端IP,MGRPORT是目标端manager监听端口(在manager配置文件中配置),

    RMTHOST 172.32.148.156, MGRPORT 1357

    -- 目标端Trail文件所在目录,也可以用相对目录,相对于OGG安装目录

    RMTTRAIL /mnt/disk01/ogg_trail/re

    -- 注意,目标端的trail文件是re开头的

    -- 需要转发给目的端的表名,每个表一行,包括schema名称

    TABLE PAASTEST.ACT_EVT_LOG;

    ......

    第八步、创建Data Pump组

    仅仅创建Data Pump配置文件还不够,还需创建Data Pump组,与前面配置文件关联,步骤如下:

    执行add extract命令创建Data Pump组,一个Data Pump组代表一个Data Pump进程,Data Pump进程也是一种Extract进程,只因配置不同而功能不同。

    前面配置文件里的组名,要与这里的组名pumpora相同,表示配置文件用于这个组,EXTTRAILSOURCE是Extract在本地产生的Trail文件:

    GGSCI >ADD EXTRACT pumpora, EXTTRAILSOURCE /mnt/disk03/ogg_trail/ex

    创建远程(目标端)Trail文件路径,这个命令将远程Trail文件与Data Pump组关联:

    GGSCI >ADD RMTTRAIL /mnt/disk01/ogg_trail/re, EXTRACT pumpora, MEGABYTES 200

    删除pumpExtract组:

    DELETE EXTRACT pumpora

    删除远程Trail文件:

    DELETE RMTTRAIL /mnt/disk01/ogg_trail/re

    第九步、启动Extract开始捕获变更

    GGSCI >start extora

    查看Extract状态:

    GGSCI >help

    GGSCI >stats extora

    GGSCI >status extora

    查看 extora 是否成功运行,如果成功运行则trail目录下应该有生成文件

    GGSCI >info all
    GGSCI >info extora

    GGSCI >lag extract*

    如果出错,查看错误内容:

    GGSCI >view report extora

    第十步、启动data pump

    (注意:要先启动目标端的manager

    GGSCI >start pumpora

    查看data pump状态:

    GGSCI >stats pumpora

    如果要重新从第一个Trail文件的头部开始pump,就要删除pump组再重建。

    pump主要就是把Extract产生的Trail文件复制到目标端的指定目录下。

    如果要重新开始捕获,也要删除extract组再重建,同时要删除Trail文件,远程Trail文件也要删除。

    配置目标端(Oracle 19c)OGG:

    进入安装目录$OGG_HOME,执行ggsci启动OGG终端GGSCI,所有配置和操作都在这个终端下进行。

    第一步、创建子目录

    GGSCI > create subdirs

    第二步、配置manager,编辑manager配置文件:

    GGSCI > edit param mgr

    PORT 1357     --监听端口

    AUTOSTART ER *

    AUTORESTART ER *

    ACCESSRULE, PROG *, IPADDR *, ALLOW

    $OGG_HOME/GLOBALS中设置全局参数ALLOWOUTPUTDIR,这样manager可以在RMTTRAIL目录下创建文件,否则会有报错:OGG-01223  Output file /data3/ogg_trail/re000000 is not in any allowed output directories

    参考:OGG-01031 Output file is not in any allowed output directories - ORACLE-SCN

    GGSCI > edit param ./GLOBALS

    ALLOWOUTPUTDIR /mnt/disk01/ogg_trail

    启动manager

    GGSCI > start manager

    关闭manager

    GGSCI > stop manager

    查看manager状态

    GGSCI > info manager

    第三步、用户登录数据库:

    GGSCI的有些操作,需要以数据库用户连接到数据库,建议使用被迁移数据库的用户,只要确保有足够权限就行,例如,在我的Oracle中主要使用数据库用户paastest,在GGSCI中尝试连接:

    GGSCI >dblogin userid paastest@172.32.148.156:1521/nlpass01 password Paas1015

    第四步、创建checkpoint表

    checkpoint表就是一个普通的表,目标端Replicat从Trail文件提取变更,应用到目标端数据库,进度就保存在checkpoint表里。

    GGSCI >add checkpointtable paastest.checkpointtab

    这个命令会在登录用户paastest的schema下创建名为checkpointtab的表。

    select * from paastest.checkpointtab;

    删除checkopint

    delete checkpointtable paastest.checkpointtab

    如果Replicat想要从头再次应用Trail文件,可以删除或清空checkpoint表,然后调整Replicat进程读取Trail的指针:

    alter replora, extseqno 0, extrba 0

    replora是Replicat组名(也可以理解成Replicat进程名)。

    extseqno是Trail文件的编号,就是文件名的数字部分。

    extrba 是记录(事务?)在Trail文件内的偏移,rba表示relative byte address。

    再start replora

    第五步、确认有swap分区

    实践中发现Replicat需要有swap分区,如果已经有swap分区,这一步可以不用管,如果没有,创建一个文件作为swap分区,例如,创建一个16G的文件/mnt/disk01/swapfile作为swap分区。

    root用户执行:

    dd if=/dev/zero of=/mnt/disk01/swapfile bs=1M count=16K

    chmod -R 0600 /mnt/disk01/swapfile

    mkswap /mnt/disk01/swapfile

    swapon /mnt/disk01/swapfile

    # 开机启动swap分区

    vim /etc/fstab

      /mnt/disk01/swapfile swap swap defaults 0 0

    swapon -s

    第六步、创建Replicat配置文件

    GGSCI >edit param replpg

    REPLICAT replora  -- Replicat组名

    -- 连接Oracle数据库的信息

    USERID paastest@172.32.148.156:1521/nlpass01, PASSWORD Paas1015

    DISCARDFILE ./dirrpt/replora.dsc, APPEND, MEGABYTES 1024

    GETTRUNCATES

    ALLOWNOOPUPDATES

    INSERTMISSINGUPDATES

    RESTARTCOLLISIONS

    HANDLECOLLISIONS

    -- 映射源数据库和目标数据库的表,必须要有,否则报错:

    -- ERROR   OGG-00052  No replication maps specified.

    MAP PAASTEST.*, TARGET PAASTEST.*;

    这里不需要太多的映射,也没有使用表定义文件,因为表定义包含在Trail文件里了:

    可以这样做的前提是,之前的impdp执行的很成功。

    第七步、创建Replicat

    Replicat组是Replicat进程的逻辑表示,Replicat组需要与Replicat配置文件关联:

    GGSCI > add replicat replora, exttrail /mnt/disk01/ogg_trail/re, begin 2022-09-15 16:00​​​​​​​, checkpointtable paastest.checkpointtab

    exttrail 指源端data pump发来的Trail文件的路径,就是源端data pump配置文件中RMTTRAIL的路径。

    删除Replicat组

    dblogin userid paastest@172.32.148.156:1521/nlpass01 password Paas1015

    delete replicat replora

    第八步、启动Replicat

    GGSCI >start replora

    查看Replicat状态:

    GGSCI >stats replora

    GGSCI >info replora

    GGSCI >view report replora

    例子

    -- 源端extract

    dblogin userid paastest@172.32.150.13:1521/nlpass01 password Paas1015
    edit param ext07
    ADD EXTRACT ext07,TRANLOG,begin now
    register extract ext07, database
    ADD EXTTRAIL /mnt/disk03/ogg_trail/07, EXTRACT ext07, MEGABYTES 200

    -- 源端pump
    edit param pup07
    ADD EXTRACT pup07, EXTTRAILSOURCE /mnt/disk03/ogg_trail/07
    ADD RMTTRAIL /mnt/disk01/ogg_trail/07, EXTRACT pup07, MEGABYTES 200
    start ext07
    start pup07

    -- 目标端 replicat

    add checkpointtable paastest.checkpointtab
    edit param rpl07
    add replicat rpl07, exttrail /mnt/disk01/ogg_trail/07, begin 2022-09-19 14:08, checkpointtable paastest.checkpointtab

    高版本(19c)向低版本(12c)同步

    19c(OGG源端)向12c(目的端)同步呢?会不会有兼容性问题,我使用的是OGG版本:

    Oracle GoldenGate Command Interpreter for Oracle
    Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210728.1047_FBO
    Oracle Linux 7, x64, 64bit (optimized), Oracle Database 21c and lower supported versions on Jul 29 2021 03:59:23
    Operating system character set identified as UTF-8.

    初步测试,没有兼容性问题。

  • 相关阅读:
    opencv图像数组坐标系
    轻量容器引擎Docker安装及其架构
    2-MySQL的基本操作记录
    MySQL8修改密码
    【Linux系统】第一篇:基础指令篇
    Mysql.索引篇 一次搞清楚八股文
    对某钓鱼样本分析
    多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)
    leetcode做题笔记2736. 最大和查询
    软件协会第01次活动第03次任务布置:图床配置+Typora主题+三大基本结构练习
  • 原文地址:https://blog.csdn.net/howard_shooter/article/details/126847760