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增量同步过程:

12c向19c迁移:OGG基本配置_第1张图片

源端(左):

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 [email protected]: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 [email protected]: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 [email protected]: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 [email protected]: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 [email protected]: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 [email protected]: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 [email protected]: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 [email protected]: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.

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

你可能感兴趣的:(Oracle,oracle,数据库)