搭建OGG同步Oracle数据库(源端Linux,目标端Windows)

OGG原理

OGG是一种基于日志的结构化数据复制软件,通过捕获源数据库online redo log (在线重做日志)或archive log(归档日志)获得数据变化,形成tail(队列文件 ),再将这些tail通过网络协议,传输到目标数据库,目标端通过解析,插入至目标端数据库,从而实现源端与目标端数据同步。

OGG的特性:

1.对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制;

2.以交易为单位复制,保证交易一致性:只同步已提交的数据;

3.高性能,智能的交易重组和操作合并,使用数据库本地接口访问,并行处理体系,灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等。

环境准备

1.两台服务器(或者虚拟机)(一个作为源端,一个作为目标端)

2.源端Linux(CentOS7.5),目标端WindowsServer2012

安装部署

1.安装Oracle数据库
在Linux系统安装Oracle11g

2.Oracle参数调整

​ a)开启数据库归档日志(源端)

--首先用sys登录数据库,查看oracle是否开启归档模式(su - oracle切换用户,然后sqlplus / as sysdba进入sql模式)
archive log list;

--非归档模式
--Database log mode              No Archive Mode
--Automatic archival             Disabled

--归档模式
--Database log mode              Archive Mode
--Automatic archival             Enabled

开启归档模式
--先关闭数据库
shutdown immediate;
--启动数据库到mount状态
startup mount;
--启用归档模式
alter database archivelog;
--启动数据库
alter database open;

​ b)开启数据库强制日志记录和最小附加日志(源端)

--查看数据库是否强制日志(force_logging)和开启最小附加日志(supplemental_log_data_min)
select force_logging, supplemental_log_data_min from v$database;
--YES 开启;NO 未开启

--开启强制日志
alter database force logging;
--开启最小附加日志
alter database add supplemental log data;

​ c)Oracle版本在11.2.0.4.0之后需要调整enable_goldengate_replication(源端,目标端)

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

​ d)为ogg创建单独的表空间,临时表空间和用户,为用户授权DBA权限(源端,目标端)

--创建表空间
create tablespace OGG_DATA datafile '文件路径/ogg_data01.dbf' size 100M autoextend on maxsize 30G;
--创建临时表空间
create temporary tablespace OGG_TEMP tempfile '文件路径/ogg_temp01.dbf'  size 50m  autoextend on maxsize 10G;
--创建用户
create user ggs identified by "123456" default tablespace OGG_DATA temporary tablespace OGG_TEMP quota unlimited on OGG_DATA;
--授予DBA权限
grant dba to ggs;

源端安装OGG软件

1.图形化安装

2.静默安装
有些时候我们没有图形化界面得时候就,只能用命令行得方式去安装OGG这时候就需要用到静默安装,静默安装需要配置应答文件,我将ogg安装文件解压到了/u01/ogg目录下了,应答文件在OGG安装文件解压后的目录里(/u01/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp)

应答文件(参考)


####################################################################
## Copyright(c) Oracle Corporation 2017. All rights reserved.     ##
##                                                                ##
## Specify values for the variables listed below to customize     ##
## your installation.                                             ##
##                                                                ##
## Each variable is associated with a comment. The comment        ##
## can help to populate the variables with the appropriate        ##
## values.                                                        ##
##                                                                ##
## IMPORTANT NOTE: This file should be secured to have read       ##
## permission only by the oracle user or an administrator who     ##
## own this installation to protect any sensitive input values.   ##
##                                                                ##
####################################################################

#-------------------------------------------------------------------------------
# Do not change the following system generated value. 
#-------------------------------------------------------------------------------
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v12_1_2


################################################################################
##                                                                            ##
## Oracle GoldenGate installation option and details                          ##
##                                                                            ##
################################################################################

#-------------------------------------------------------------------------------
# Specify the installation option.
# Specify ORA12c for installing Oracle GoldenGate for Oracle Database 12c and
#         ORA11g for installing Oracle GoldenGate for Oracle Database 11g 
#-------------------------------------------------------------------------------
#安装OGG得版本  ORA11g是11g, ORA12c是12c
INSTALL_OPTION=ORA11g

#-------------------------------------------------------------------------------
# Specify a location to install Oracle GoldenGate
#-------------------------------------------------------------------------------
#OGG安装路径
SOFTWARE_LOCATION=/u01/ggs

