Oracle goldengate数据库同步方案

前言

为了实现数据库的实时热备同步,满足数据库的高可用需求,采用goldengate软件同步数据库,高效灵活,同步粒度可以从数据库实例到用户(schema),甚至基于指定表的同步,其特点是同步效率高,可以根据业务需求同步指定的数据库对象,另外goldengate还有一个优势是,目标端可以部署新的业务库,实例级允许写入操作(相对DG的优势),以下是goldengate详细的配置方案。


Goldengate同步架构

实现同步目标

数据库数据库IP数据库实例同步用户
源端10.0.1.11erpsa
目标端10.0.4.11erpsa



goldengate配置准备工作

源端操作:

开启附加日志

SQL>select supplemental_log_data_min from v$database;
SUPPLEME

---------------

NO

SQL>alter database add supplemental log data;
SQL> select supplemental_log_data_min from v$database;

SUPPLEME

---------------

YES


归档(已经是归档模式,省略)

SQL>shutdown immediate
SQL>startup mount

SQL>alter database archivelog;

SQL>archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /home/oracle/archive

Oldest online log sequence

Next log sequence to archive

Current log sequence .

SQL>alter database open;


源端和目标端都需要操作:

3)创建OGG同步用户:

create user goldengate identified by goldengate123 default tablespace users;
grant dba to goldengate;


goldengate配置步骤

主备端服务器分别上传ogg同步软件fbo_ggs_Linux_x64_ora11g_64bit,并解压到/home/oracle/ogg目录下,这里安装过程省略介绍。

源端操作

配置mgr进程,加入以下配置(在ggsci模式下操作)

port 7809

AUTOSTART EXTRACT *

PURGEOLDEXTRACTS /home/oracle/ogg/dirdat/*,usecheckpoints, minkeepdays 5

注:以上主要是配置OGG传输端口,自动重启进程,并配置OGG日志的最长保留时间为5天。


ggsci模式下登录数据库

dblogin userid goldengate, password goldengate123


为源端表增加附加日志:

add trandata sa.*


Shell模式创建抽取进程的ogg日志目录:

mkdir –p /home/oracle/ogg/dirdat/e_sa/


增加新的抽取进程ggsci模式)

add extract e_sa, tranlog, begin now

add exttrail /home/oracle/ogg/dirdat/e_sa/ex, extract e_sa,megabytes 200

编辑e_sa抽取进程加入以下配置:

extract e_sa

SETENV (ORACLE_HOME = "/home/oracle/app/product/11gR2")

userid goldengate,password goldengate123

exttrail /home/oracle/ogg/dirdat/e_sa/ex

dynamicresolution

DDL INCLUDE ALL objname sa.*

DDLOptions AddTranData, Report

table sa.*;


增加新的传输进程(ggsci模式):

add extract p_sa, exttrailsource /home/oracle/ogg/dirdat/e_sa/ex

add rmttrail /home/oracle/ogg/dirdat/r_sa/re, extract p_sa, megabytes 200

编辑p_sa传输进程加入以下配置:

extract p_sa

rmthost 10.0.4.11,mgrport 7809

passthru

rmttrail /home/oracle/ogg/dirdat/r_sa/re

table sa.*;


让传输进程从此刻开始启动传输数据

alter extract p_sa, begin now


记录源库scn:

SQL> select to_char(dbms_flashback.get_system_change_number,99999999999999999999999999) getscn from dual;

GETSCN

---------------------------

73665208


导出源数据:

先创建数据库目录用于expdp导出(主备库均需创建):

create or replace directory dir1 as '/home/oracle/orabak/expdp';

导出sa数据库:

expdp '"/as sysdba"' directory=dir1 dumpfile=sa_0413.dmp schemas=sa

把备份传输到备端相同的目录下

scp sa_0413.dmp oracle@10.0.4.11:/home/oracle/expdp

备端操作

导入sa数据库(如备端有sa用户,需删除后再导入操作)

impdp '"/as sysdba"' directory=dir1 dumpfile=sa_0413.dmp


shell模式创建复制进程的ogg日志目录:

mkdir –p /home/oracle/ogg/dirdat/r_sa/


ggsci模式下登录数据库:

dblogin userid goldengate, password goldengate123


增加检查点表和复制进程:

add checkpointtable goldengate.ckpt_sa

add replicat r_sa, exttrail /home/oracle/ogg/dirdat/r_sa/re, checkpointtable goldengate.ckpt_sa

编辑r_sa复制进程加入以下配置:

replicat r_sa

SETENV (ORACLE_HOME = "/home/oracle/app/product/11gR2")

userid goldengate, password goldengate123

handlecollisions

discardfile /home/oracle/ogg/dirrpt/rep_sa.dsc,append, megabytes 10

EOFDELAYCSECS 10

assumetargetdefs

dynamicresolution

DDL INCLUDE ALL objname sa.*;

DDLERROR DEFAULT IGNORE RETRYOP

map sa.*, target sa.*;

启动同步操作

回到源端启动传输进程:

start p_sa

最后切换到备端启动复制进程,至此,OGG配置完成!

start r_sa, aftercsn 73665208