1 软件简介
安装时应该选择最为稳定的安装版本,现在官方发布的版本主要为:
Oracle GoldenGate 11.2.1.0.1
对应不同的数据库和版本,有不同的安装介质。下面是根据现网情况使用的两个安装介质:
ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
ggs_Linux_x64_MySQL_64bit.tar
Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。
2 整体架构
和传统的逻辑复制一样,Oracle GoldenGate实现原理是通过抽取源端的redo log或者archive log,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端数据同步。以下是OracleGoldenGate的技术架构
Manager进程
Manager进程是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。
Extract进程
Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。
Pump进程
pump进程运行在数据库源端。其作用是如果源端使用了本地的trail文件,那么pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trails文件,那么就是extract进程在抽取完数据以后,直接投递到目标端。
Trail文件
为了更有效、更安全的把数据库事务信息从源端投递到目标端。GoldenGate引进trail文件的概念。前面提到extract抽取完数据以后Goldengate会将抽取的事务信息转化为一种GoldenGate专有格式的文件。然后pump负责把源端的trail文件投递到目标端,所以源、目标两端都会存在这种文件。trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传。
Replicat进程
Replicat进程,通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。
GGSCI
GGSCI是GoldenGate Software Command Interface 的缩写,它提供了十分丰富的命令来对Goldengate进行各种操作,如创建、修改、监控GoldenGate进程等等
灵活的拓扑结构:
2.1 GoldenGate支持列表
Databases |
OS and Platforms |
Capture: |
Windows 2000,2003,xp |
Oracle |
Linux |
DB2 UDB |
Sun Slolaris |
Microsoft SQL Server |
HP NonStop |
Sybase ASE |
HP Ux |
Teradata |
HP TRU64 |
Ingres |
IBM AIX |
Enscribe |
IBM z/OS |
SQL/MP |
|
SQL/MX |
|
Delivery: |
|
All listed above |
|
Mysql,hp neoview,Netezza |
|
And ODBC compatible databases |
|
3 GoldenGate软件安装
3.1 组和用户创建
源端是oracle生产数据库,已经存在oracle和dba,复用该用户和组。
目标端是mysql,已经存在mysql和dba,复用该用户和组。
3.2 GoldenGate安装目录检查
安装Oracle GoldenGate软件前,需要事先确认安装目录属主权限正确,且所在文件系统有足够的空间存放Oracle GoldenGate软件并能支撑日常运维使用。对于存放dirdat数据目录,至少需要100GB以上的空间。对于源库是oracle rac模式,必须设置ogghome的目录的存储能让rac两台主机识别,只是mount在一个任务较轻的节点上,若是该节点出现故障,能及时挂载到另外一个节点上,增加高可用性。
检查安装目录所在文件系统空间信息,通过下述命令实现:
df -g /home/ogghome
确认安装目录属主权限信息,通过下述命令实现:
ls –ld /home/ogghome
3.3 解压安装文件
Oracle GoldenGate软件通过解压缩方式实现安装,
解压缩GoldenGate安装文件,通过下述命令实现:
unzip ggs_*.zip
tar -xvf ggs_*.tar
3.4 GoldenGate软件启动测试
Oracle GoldenGate软件通过ggsci命令启动交互界面,当ggsci启动成功则表名安装过程无误。启动ggsci前务必进入Oracle GoldenGate软件的安装目录。
启动Oracle GoldenGate的ggsci,通过下述命令实现:
cd /home/oracle/ggs/goldengate
./ggsci
Oracle数据库的账号必须设置LD_LIBRARY_PATH环境变量,否则会报错,
LD_LIBRARY_PATH=/oracle/product/10.2/db/lib
3.5 、创建GoldenGate软件子目录
进入安装路径,创建相关目录(源端和目标端都执行),源端使用oracle用户,目标端使用mysql用户:
cd /home/ogghome
./ggsci
GGSCI> create subdirs
下面是日志:
Creating subdirectories under current directory /home/ogghome
Parameter files /home/ogghome/dirprm: already exists
Report files /home/ogghome/dirrpt: created
Checkpoint files /home/ogghome/dirchk: created
Process status files /home/ogghome/dirpcs: created
SQL script files /home/ogghome/dirsql: created
Database definitions files /home/ogghome/dirdef: created
Extract data files /home/ogghome/dirdat: created
Temporary files /home/ogghome/dirtmp: created
Stdout files /home/ogghome/dirout: created
4 GoldenGate部署
4.1 初始化源端数据库
4.1.1 开启归档模式
GoldenGate是基于oracle日志变化的捕获,所以为了完整的捕获到oracle数据库的变化,有必要将归档模式开启。
SQL> alter system set log_archive_dest_1='location=/arch' scope=both;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog
SQL> alter database open
SQL> archive log list
注意,由于上面命令涉及停止数据库应用,应结合业务实际情况进行操作。
4.1.2 开启附加日志
在oracle中我们可以通过rowid来定位某条记录,但是目标端的数据库和源端数据库的数据库可能完全不一样,所以无法通过rowid来确定源端数据库的逻辑变化,这时附件日志supplemental log便登上了表演的舞台。数据库在开启附加日志功能后,对于源端的修改操作,oracle会同时追加能够唯一标示记录的列到redo log。这样目标端数据库就可以知道源端发生了哪些具体的变化。
SQL> alter database add supplemental log data;
SQL> alter system switch logfile;
SQL> select supplemental_log_data_min from v$database;
4.1.3 开启强制日志模式
SQL>alter database force logging;
SQL>SELECT FORCE_LOGGING FROM V$DATABASE;
4.1.4 goldengate创建用户并授权
源端oracle数据库创建账号:
create tablespace data_goldengate datafile '+DG_DATA1' size 10240m autoextend on;
create user goldengate identified by password default tablespace data_goldengate temporary tablespace temp;
赋予goldengate相关权限(想简单的话,可以赋予DBA权限,若是涉及安全问题,dba权限不能随便赋予)
grant CONNECT,RESOURCE to goldengate;
grant CREATE SESSION,ALTER SESSION to goldengate;
grant SELECT ANY DICTIONARY,SELECT ANY TABLE to goldengate;
grant CREATE TABLE,ALTER ANY TABLE to goldengate;
grant unlimited tablespace to goldengate;
目标端mysql创建账号,赋予dba权限:
grant ALL PRIVILEGES on *.* to goldengate@'%';
grant ALL PRIVILEGES on *.* to goldengate@'localhost';
update mysql.user set password=password('password') where user='goldengate';
4.1.5 对需要同步的表确认是否开启表级附加日志
./ggsci
GGSCI (localhost.localdomain) 1> dblogin userid goldengate password password
Successfully logged into database.
GGSCI (localhost.localdomain) 2> info trandata xianyezhao.CALENDAR_DETAIL
Logging of supplemental redo log data is disabled for table XIANYEZHAO.CALENDAR_DETAIL.
GGSCI (localhost.localdomain) 3> add trandata xianyezhao.CALENDAR_DETAIL
Logging of supplemental redo data enabled for table XIANYEZHAO.CALENDAR_DETAIL.
GGSCI (localhost.localdomain) 4> info trandata XIANYEZHAO.CALENDAR_DETAIL
Logging of supplemental redo log data is enabled for table XIANYEZHAO.CALENDAR_DETAIL.
Columns supplementally logged for table XIANYEZHAO.CALENDAR_DETAIL: SEQNO.
4.2 配置ASM访问方式
由于oracle redo 日志文件在ASM存储上,goldengate软件需要访问ASM,
配置asm实例的tns连接字符串,由于监听状态是BLOCKED,必须添加(UR=A)才能通过ogg远程登录asm实例。下面是官方详细说明:
ASM instances appear with a blocked status from the 'lsnrctl services'command (see below). To remotely access a 'blocked service' you need toadd (UR=A) to the tns connect string (plus you will need a password filefor the asm instance).
Tnsnames.ora entry:----
下面是监听状态,使用lsnrctl status查看:
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
下面是具体的tns连接字符串:
ASM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.219.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = +ASM)
(INSTANCE_NAME = +ASM2)
(UR=A)
)
)
4.3 配置NFS文件系统
由于归档是使用文件系统,需要使用nfs文件模式,把另外一个节点的归档挂载到本地。
a.开启nfs服务:
service nfs start
查看nfs状态:
service nfs status
b.开启nfs权限:
编辑权限列表:
vi /etc/exports
/archivelog1 *(rw)
更新权限:
exportfs –a
c.创建/archivelog1,更改权限为oracle和dba,
chown oracle:dba /archivelog1
使用root用户mount上:
mount 192.168.219.3:/archivelog1 /archivelog1
4.4 在源端和目标端配置MGR
ggsci> EDIT PARAMS MGR
PORT 7809
PURGEOLDEXTRACTS ./dirdat,USECHECKPOINTS
ggsci> START MGR
ggsci> INFO MGR
4.5 创建Extract: ext_cal
4.5.1 增加extract
add extract ext_cal, tranlog, begin now, THREADS 2
EXTRACT added.
4.5.2 设定exttrail
add exttrail ./dirdat/ca, extract ext_cal, megabytes 100
EXTTRAIL added.
4.5.3 配置extract
下面******替换成密码:
edit params ext_cal
EXTRACT ext_cal
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
SETENV (ORACLE_SID="g139bak2")
userid goldengate, password password
TRANLOGOPTIONS ASMUSER sys@asm,ASMPASSWORD ******
EXTTRAIL ./dirdat/ca
TRANLOGOPTIONS LOGRETENTION DISABLED
TRANLOGOPTIONS BUFSIZE 2048000
tranlogoptions altarchivedlogformat threadid 1 g139bak_%S_%T_%R.log
tranlogoptions altarchivedlogformat threadid 2 g139bak_%S_%T_%R.log
tranlogoptions altarchivelogdest instance g139bak1 /archivelog1/g139bak_archivelog, altarchivelogdest instance g139bak2 /archivelog2/g139bak_archivelog
--DDL INCLUDE mapped
--DDLOPTIONS ADDTRANDATA
DISCARDFILE ./dirrpt/ext_cal.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS,RATE
TRANLOGOPTIONS ALTARCHIVELOGDEST /archivelog2
FETCHOPTIONS MISSINGROW ABEND
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H,CHECKINTERVAL 10m
DYNAMICRESOLUTION
TABLE XIANYEZHAO.CALENDAR_DETAIL;
TABLE XIANYEZHAO.CALENDAR_INFO;
下面是查看内容:
GGSCI (gb139bak02) 5> view report ext_cal
4.6 创建投送进程: dp_cal
4.6.1 增加extract
add extract dp_cal, exttrailsource ./dirdat/ca
4.6.2 设定extract投递rmttrail
add rmttrail ./dirdat/ca, extract dp_cal
4.6.3 配置extract
edit params dp_cal
EXTRACT dp_cal
passthru
DYNAMICRESOLUTION
RMTHOST 192.168.219.35, MGRPORT 7809, COMPRESS
RMTTRAIL ./dirdat/ca
TABLE XIANYEZHAO.CALENDAR_DETAIL;
TABLE XIANYEZHAO.CALENDAR_INFO;
由于没有配置目标端的mgr进程,7809没有打开,网络报错,导致进程挂掉。
GGSCI (localhost.localdomain) 48> view report dp_cal
GGSCI (gb139bak02) 65> view report dp_cal
4.7 创建定义文件
在源端编辑defgen文件
su - oracle
cd ./dirprm
$ vi cal.prm
DEFSFILE /home/ogghome/dirdef/cal.def
USERID goldengate PASSWORD password
TABLE XIANYEZHAO.CALENDAR_DETAIL;
TABLE XIANYEZHAO.CALENDAR_INFO;
通过执行defgen命令生成定义文件
/home/ogghome/defgen PARAMFILE /home/ogghome/dirprm/cal.prm
***********************************************************************
Oracle GoldenGate Table Definition Generator for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Linux, x64, 64bit (optimized), Oracle 10g on Apr 23 2012 05:09:39
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
Starting at 2014-06-09 15:24:08
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Thu Sep 5 21:21:44 EDT 2013, Release 2.6.18-371.el5
Node: gb139bak02
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: 2014
***********************************************************************
** Running with the following parameters **
***********************************************************************
DEFSFILE /home/ogghome/dirdef/cal.def
USERID goldengate PASSWORD ********
TABLE XIANYEZHAO.CALENDAR_DETAIL;
Retrieving definition for XIANYEZHAO.CALENDAR_DETAIL
TABLE XIANYEZHAO.CALENDAR_INFO;
Retrieving definition for XIANYEZHAO.CALENDAR_INFO
Definitions generated for 2 tables in /home/ogghome/dirdef/cal.def
把生成的def文件传输到mysql端
[oracle@localhost dirdef]$ sftp mysql@192.168.61.131
Connecting to 192.168.61.131...
mysql@192.168.61.131's password:
sftp> cd /home/ogghome/dirdef
sftp> !ls
sftp> put cal.def
Uploading cal.def to /home/ogghome/dirdef/cal.def
cal.def 100% 1001 1.0KB/s 00:00
修改mysql端定义文件的权限
chown mysql:dba /home/ogghome/dirdef/cal.def
chmod 755 /home/ogghome/dirdef/cal.def
4.8 初始化数据
4.8.1 Oracle到oracle导出方式
1、查看系统改变号:
col current_scn for 999999999999999999999999999999
select current_scn from v$database;
--1138506
2、导出导入数据:
set linesize 133
col directory_path format a50
select * from dba_directories;
SYS DATA_PUMP_DIR /opt/oracle/app/admin/test/dpdump/
expdp \'/ as sysdba \' DIRECTORY=DATA_PUMP_DIR DUMPFILE=t3.dmp LOGFILE=t3.log TABLES=test.t3 FLASHBACK_SCN=1138506
impdp \'/ as sysdba \' DIRECTORY=DATA_PUMP_DIR DUMPFILE=t3.dmp LOGFILE=t3_imp.log TABLES=test.t3 REMAP_TABLESPACE=DATA_TEST:DATA_TEST
--REMAP_SCHEMA=TEST:TEST
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756