说明
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
搭建目标数据库和OGG软件
2.1创建OGG安装目录(两端)
源和目标两台服务器都需要创建ogg的安装目录 ggs_Linux_x64_PostgreSQL_64bit.tar
V983658-01.zip
2.2创建ogg的管理用户,使用oracle作为ogg的管理用户。(源端)
在oracle环境变量配置文件中增加以下内容:
export EDITOR=vi
export GGATE=/home/oracle/ogg19c
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/home/oracle
export ORACLE_SID=test
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GGATE:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:$GGATE:$LD_LIBRARY_PATH
alias sqlplus='rlwrap sqlplus'
alias ggsci='rlwrap ggsci'
2.3建立OGG表空间和用户(源端)
create tablespace ogg datafile '/data2/oradata/TEST/ogg01.dbf' size 50M autoextend on;
create user ogg identified by ogg default tablespace ogg;
grant connect, resource TO ogg;
grant select any dictionary, select any table TO ogg;
grant flashback any table TO ogg;
grant execute on dbms_flashback TO ogg;
grant ALTER ANY TABLE to ogg;
grant insert any table to ogg;
grant update any table to ogg;
grant delete any table to ogg;
grant create table,create sequence to ogg;
grant execute on utl_file to ogg;
2.4添加附加日志和force logging,并切换日志(源端)
如果源端不开启归档,需添加多组日志。
alter database force logging;
alter database add SUPPLEMENTAL log data;
SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
NAME OPEN_MODE FORCE_LOGGING SUPPLEME
--------- -------------------- ------------------- --------
ORCL READ WRITE YES YES
2.5 创建OGG的管理工作目录(源端)
在配置OGG进程之前,首先需要创建OGG的管理目录,执行以下操作:
ggsci
GGSCI (hs-10-20-30-199) 2> create subdirs
##19c会默认创建,无需执行
只有提交事务的record才会被捕获。抽取、投递、应用日志的单位是record,而不是trail文件。
2.6配置MGR参数文件,并启动mgr(源端)
mgr进程是这些进程的管理和守护进程,目标端的mgr进程还与源端进行通信
源端:
edit params mgr
PORT 7809
PURGEOLDEXTRACTS /home/oracle/ogg19c/dirdat/*,USECHECKPOINTS, minkeepdays 7
--不清除trail文件
AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
GGSCI (hs-10-20-30-199) 6> start mgr
GGSCI (hs-10-20-30-199) 7> info all
2.7添加extract进程(源端)
抽取进程:负责抓取需要传输的数据(添加进程的时候为抽取点,而不是启动进程的时候)
从21开始OGG需要配置tns
Goldengate DBLOGIN Issue OCI Error ORA (status = 12545-ORA-12545 (Doc ID 2847434.1)
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.30.199)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
配置extract进程
edit params ext_1
EXTRACT ext_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
SETENV (ORACLE_HOME=/home/oracle)
SETENV (ORACLE_SID=test)
USERID ogg, PASSWORD ogg
DISCARDFILE /home/oracle/ogg19c/dirrpt/ext_1.dsc,APPEND,MEGABYTES 1024
EXTTRAIL /home/oracle/ogg19c/dirdat/aa
TABLE ta6_pub11*;
# 创建 extract 组;
ADD EXTRACT ext_1, TRANLOG, BEGIN NOW
# 创建本地 trail 文件
ADD EXTTRAIL /home/oracle/ogg19c/dirdat/aa, EXTRACT ext_1, MEGABYTES 5
# 启动extract进程
start extract ext_1
GGSCI (hs-10-20-30-199) 16> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_1 00:00:15 00:00:02
2.8投递进程(源端)
投递进程:
EDIT PARAMS pump_1
# 复制如下内容至文件内,酌情修改参数保存
EXTRACT pump_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
PASSTHRU
RMTHOST 10.20.30.199, MGRPORT 7810
RMTTRAIL /home/lightdb/ogg/dirdat/pa
TABLE ta6_pub11.*;
# 用 add extract 指定本地 trail 文件
ADD EXTRACT pump_1, EXTTRAILSOURCE /home/oracle/ogg19c/dirdat/aa
# 用 add rmttrail 指定远程 trail 文件
ADD RMTTRAIL /home/lightdb/ogg/dirdat/pa, EXTRACT pump_1, MEGABYTES 5
# 启动Pump 进程
START EXTRACT pump_1
2.9生成define文件
在异构的同步复制;需要生成define文件。用于数据兼容不同数据库。
# 编辑参数文件
GGSCI (oracle221) 16> edit params defgen
# 参数文件内容
defsfile /home/oracle/ogg19c/dirdef/defgen.def
userid ogg, password ogg
TABLE ta6_pub11.*;
# 退出ggsci命令
GGSCI (oracle221) 17> exit
# root用户下生成文件
defgen paramfile /home/oracle/ogg19c/dirprm/defgen.prm
[oracle@hs-10-20-30-199 ogg19c]$ defgen paramfile /home/oracle/ogg19c/dirprm/defgen.prm
***********************************************************************
Oracle GoldenGate Table Definition Generator for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054
Linux, x64, 64bit (optimized), Oracle 19c on Oct 17 2019 15:32:20
Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
Starting at 2022-06-30 10:31:23
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Wed Apr 28 21:49:45 UTC 2021, Release 3.10.0-1160.25.1.el7.x86_64
Node: hs-10-20-30-199
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 106662
***********************************************************************
** Running with the following parameters **
***********************************************************************
defsfile /home/oracle/ogg19c/dirdef/defgen.def
userid ogg, password ***
TABLE ta6_pub11.*;
Expanding wildcard table specification ta6_pub11.*:
Retrieving definition for ta6_pub11.BONUS.
2022-06-30 10:31:24 WARNING OGG-06439 No unique key is defined for table BONUS. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
Retrieving definition for ta6_pub11.DEPARTMENTS.
2022-06-30 10:31:24 WARNING OGG-06439 No unique key is defined for table DEPARTMENTS. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
Retrieving definition for ta6_pub11.DEPT.
Retrieving definition for ta6_pub11.EMP.
Retrieving definition for ta6_pub11.ORDERS.
Retrieving definition for ta6_pub11.SALGRADE.
2022-06-30 10:31:25 WARNING OGG-06439 No unique key is defined for table SALGRADE. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
Retrieving definition for ta6_pub11.USERS.
Definitions generated for 7 tables in /home/oracle/ogg19c/dirdef/defgen.def.
# 传送到目标端
scp /home/oracle/ogg19c/dirdef/defgen.def lightdb@10.20.30.199:/home/lightdb/ogg/dirdef
第三章 LightDB端ogg配置
3.1解压软件并配置环境变量(目标端)
配置环境变量
# User specific aliases and functions
export LD_LIBRARY_PATH=$PGHOME/lib:$PGHOME/lib/ltext:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH
export LIGHTDB_PORT=5435
export PGUSER=lightdb
export LIGHTDB_HOST=10.20.30.199
export PGHOME=/data1/customer_do_not_delete/ta/lightdb-x/13.3-22.1/
export PGDATA=/data1/customer_do_not_delete/ta/lightdb-x/13.3-22.1/data/defaultCluster
export PATH=${PGHOME}/bin:${PGHOME}/tools/bin:${PGHOME}/tools/sbin:${PATH}
export LD_LIBRARY_PATH=${PGHOME}/lib:${PGHOME}/lib/ltext:${PGHOME}/tools/lib64:${LD_LIBRARY_PATH}
export GGATE=/home/oracle/ogg
export PATH=$PGHOME/bin:$HOME/bin:$GGATE:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$GGATE/lib:$LD_LIBRARY_PATH
export ODBCINI=$GGATE/odbc.ini
alias ggsci='rlwrap ggsci'
3.2创建目标端ogg用户
lightdb@postgres=# create database ogg;
CREATE DATABASE
lightdb@postgres=# create user ogg superuser password 'ogg';
CREATE ROLE
lightdb@postgres=#
lightdb@postgres=#
lightdb@postgres=#
lightdb@postgres=# \c ogg ogg
You are now connected to database "ogg" as user "ogg".
ogg@ogg=# create schema ogg;
CREATE SCHEMA
3.3创建DSN
ogg for postgresql使用的是ODBC来连接数据库,因此需要指明ODBC dirver
vi /home/lightdb/ogg/odbc.ini
[ODBC Data Sources] //定义的数据库别名,后面的【postgre】部分与之对应
GG_Postgres=DataDirect 22.1 LightDB Wire Protocol
[ODBC]
IANAAppCodePage=106 //字符集,应该与数据库的字符集对应,106代表UTF-8
InstallDir=/home/lightdb/ogg //ogg安装目录
[GG_Postgres]
Driver=/home/lightdb/ogg/lib/GGpsql25.so //OGG安装包里有内置ODBC驱动
Description=DataDirect LightDB Wire Protocol //介绍
Database=ta6_pub11 //表空间
HostName=10.20.30.199 //一般是本地地址
PortNumber=5435 //端口
LogonID=ta6_pub11 //数据库用户名
Password=ta6_pub11 //数据库密码
3.4创建GoldenGate工作目录
cd /home/lightdb/ogg
ggsci
GGSCI (hs-10-20-30-199) 2> create subdirs
Creating subdirectories under current directory /home/lightdb/ogg
Parameter file /home/lightdb/ogg/dirprm: created.
Report file /home/lightdb/ogg/dirrpt: created.
Checkpoint file /home/lightdb/ogg/dirchk: created.
Process status files /home/lightdb/ogg/dirpcs: created.
SQL script files /home/lightdb/ogg/dirsql: created.
Database definitions files /home/lightdb/ogg/dirdef: created.
Extract data files /home/lightdb/ogg/dirdat: created.
Temporary files /home/lightdb/ogg/dirtmp: created.
Credential store files /home/lightdb/ogg/dircrd: created.
Master encryption key wallet files /home/lightdb/ogg/dirwlt: created.
Dump files /home/lightdb/ogg/dirdmp: created.
3.5配置MGR进程组
# 编辑mgr
GGSCI (oracle221) 1>EDIT param mgr
# 复制以下内容,保存(此端口要与源端Pump进程里配置的对应)
PORT 7810
# 启动mgr
GGSCI (hs-10-20-30-199) 4> start mgr
GGSCI (hs-10-20-30-199) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
3.6添加checkpoint表
为了保证源和目标端在传数据的时候不会重复或者少传,在目标端添加checkpoin表
dblogin sourcedb gg_Postgres userid ogg , password ogg
add checkpointtable public.checkpointtab
3.7配置replicate进程
# 编辑参数文件
edit params rep_1
# 复制如下内容,酌情修改参数,保存
REPLICAT rep_1
SOURCEDEFS /home/lightdb/ogg/dirdef/defgen.def
SETENV(PGCLIENTENCODING = "UTF8" )
SETENV(ODBCINI="/home/lightdb/ogg/odbc.ini" )
SETENV(NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
TARGETDB GG_Postgres,userid ogg,password ogg
DISCARDFILE /home/lightdb/ogg/dirrpt/rep_1.rpt, append
MAP ta6_pub11.*, TARGET ta6_pub11.*;
# 添加 Replicat 进程
add replicat rep_1,exttrail /home/lightdb/ogg/dirdat/pa,begin now,checkpointtable public.checkpointtab
# 启动 Replicat 进程
GGSCI (lottu02) 1> start REPLICAT rep_1
GGSCI (hs-10-20-30-199) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP_1 00:00:00 00:00:07
第四章 数据验证
源端执行
SQL> delete from TBFUNDCHANGELIMIT;
1379 rows deleted.
SQL> commit;
Commit complete.
目标端
ta6_pub11@ta6_pub11=# select count(*) from tbfundchangelimit;
count
-------
1379
(1 row)
ta6_pub11@ta6_pub11=# select count(*) from tbfundchangelimit;
count
-------
0
(1 row)
数据初始同步,可以使用ora2pg
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