#-------------------------------------------------------------------------------
# Specify true to start the manager after installation. 
#-------------------------------------------------------------------------------
#是否开启mgr进程 true开启 false 不开启
START_MANAGER=true

#-------------------------------------------------------------------------------
# Specify a free port within the valid range for the manager process.
# Required only if START_MANAGER is true.
#-------------------------------------------------------------------------------
#mgr进程得端口号
MANAGER_PORT=7809

#-------------------------------------------------------------------------------
# Specify the location of the Oracle Database.
# Required only if START_MANAGER is true.
#-------------------------------------------------------------------------------
#ORACLE_HOME的路径
DATABASE_LOCATION=/u01/app/oracle/product/11.2.0.4/db_1


################################################################################
##                                                                            ##
## Specify details to Create inventory for Oracle installs                    ##
## Required only for the first Oracle product install on a system.            ##
##                                                                            ##
################################################################################

#-------------------------------------------------------------------------------
# Specify the location which holds the install inventory files.
# This is an optional parameter if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
#Oracle产品目录地址oraInventory
INVENTORY_LOCATION=/u01/app/oraInventory

#-------------------------------------------------------------------------------
# Unix group to be set for the inventory directory.  
# This parameter is not applicable if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
#用户组 一般为Oracle的用户组
UNIX_GROUP_NAME=oinstall

配置好应答文件,执行命令开始静默安装ogg

--进入OGG安装文件解压后的目录
cd /u01/ogg/fbo_ggs_Linux_x64_shiphome/Disk1
--静默安装命令格式
./runInstaller -silent -responseFile [应答文件全路径]
--静默安装执行语句
./runInstaller -silent -responseFile /u01/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

3.开启DDL

--在OGG安装目录下进去sqlplus
export ORACLE_SID=orcl
sqlplus / as sysdba;
SQL> @marker_setup
SQL> @ddl_setup
SQL> @role_setup
SQL> GRANT GGS_GGSUSER_ROLE TO ggs;
SQL> @ddl_enable

4.mgr进程配置

--进入ogg控制台(在OGG安装目录下执行)
./ggsci
--编辑mgr配置
edit params mgr
--编辑mgr配置,保存退出,重启mgr进程生效
stop mgr!
start mgr

a)mgr配置(参考)

PORT 7909

DYNAMICPORTLIST 7910-7930	
PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,MINKEEPDAYS 7	
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 5

5.EXTRACT(抽取)进程配置

--配置抽取集成需要通过ogg登录到oracle
dblogin userid ggs@orcl,password 123456
--为需要同步的用户或表开启表级附加日志
--同步某用户下的所有表
add trandata 用户名.*
--同步某张表
add trandata 用户名.表名
--编辑抽取进程参数
edit params ext01(抽取进程名 不超过8个字符)
--指定抽取进程从那个时间点抽取日志(前提数据库归档日志存在)
--从当前时间点抽取
--单实例
add extract ext01,tranlog, begin now
--RAC集群
add extract ext01,tranlog, begin now,threads 2
--从指定时间抽取
--单实例
add extract ext01,tranlog, begin 2020-12-20 00:00:00
--RAC集群
add extract ext01,tranlog, begin 2020-12-20 00:00:00,threads 2
--绑定抽取进程抽取到本地的tail日志文件队列
add exttrail ./dirdat/te,extract ext01 (te为tail日志文件名,只能是2个字符)
--开启抽取进程
start ext01

a)EXTRACT抽取进程参数(参考)

EXTRACT ext01
SETENV (ORACLE_SID=orcl);
SETENV (OGG_HOME=/u01/ggs);
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK);
USERID ggs@orcl, PASSWORD AACAAAAAAAAAAAIAUEYFIIJCXEOHZDTB, ENCRYPTKEY default
TRANLOGOPTIONS DBLOGREADER;
REPORTCOUNT EVERY 5 HOURS,RATE;
REPORT AT 01:05;
EXTTRAIL ./dirdat/te;
DISCARDFILE ./dirrpt/ext01.dsc,APPEND,MEGABYTES 4096;
DYNAMICRESOLUTION;
WARNLONGTRANS 12h,CHECKINTERVAL 30m;
DDL INCLUDE OBJTYPE 'TABLE',INCLUDE OPTYPE 'ALTER';
DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10;
DDLOPTIONS REPORT;

