Oracle 12.2 主从数据同步方法
目录
Oracle 12.2 主从数据同步方法 .........................................................................................................1
一.背景 .................................................................................................................................... 1
二.测试环境 ............................................................................................................................ 1
三.步骤 .................................................................................................................................... 1
1 软件安装 ......................................................................................................................... 1
2 源端配置 ......................................................................................................................... 2
3 目标端配置..................................................................................................................... 4
4 启动同步 ......................................................................................................................... 5
5 同步测试(sql plus).......................................................................................................... 6
6 异常排查 ......................................................................................................................... 6
一.背景
因项目客户需求,实现 oracle 12 数据库的主从数据同步,为此,在公司内部搭建相关环境,
测试并总结 oracle 12 数据库主从数据同步方法(方案)。
二.测试环境
主数据库:win10+ oracle 12.2.0.1+oracle goldengate12.3, IP:172.16.100.73
从数据库:win7+ oracle 12.2.0.1+oracle goldengate12.3,IP:192.168.33.56
三.步骤
1 软件安装
1.1 数据库安装
源服务器和目标服务安装 oracle 数据库,数据库版本均为 12.2.0.1。
其中,可插入数据库名称均为 orclpdb。
1.2 工具安装
源服务器和目标服务安装 oracle goldengate,版本均为 12.3。
源服务器安装路径为 d:\ogg
目标服务器安装路径为 e:\ogg
注意:在开始以下部署前,需要确保源服务器和目标服务器的可插入数据库处于 open
状态。
2 源端配置
2.1 配置数据库 TNS 节点,使 PDB 可识别
具体位置:数据库安装路径下,\12.2.0\dbhome_1\network\admin\tnsnames.ora
节点配置如下:
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)
)
)
2.2 创建测试用户和数据表(通过 sys 登录 sql plus)
SQL>alter session set container=orclpdb;
SQL>create user gg_src identified by gg_src;
SQL>grant dba to gg_src;
SQL> conn gg_src@orclpdb/gg_src;
SQL>create table tab01(id number(8),name varchar2(20));
2.3 配置数据库为归档模式(通过 sys 登录 sql plus)
首先查看归档模式
SQL>select log_mode from v$database;
如果归档模式是 ARCHIVELOG,则无需更改,否则执行以下语句:
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
2.4 设置 supplemental logging and FORCE LOGGING 等选项(通过 sys 登录 sql plus)
SQL> alter database add supplemental log data;
SQL> alter database force logging;
SQL> alter system switch logfile;
SQL> alter system set enable_goldengate_replication=true;
2.5 创建 Common User(通过 sys 登录 sql plus)
SQL> create user C##GGADMIN identified by ggadmin;
SQL> exec
dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL');
SQL> grant dba to c##ggadmin container=all;
2.6 配置 ogg
第一,切换到 command 窗口,从 ogg 目录启动 ogg 命令行窗口,命令如下:
d:\ogg\ggsci
进入 ogg 命令行窗口后,依次执行:
GGSCI (MY-PC) 1> dblogin userid C##GGADMIN@pdborcl password ggadmin
GGSCI (MY-PC as C##GGADMIN@orcl/ORCLPDB) 1> ADD SCHEMATRANDATA gg_src
ALLCOLS
GGSCI (MY-PC as C##GGADMIN@orcl/ORCLPDB) 2> ADD TRANDATA gg_src.*
第二,退出当前窗口,并重新进入:
GGSCI (MY-PC as C##GGADMIN@orcl/ORCLPDB) 3> exit
d:\ogg\ggsci
进入 ogg 命令行窗口后,依次执行:
GGSCI (MY-PC) 1> dblogin userid C##GGADMIN password ggadmin
GGSCI (MY-PC as C##GGADMIN@orcl/CDB$ROOT) 2> REGISTER EXTRACT ext1 DATABASE
CONTAINER (orclpdb)
GGSCI (MY-PC as C##GGADMIN@orcl/CDB$ROOT) 3> ADD EXTRACT ext1 INTEGRATED TRANLOG,
BEGIN NOW
GGSCI (MY-PC as C##GGADMIN@orcl/CDB$ROOT) 4> ADD EXTTRAIL d:\ogg\dirdat\lt EXTRACT
ext1
GGSCI (MY-PC as C##GGADMIN@orcl/CDB$ROOT) 5> ADD EXTRACT extdp1 EXTTRAILSOURCE
d:\ogg\dirdat\lt BEGIN NOW
GGSCI (MY-PC as C##GGADMIN@orcl/CDB$ROOT) 6> ADD RMTTRAIL e:\ogg\dirdat\rt EXTRACT
extdp1
第三,退出当前窗口,并重新进入:
GGSCI (MY-PC as C##GGADMIN@orcl/ORCLPDB) 7> exit
d:\ogg\ggsci
进入 ogg 命令行窗口后,依次执行:
GGSCI (MY-PC) 1>edit params ext1
在弹出编辑窗口填写以下内容并存盘
EXTRACT ext1
SETENV (ORACLE_SID='ORCL')
userid C##GGADMIN@ORCL, password ggadmin
LOGALLSUPCOLS
UPDATERECORDFORMAT COMPACT
EXTTRAIL D:\ogg\dirdat\lt
SOURCECATALOG ORCLPDB
TABLE gg_src.*;
GGSCI (MY-PC) 1> edit params extdp1
在弹出编辑窗口填写以下内容并存盘
EXTRACT extdp1
SETENV (ORACLE_SID='ORCL')
userid C##GGADMIN@ORCL, password ggadmin
RMTHOST 192.168.33.56, MGRPORT 7809
RMTTRAIL e:\ogg\dirdat\rt
SOURCECATALOG ORCLPDB
TABLE gg_src.*;
3 目标端配置
3.1 配置数据库 TNS 节点,使 PDB 可识别
具体位置:数据库安装路径下,\12.2.0\dbhome_1\network\admin\tnsnames.ora
节点配置如下:
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)
)
)
3.2 创建测试用户和数据表(通过 sys 登录 sql plus)
SQL>alter session set container=pdborcl;
SQL>create user gg_stg identified by gg_stg;
SQL>grant dba to gg_stg;
SQL> conn gg_stg@orclpdb/gg_stg;
SQL>create table tab01(id number(8),name varchar2(20));
3.3 配置数据库为归档模式(通过 sys 登录 sql plus)
首先查看归档模式
SQL>select log_mode from v$database;
如果归档模式是 ARCHIVELOG,则无需更改,否则执行以下语句:
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
3.4 设置 supplemental logging and FORCE LOGGING 等选项(通过 sys 登录 sql plus)
SQL> alter database add supplemental log data;
SQL> alter database force logging;
SQL> alter system switch logfile;
SQL> alter system set enable_goldengate_replication=true;
3.5 创建 Common User(通过 sys 登录 sql plus)
SQL> create user C##GGADMIN identified by ggadmin;
SQL> exec
dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL');
SQL> grant dba to c##ggadmin container=all;
3.6 配置 ogg
第一,切换到 command 窗口,从 ogg 目录启动 ogg 命令行窗口,命令如下:
e:\ogg\ggsci
进入 ogg 命令行窗口后,依次执行:
GGSCI (MY-PC) 1> DBLOGIN USERID C##ggadmin@orclpdb, PASSWORD ggadmin
GGSCI (MY-PC as C##ggadmin@orcl/orclpdb) 2> ADD REPLICAT rep1 INTEGRATED
EXTTRAIL e:\ogg\dirdat\rt
GGSCI (MY-PC as C##ggadmin@orcl/orclpdb) 3> edit params rep1
在弹出编辑窗口填写以下内容并存盘
REPLICAT rep1
SETENV (ORACLE_SID='ORCL')
DBOPTIONS INTEGRATEDPARAMS(parallelism 6)
USERID C##GGADMIN@ORCLPDB, PASSWORD ggadmin
ASSUMETARGETDEFS
MAP ORCLPDB.gg_src.*, TARGET ORCLPDB.gg_stg.*;
GGSCI (MY-PC as C##ggadmin@orcl/orclpdb) 4> edit params ./GLOBALS
在弹出编辑窗口填写以下内容并存盘
ALLOWOUTPUTDIR e:\ogg\dirdat
4 启动同步
1. 源端:
切换到 command 窗口,从 ogg 目录启动 ogg 命令行窗口,命令如下:
d:\ogg\ggsci
进入 ogg 命令行窗口后,依次执行:
GGSCI (MY-PC) 1> start mgr
GGSCI (MY-PC) 2> start extract ext1
GGSCI (MY-PC) 3> start extract extdp1
GGSCI (MY-PC) 4> info all
如果没有异常发生,可以看到进程 manager,ext1 和 extdp1 处于 running 状态
2. 目标端:
切换到 command 窗口,从 ogg 目录启动 ogg 命令行窗口,命令如下:
e:\ogg\ggsci
进入 ogg 命令行窗口后,依次执行:
GGSCI (MY-PC) 1> start mgr
GGSCI (MY-PC) 2> start replicat rep1
GGSCI (MY-PC) 3> info all
如果没有异常发生,可以看到进程 manager,rep1 处于 running 状态
5 同步测试(sql plus)
1. 源端连接 orclpdb,并在数据表 tab01 插入数据
2. 目标端连接 roclpdb,查看表 tab01 数据是否同步
6 异常排查
1. 在 ogg 相关进程启动和运行发生错误时,可以查看日志 ggserr.log 排查错误原因(位于
工具根目录下)。
2. 源 端 报 错 ERROR
OGG-01232
Oracle GoldenGate Capture for Oracle, EXTDP1.prm:
Receive TCP params error: TCP/IP error 10054 (远程主机强迫关闭了一个现有的连接。)
原因:通常这是目标端的 delivery 进程与源端失联(例如远程主机关机或睡眠),此时源
端数据传输进程会关闭,导致同步无法进行。
解决方法:首先确保目标端机器可以访问(从源端可以 ping 通),然后重启源端数据传
输进程。(只要源端的日志没有清空,失联期间的数据再重启进程后,仍然可以陆续同
步到目标端)。
3. 目 标 端 报 错 ERROR
Extract reposition err -.
cause:
OGG-01029
Oracle GoldenGate Delivery for Oracle, REP1.prm:
The process encountered an error while attempting to position to a specific point in the
trail file.
action:
Verify that the specified sequence number and RBA exist, and specify valid ones if necessary.
Restart the process.
上述是官方的答案,一种可行性的方案如下:
重新初始化操作,首先确认抽取进程 ext1,传输进程 dpump1,复制进程 rep1 都处在 stop
状态。
源端:
修改 e 进程启动时间
ALTER EXTRACT ext1, TRANLOG, BEGIN 2018-05-29 17:00
启动 e 进程,d 进程
start ext1
start dpump1
根据 scn 号重新初始化数据
SELECT dbms_flashback.get_system_change_number from dual;
--10653006236238
可以用 dblink 或者数据泵的方式进行。
目标端:
重新启动 r 进程,根据 scn 号
START REPLICAT rep1, aftercsn 10653006236238
附:参考资料
https://www.cnblogs.com/xqzt/p/4535381.html
https://blog.csdn.net/royzhang7/article/details/44940735
https://www.cnblogs.com/margiex/p/4046219.html
https://blog.csdn.net/Cloudsnowe/article/details/51613364
http://blog.coffeewoo.itpub.net/29357786/viewspace-2151364