说明
1.1 数据库国产化背景Oracle迁移到PostgreSQL/LightDB
OGG软件长度:Oracle GoldenGate V11.2.1.0.1 for Oracle 10g on Linux x86-64 84.7 MB
使用OGG+ora2pg迁移
源库:centos 7 单节点Oracle 19c
目标库:centos 7 单节点LightDB22.1
软件目标数据库和OG
2.创建OGG安装目录()1
源和目标两台服务器都需要创建ogg的安装目录ggs_Linux_x64_PostgreSQL_64bit.tar
V983658-01.zip
2.2创建ogg的管理用户,使用oracle作为ogg的管理用户。(源端)
在oracle环境变量配置文件中增加以下内容:
导出编辑器=vi
导出 GGATE=/home/oracle/ogg19c
导出 NLS_LANG=AMERICAN_AMERICA.AL32UTF8
导出 ORACLE_BASE=/u01/app/oracle
导出 ORACLE_HOME=/home/oracle
导出 ORACLE_SID=test
导出 PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GGATE:$PATH
导出 LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:$GGATE:$LD_LIBRARY_PATH
别名 sqlplus='rlwrap sqlplus'
别名 ggsci='rlwrap ggsci'
2.3建立OGG表空间和用户(源端)
创建表空间 ogg 数据文件 '/data2/oradata/TEST/ogg01.dbf' 大小 50M 自动扩展;
创建由 ogg 默认表空间 ogg 标识的用户 ogg;
授予连接,资源到 ogg;
grant select any dictionary, select any table to ogg;
将任何表授予 ogg 闪回;
在 dbms_flashback 上授予对 ogg 执行;
将 ALTER ANY TABLE 授予 ogg;
授予向ogg插入任何表;
授予更新任何表到 ogg;
授予 ogg 删除任何表;
授予创建表,创建序列给ogg;
将 utl_file 上的执行权限授予 ogg;
2.4 添加附加日志和强制记录,并切换日志(源端)
如果源端未开启归档,需添加多组日志。
更改数据库强制记录;
更改数据库添加补充日志数据;
SQL> 从 v$database 中选择 NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN;
名称 OPEN_MODE FORCE_LOGGING SUPPLEME
--------- -------- ----------- ------
ORCL 读写 是 是
2.5 创建OGG的管理工作目录(源端)
在OGG流程之前,首先需要配置创建OGG的管理目录,执行以下操作:
ggsci
GGSCI (hs-10-20-30-199) 2> 创建子目录
##19c会默认创建,不需要执行
提交事务的记录只是被授予。只是提交、投递、应用日志的单位是记录,只是跟踪文件。
2.6配置MGR参数文件,并启动mgr(源端)
mgr是这些的管理和进程进程,目标端的mgr进程进程还与源端进行
源端:
编辑参数经理
端口 7809
PURGEOLDEXTRACTS /home/oracle/ogg19c/dirdat/*,USECHECKPOINTS, minkeepdays 7
——不清除轨迹文件
AUTORESTART EXTRACT *,重试 3,WAITMINUTES 5,RESETMINUTES 60
GGSCI (hs-10-20-30-199) 6> 开始经理
GGSCI (hs-10-20-30-199) 7> 全部信息
2.7添加extract(进程源端)
是的进程5 (ORA 2的时候:需要提取数据的时候需要传输数据(需要提取进程的时候为启动点,添加进程的
开始 时间))
2847434.1)
测试 =
(描述=
(地址 =(协议 = TCP)(主机 = 10.20.30.199)(端口 = 1521))
(连接数据 =
(服务器 = 专用)
(SERVICE_NAME = 测试)
)
)
配置提取进程
编辑参数 ext_1
提取 ext_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
SETENV (ORACLE_HOME=/home/oracle)
SETENV (ORACLE_SID=测试)
用户名 ogg,密码 ogg
丢弃文件 /home/oracle/ogg19c/dirrpt/ext_1.dsc,APPEND,MEGABYTES 1024
EXTTRAIL /home/oracle/ogg19c/dirdat/aa
表 ta6_pub11*;
# 创建提取组;
添加 EXTRACT ext_1,TRANLOG,现在开始
# 创建本地路径文件
添加 EXTTRAIL /home/oracle/ogg19c/dirdat/aa,提取 ext_1,MEGABYTES 5
# 启动解压进程
开始提取 ext_1
GGSCI (hs-10-20-30-199) 16> 信息全部
自 Chkpt 以来 Chkpt 时间的程序状态组滞后
经理运行
提取运行 EXT_1 00:00:15 00:00:02
2.8 投递进程(源端)
递递进程:
编辑参数 pump_1
# 将内容复制到文件内,酌情修改参数保存
提取泵_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
直通
RMTHOST 10.20.30.199,MGRPORT 7810
RMTTRAIL /home/lightdb/ogg/dirdat/pa
表 ta6_pub11.*;
# 使用 add extract 指定本地路径文件
添加 EXTRACT pump_1,EXTTRAILSOURCE /home/oracle/ogg19c/dirdat/aa
# 用 add rmttrail 指定远程路径文件
添加 RMTTRAIL /home/lightdb/ogg/dirdat/pa,提取 pump_1,MEGABYTES 5
# 启动Pump进程
开始提取泵_1
2.9 生成定义文件
在多个精细的同步复制中;需要数据不同的数据库。
# 编辑参数文件
GGSCI (oracle221) 16> 编辑参数 defgen
# 参数文件内容
defsfile /home/oracle/ogg19c/dirdef/defgen.def
用户名 ogg,密码 ogg
表 ta6_pub11.*;
#退出ggsci命令
GGSCI (oracle221) 17> 退出
#root用户下生成文件
defgen 参数文件 /home/oracle/ogg19c/dirprm/defgen.prm
[oracle@hs-10-20-30-199 ogg19c]$ defgen 参数文件 /home/oracle/ogg19c/dirprm/defgen.prm
****************************************************** ************************
适用于 Oracle 的 Oracle GoldenGate 表定义生成器
版本 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054
Linux,x64,64bit(优化),Oracle 19c 2019 年 10 月 17 日 15:32:20
版权所有 (C) 1995、2019,Oracle 和/或其附属公司。版权所有。
2022-06-30 10:31:23 开始
****************************************************** ************************
操作系统版本:
Linux
版本 #1 SMP 2021 年 4 月 28 日星期三 21:49:45 UTC,版本 3.10.0-1160.25.1.el7.x86_64
节点:hs-10-20-30-199
机器:x86_64
软限制硬限制
地址空间大小:无限制
堆大小:无限制
文件大小:无限制
CPU时间:无限无限
进程号:106662
****************************************************** ************************
** 使用以下参数运行 **
****************************************************** ************************
defsfile /home/oracle/ogg19c/dirdef/defgen.def
用户名 ogg,密码 ***
表 ta6_pub11.*;
扩展通配符表规范 ta6_pub11.*:
检索 ta6_pub11.BONUS 的定义。
2022-06-30 10:31:24 警告 OGG-06439 没有为表 BONUS 定义唯一键。所有可行的列都将用于表示键,但可能不保证唯一性。KEYCOLS 可用于定义密钥。
检索 ta6_pub11.DEPARTMENTS 的定义。
2022-06-30 10:31:24 警告 OGG-06439 没有为表 DEPARTMENTS 定义唯一键。所有可行的列都将用于表示键,但可能不保证唯一性。KEYCOLS 可用于定义密钥。
正在检索 ta6_pub11.DEPT 的定义。
正在检索 ta6_pub11.EMP 的定义。
检索 ta6_pub11.ORDERS 的定义。
正在检索 ta6_pub11.SALGRADE 的定义。
2022-06-30 10:31:25 警告 OGG-06439 没有为表 SALGRADE 定义唯一键。所有可行的列都将用于表示键,但可能不保证唯一性。KEYCOLS 可用于定义密钥。
正在检索 ta6_pub11.USERS 的定义。
为 /home/oracle/ogg19c/dirdef/defgen.def 中的 7 个表生成定义。
# 传送到目标端
scp /home/oracle/ogg19c/dirdef/defgen.def lightdb@10.20.30.199:/home/lightdb/ogg/dirdef