TABLE COMM.*;
TABLE DICT.*;
TABLE TEST.TAB1;

6.投递进程配置

--投递进程本质也是EXTRACT进程,只是分工不同
--编辑投递进程
edit params dpt01
--指定投递进程要投递的源端tail日志文件
add extract dpt01,exttrailsource ./dirdat/te
add exttrail ./dirdat/te,extract dpt01
--指定投递到远端(目标端)tail文件名
add rmttrail ogg安装路径/dirdat/te,extract dpt01
--启动投递进程(需要目标端的mgr进程启动)
start dpt01

a)投递进程配置(参考)

EXTRACT dpt01
PASSTHRU
GETTRUNCATES
RMTHOST 172.16.128.11,MGRPORT 7909,COMPRESS --目标端IP和OGG端口
RMTTRAIL ./dirdat/te
REPORTCOUNT EVERY 5 HOURS,RATE
REPORT AT 01:05

TABLE COMM.*;
TABLE DICT.*;
TABLE TEST.TAB1;

7.数据备份

--查询当前数据库scn号
select current_scn from v$database;
--创建导出数据的路径
create or replace directory bak_dir as '/u01/bak';
--按用户导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp schemas=COMM,DICT LOGFILE=tables_backup0201.log PARALLEL=6  FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export

--按表导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp tables=TEST.TAB1,tables2  LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export

--PARALLEL=6  并行度 设置并行线程 提高导出速率 不要高于CPU线程数
--FILESIZE=30G 设置导出文件大小

目标端安装OGG软件(window)

1.为ogg创建单独的表空间,临时表空间和用户,为用户授权DBA权限(源端,目标端)

--创建表空间
create tablespace OGG_DATA datafile '文件路径/ogg_data01.dbf' size 100M autoextend on maxsize 30G;
--创建临时表空间
create temporary tablespace OGG_TEMP tempfile '文件路径/ogg_temp01.dbf'  size 50m  autoextend on maxsize 10G;
--创建用户
create user ggs identified by "123456" default tablespace OGG_DATA temporary tablespace OGG_TEMP quota unlimited on OGG_DATA;
--授予DBA权限
grant dba to ggs;

初始化备份数据

--创建导出数据的路径
create or replace directory dump as '/share/bak'
--查看已经创建的导入导出目录
select * from dba_directories;

impdp system/szadmin@nanf directory=dump DUMPFILE=TABLES_20210201_%U.dmp LOGFILE=tables_import.log PARALLEL=6 table_exists_action=replace job_name=Tables_Import

--table_exists_action=replace 表存在执行覆盖操作

ogg图形化界面安装

2.配置mgr进程

--进入ogg控制台(在OGG安装目录下执行)
./ggsci
--编辑./GLOBALS文件
edit  param  ./GLOBALS
CHECKPOINTTABLE ggs.checkpoint
--编辑mgr配置
edit params mgr
--编辑mgr配置,保存退出,重启mgr进程生效
stop mgr!
start mgr
--将进程注册到服务中(windows系统)
install addservice

a)mgr配置(参考)

PORT 7909

DYNAMICPORTLIST 7910-7930	
PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,MINKEEPDAYS 7	
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 5

3.配置REPLICAT(复制)进程

--创建检查点
checkpointtable ggs.checkpoint
--编辑复制进程
edit params rep01
--指定复制进程要读取的tail日志文件
add replicat rep01 exttrail ./dirdat/te,checkpointtable ggs.checkpoint
--从指定SCN号开始同步数据,启动接收进程
start replicat rep01,aftercsn 备份时使用的SCN号

复制进程配置(参考)

replicat  rep01
SETENV (ORACLE_SID=orcl)
SETENV (OGG_HOME=E:\ggs)
userid ggs@orcl,PASSWORD 123456
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
GETTRUNCATES
REPORT AT 1:59
REPORTROLLOVER AT 2:00
DISCARDFILE ./dirrpt/rep01.dsc,append,megabytes 4096
DISCARDROLLOVER AT 05:00 
DDL INCLUDE OBJTYPE 'TABLE',
INCLUDE OPTYPE 'ALTER'
ddl error default ignore retryop maxretries 3 retrydelay 5
DBOPTIONS SUPPRESSTRIGGERS

MAP TEST.TB1,TARGET TEST.TB1;
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值