Oracle goldengate数据库同步方案
前言
为了实现数据库的实时热备同步,满足数据库的高可用需求,采用goldengate软件同步数据库,高效灵活,同步粒度可以从数据库实例到用户(schema),甚至基于指定表的同步,其特点是同步效率高,可以根据业务需求同步指定的数据库对象,另外goldengate还有一个优势是,目标端可以部署新的业务库,实例级允许写入操作(相对DG的优势),以下是goldengate详细的配置方案。
Goldengate同步架构
实现同步目标
数据库 | 数据库IP | 数据库实例 | 同步用户 |
源端 | 10.0.1.11 | erp | sa |
目标端 | 10.0.4.11 | erp | sa |
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
不错不错的学习资料!