环境中,可以把manager进程添加到服务中,这样可以方便的管理,输入EDIT PARAMS ./GLOBALS,(注意./GLOBALS 最好使用大写)在弹出的的记事本编辑器中,输入以下代码:
mgrservname ggmgr
保存并退出后,回到 Windows 命令提示符,在 gg 根目录用 install 命令添加服务:install addservice ,然后手动命名的服务,这样就添加成功了。
D:\\ogg>install addservice Service ‘GGMGR’ created.
Install program terminated normally.
至此GoldenGate的安装就已经完成,是不是非常的简单,接下来要实现数据库的复制,只需要配置相应的参数和进程就可以实现,接下来我们就来进行配置。
5.3. 参数配置
在配置参数前,首先还要做个设置,就是添加表级的transdata,这里的表级的trandata就是指表级的supplemental log,做这个设置是为了在redo log 记录更多的过程信息,该操作只需要在源端执行就可以,如下面的操作,对ZLHIS和ZLTOOLS所有表添加表级transdata。
GGSCI(source)3>dblogin userid ggs,password ggs Successfully logged into database. GGSCI(source)4>add trandata zlhis.* GGSCI(source)5>add trandata zltools.*
? 配置源端参数文件
首先要对源端的manager进程参数进行配置,manager参数相当于是个全局参数,在这里可以设置日志的保留时间,是否自动启动Extract进程等相关信息。
GGSCI(source)>edit params mgr 写入下面的内容: port 7809
dynamicportlist 7800-8000
autorestart extract *,waitminutes 2,resetminutes 5
PURGEOLDEXTRACTS D:\\ogg\\dirdat\\*,usecheckpoints, minkeepdays 3 LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45
创建抽取进程,该进程用来对源端数据库的相关操作进行跟踪记录,以便在
11/ 18
目标端重复操作这些记录,达到同步的目的,其中目标端的ip地址为192.168.12.12,同样是D:\\OGG目录。
GGSCI(source)>edit params zlext 写入下面的内容: EXTRACT zlext
SETENV(ORACLE_HOME=\SETENV(ORACLE_SID=\
SETENV(NLS_LANG=%userid ggs, password ggs
rmthost 192.168.12.12,mgrport 7809 exttrail D:\\ogg\\dirdat\\e0 Dynamicresolution numfiles 3000 Gettruncates table ZLHIS.*; table ZLTOOLS.*;
GGSCI(source)>add extract zlext,tranlog,begin now EXTRACT added
GGSCI(source)>add exttrail d:\\ogg\\dirdat\\e0,extract zlext EXTTRAIL added
GGSCI(source)>add rmttrail d:\\ogg\\dirdat\\r0,extract zlext RMTRAIL added
配置Pump投递进程组,正如之前介绍的 Pump进程本质是Extract进程的一种特殊形式,他的目的是把源端抽取进程的trail日志传输到目标端。
GGSCI(source)>edit params zlpump 写入下面的内容: extract zlpump dynamicresolution numfiles 3000 passthru
rmthost 192.168.12.12,mgrport 7809,compress rmttrail d:\\ogg\\dirdat\\p0 exttrail d:\\ogg\\dirdat\\e0 table ZLHIS.*; table ZLTOOLS.*;
GGSCI(source)>add extract zlpump,exttrailsource d:\\ogg\\dirdat\\e0 EXTRACT added.
GGSCI(source)>add rmttrail d:\\ogg\\dirdat\\p0,extract zlpump RMTTRAIL added.
? 配置目标端参数文件
首先在目标端同样要配置manager进程参数,大体内容同源端差不多,如下:
12/ 18
GGSCI(target)>edit params mgr 写入下面的内容: port 7809
dynamicportlist 7800-8000
autorestart extract *,waitminutes 2,resetminutes 5
PURGEOLDEXTRACTS D:\\ogg\\dirdat\\*,usecheckpoints, minkeepdays 3 LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45
目标端的只需要配置replicat进程,比较简单,具体的参数如下:
GGSCI(target)>edit params zlrep 写入下面的内容: replicat zlrep
SETENV(ORACLE_HOME=\SETENV(ORACLE_SID=\
SETENV(NLS_LANG=\USERID ggs, PASSWORD ggs ASSUMETARRGETDEFS GETTRUNCATES
discardfile d:\\ogg\\dirrpt\\repsz.dsc,append, megabytes 10 map ZLHIS.*,target ZLHIS.*; map ZLTOOLS.* target ZLTOOLS.*;
? 初始化数据
通过前面的参数配置,GoldenGate在源端和目标端的配置就已经完成,但是在启用这些进程前我们还需要对目标端数据进行初始化,以保证数据的完整性,GoldenGate数据化初始化的方式有三种:
1. 使用数据库工具(rman/imp/impdp/dataguard)进行初始化,这种方法
最简单最有效;
2. Extract 进程把数据抽取到文件然后 Replicat 进程投递到容灾端数据库,
这是方法的缺点是比较慢。
3. Extract 进程把抽取数据到到一个外部表,然后通过外部工具导入到容灾
库中。
4. Extract 进程把数据抽取到一个外部表文件,然后通过 SQL*Loader 工具
把数据导入到容灾端
针对目前我们ZLHIS的数据量大小,我们一般建议采用数据库工具进行初始化,优先采用rman和impdp的方式,这里我们以impdp为例,简单介绍下目标
13/ 18
端初始化的操作过程
首先保证源端的抽取进程为运行状态,这样是为了保证能够捕获源端的数据的变化情况。
GGSCI(source)>start zlext
Sending START request to MANAGER ... EXTRACT ZLEXT starting GGSCI(source)>start zlpump Sending START request to MANAGER ... EXTRACT ZLPUMP starting GGSCI (source)> info all
Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ZLEXT 00:00:00 00:00:02 EXTRACT RUNNING ZLPUMP 00:00:00 00:00:02
在保证源端捕获进程启动的情况下,查询源端数据库当前的SCN号,以便目标端启动同步进程时使用。
SQL>select current_scn from v$database; CURRENT_SCN ----------- 83294457
通过EXPDP导出源端数据,并且指定flashback_scn参数。
expdp
sys/oracle
directory=backup
dumpfile=back.dmp
dmplogfile=back.log
full=y
flashback_scn=83294457;
在目标端通过IMPDP导入备份的DMP文件,然后禁用目标端数据库的自动作业、触发器,外键约束等。
impdp sys/oracle directory=backup dumpfile=back.dmp logfile=back.log full=y;
最后在目标端启动Replicat进程,启动的时候指定SCN,应用基于该SCN之后,保证数据的一致性。
GGSCI (target) > start zlrep, aftercsn 83294457 Sending START request to MANAGER ... REPLICAT ZLREP starting GGSCI (target)> info all
Program Status Group Lag Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING ZLREP 00:00:00 00:00:02
至此,目标端的初始化和同步已经完成,等待同步完成后,两边的数据就会完全一致。
14/ 18
6. GoldenGate价值与局限性 6.1. GoldenGate价值
结合GoldenGate软件的特性,综合评估其在ZLHIS体系内还是有很应用前景,主要有以下几个应用环境。 ? HIS系统的实时容灾
目前HIS系统的实时容灾主要采用DataGuard实现,但是其有个局限就是必须要求容灾环境的操作系统同主服务器相同,特别是主服务是小机环境,就对容灾环境的硬件投入比较高,如果用GoldenGate就没有这方面的限制。 ? 报表仓库和数据挖掘
利用GoldenGate的复制功能,目标端数据库是可以正常访问,利用这个特性可以异机构建生产库的报表仓库和数据挖掘实例,分担生成库由于报表统计和数据采集产生的开销。
6.2. GoldenGate局限性
? 初始化比较困难
虽然GoldenGate给出了几个初始化的方式,但是针对大数据量和有停机时间限制的异构平台,初始化仍然是非常大的工作量,实际搭建环境时推荐使用同平台的RMAN方式初始化。 ? 中文支持力度还不够
虽然GoldenGate 11g在中文字符支持上已经有了很大的进步,但是在实际测试过程中发现,还是有很多不足之处,如在GGSCI窗口添加trandata表时,中文表或字段就会提示错误,如下图’?’为中文,但无法显示。
15/ 18