OGG单向复制Word格式.docx
- 文档编号:21552121
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:15
- 大小:229.29KB
OGG单向复制Word格式.docx
《OGG单向复制Word格式.docx》由会员分享,可在线阅读,更多相关《OGG单向复制Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
-------------------------------------------------------OGG简介-----------------------------------------------------------
OracleGoldenGate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库目标数据库同步。
OracleGoldenGate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。
同时,OracleGoldenGate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构
---------------------------------------------------------------------------------------------------------------------------------
1.环境准备
1.1平台源端:
windowservice2003oracle11gip:
192.168.1.34
scott用户做同步,建立表t1做dml同步
目标端:
RedHatLinux6.2oracle11gip:
192.168.1.77
目标:
实现window到Linux跨平台OGG数据同步
1.2注意事项和配置环境变量
1.2.1service03添加环境变量
windows要先装MicrosoftVisualC++2005,OGG会用到它的一些库
添加环境变量在系统属性-高级-环境变量里面设置如下两个环境变量的值,如添加
ORACLE_HOME=C:
\app\Administrator\product\11.2.0\db
ORACLE_SID=test
1.2.2Linux目标端添加环境变量
Linux在.bash_profile里添加
exportGGS_HOME=/u01/app/ogg
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:
/lib:
/usr/lib:
$GGS_HOME
exportPATH=/usr/sbin:
/usr/bin:
$ORACLE_HOME/bin:
$PATH:
1.2.3解压软件包创建OGG软件目录
1.解压软件包后,前面已经添加了环境变量,到OGG目录下运行ggsci
unzipogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
tar-xvffbo_ggs_Linux_x64_ora11g_64bit.tar
进入ggsci界面后开始创建配置OGG所需要的目录
createsubdirs/*两台机器都执行*/
exit退出
1.3配置ogg前数据库准备
1.3.1源端查看归档
源端检查数据库是否开启归档,如果没有则关闭数据库开启归档
archiveloglist;
shutdownimmediate;
startupmount;
alterdatabasearchivelog;
alterdatabaseopen;
alterdatabaseforcelogging;
1.3.2源端开启supplementallog
查看并在源端库中打开数据库级别的supplementallog
selectsupplemental_log_data_minfromv$database;
alterdatabaseaddsupplementallogdata;
altersystemswitchlogfile;
1.3.3关闭数据库回收站
altersystemsetrecyclebinoffscope=spfiel;
2.进程配置及注意事项
源端和目标端进入ggsci界面配置mgr进程
2.1创建goldengate管理用户
添加manager进行到windows服务手动指定服务名GGMGR(默认就是GGMGR)。
用editparams./GLOBALS命令(注意./GLOBALS为大写),进入编辑文件,输入下面内容
MGRSERVNAMEGGMGR
--ggschemaggs配置ddl同步时需要
保存退出,回到Windows命令行,用install命令添加服务
C:
\ogg>
installaddservice
创建goldengate管理用户(如果要配置ddl就要授dba给OGG管理用户)
--在源端创建ggs用户
SQL>
createuserggsidentifiedbyggsdefaulttablespaceuserstemporarytablespacetemp;
grantconnect,resource,unlimitedtablespacetoggs;
grantexecuteonutl_filetoggs;
grantselectanydictionary,selectanytabletoggs;
grantalteranytabletoggs;
grantflashbackanytabletoggs;
grantexecuteondbms_flashbacktoggs;
--在源和目标端创建测试表
createtabledemo(idnumberprimarykey,enamevarchar2(10));
--在目标端创建ggs用户
grantdbatoggs;
2.2mgr进程基本配置(注:
目标和源都需配置)
port7039#mgr进程端口
DYNAMICPORTLIST7840-7845#自动分配端口
AUTOSTARTEXTRACT*#自动启动抽取进程
AUTORESTARTEXTRACT*,RETRIES5,WAITMINUTES2#自动启动抽取进程,每2分钟一次可以尝试5次
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints,minkeepdays3#自动清理已经应用过的文件,只保存3天,到时间后删除
purgemarkerhistoryminkeepdays3,maxkeepdays7,frequencyminutes120#清理DDL复制数据,配ddl后可以配置
--ddlincludemapped
--ddloptionsaddtrandatareport(配置ddl时才需要)
LAGREPORTHOURS1
LAGINFOMINUTES30
LAGCRITICALMINUTES45#以上3个参数定义数据延迟的预警机制:
本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。
注:
源和目标的port端口一定要是未被占用可以通讯的相同端口
2.3源端配置抽取进程
添加进程组
addextractext1,tranlogbeginnow*/抽取进程,进程名不超过8个字符
添加本地trail文件
addexttrailC:
\ogg\dirdat\ex,extractext1megabytes1024
添加目标端接收trail文件地址及信息
addrmttrail/u01/app/ogg/dirdat/ex,extractext1megabytes1024
extract进程基本配置:
extractext1#添加extract进程到进程组里
setenv(ORACLE_SID="
test"
)#设置ORACLE_SID
useridggs,passwordggs#设置OGG使用登录数据库的用户名和密码
exttrail./dirdat/ex#若源端要配置pump进程,则配置此参数
--gettruncates#抓取truncate信息,可以在开启DDL复制时注销掉
dynamicresolution#动态解析表结构
rmthost192.168.1.77mgrport7039#指定目标主机(IP或主机名)和其GoldenGatemgr进程的端口号,若源端要配置PUMP进程,则此处不配置此参数
rmttrailC:
\ogg\dirdat\ex#目标队列,注意是在目标主机上位置,若源端要配置pump进程,则此处不配置此参数
ddlincludeall#同步除ogg和oracle数据库自带的用户外所有用户的DDL操作,可详细配置
tabletable.*;
#指定要复制的表,可以用*匹配
*注:
1.源端开启了mgr和extract进程后再来做基于scn或时间点的备份或导出,不可以先备份然后导出,因为extract只收集开启后的事务和数据更改,只有先开启extract进程,后面始化出来的数据才能保证数据的完整性。
在开启extract进程后就可以准备初始化(初始化方法比较多常用的有导入导出和rman,以及goldengateinitailload等,任选一个即可)
*{
基于SCNexpdp导出业务用户数据
可先建立一个测试用户,测试goldengate的可用性
在SourceDB查询当前的SCN
selectcurrent_scnfromv$database;
或者
selectdbms_flashback.get_system_change_numberfromdual;
$expdpexp_user/exp_passwdschemas=xxdirectory=dp_dirdumpfile=xx.dmplogfile=xx_2014***.logexclude=grant,statistics,triggerflashback_scn=SCN_INIT;
}*
2.如果不开启pump进程,在extract进程中就要加入一条
rmttrail/u01/app/ogg/dirdat/ex直接将抓取的trail文件投递到目标端
2.4源端配置pump进程
注:
pump进程本质上来讲也是extract进程的一种,pump进程会将trail以数据块通过TCP/IP协议发送到目标,如果本不生成trail文件直接投递就不需要pump进程了,不过建议配置次进程。
添加pump进程组
addextractdpext,exttrailsourceC:
\ogg\dirdat\ex(提取本地trail文件位置)
\ogg\dirdat\ex,extractext1,megabytes1024
addrmttrail/u01/app/ogg/dirdat/ex,extractext1,megabytes1024(定义投递到目标端trail文件的位置)
pump进程基本配置
extractdpext
passthru#passthru表示本进程是一个传输进程datapump,无需跟数据库交互,只需要搬运数据即可
rmthost192.168.1.77mgrport7039,compress#指定目标主机(IP或主机名)和其GoldenGatemgr进程的端口号
rmttrailD:
\ogg\dirdat\ra#目标队列,注意是在目标主机上位置
tablesender.*;
#指定要复制的表,可以用*匹配
2.6目标端添加检测点表
editparams./GLOBALS
checkpointtableggs.ckpt
--ggschemaggs配置ddl同步时需要
dbloginuseridggs,passwordoracle
addcheckpointtableggs.ckpt
2.7目标端配置replicat进程
添加replicat进程组,配置复制进程参数
addreplicatrep1,exttrail/u01/app/ogg/dirdat/excheckpointtableggs.ckpt(检查点表的名字:
用户名.ckpt)
replicat进程基本配置
replicatrep1
useridggs,passwordoracle#配置数据库用户名和密码
reperrordefaultabend
assumetargetdefs#表示源和目标表的结构相同,即相同数据库类型、表的字段定义相同
gettruncates#抓取truncate文件
dynamicresolution#动态解析表的结构,加快启动速度
allownoopupdates#允许假的update,即没有引起数据变化的update,例如updateseta=a
--ddlerrorignoreretryopmaxretries3retrydelay10&
includeall(开启ddl复制才需要)
mapscott.*,targetscott.*;
#映射源用户的所有表复制到目标下端的某个用户下*/下此次试验以scott用户为例
*******注:
在配好replicat进程,开启进程前完成初始化*******
*注:
数据库采用的是asm管理那么还需要配置asm的连通性,确保OGG也可以连接到asm实例
impdp导入数据
在目标端使用impdp工具导入,指定table_exist_action=truncate选项
impdpimp_user/imp_passwdschemas=xxdirectory=dp_dirdumpfile=xx.dmplogfile=xx_2014***.log
ggsci>
startrep1,atscn(scn_number)
禁用目标端触发器、外键约束、check约束和具有DML操作的job的脚本编写:
为了保证初始化成功,在做初始化前应在同步目标端数据库禁用触发器、外键约束和具有DML操作的job,这些因素都可能导致初始化后两端数据的不一致,因为外键约束可能导致插入错误,而trigger和有DML操作的job可能导致容灾数据的产生,使容灾端出现重复数据。
尽量避免在往一个库导入的同时,在从该库进行导出,以保证有足够的undo资源可用。
{*
禁用触发器和约束的脚本
declare
v_sqlvarchar2(1000);
CURSORc_triggerisselect'
altertrgger'
||owner||'
.'
||trigger_name||'
disable'
fromdba_triggerswhereownerin('
scott'
'
test'
);
BEGIN
OPENc_trigger;
LOOP
FETCHc_triggerINTOv_sql;
EXITWHENc_trigger%NOTFOUND;
executeimmediatev_sql;
endloop;
closec_trigger;
end;
/
CURSORc_refisselect'
altertabel'
||owner||'
||table_name||'
disableconstraint'
||constraint_namefromdba_constraintswhereconstraint_type='
R'
andownerin('
FETCHc_refINTOv_sql;
EXTIWHENc_ref%NOTFOUND;
closec_ref;
*}
3.测试
3.1dml测试
开启目标端replicat进程开始接收trail文件
在源端scott下表t1,插入一行数据后提交,到目标去查看是否有数据同步过来
insertintot1values(8,'
lida'
commit;
到目标端sqlplusscott/oracle
select*fromt1;
查看结果,数据同步过来表示OGG配置成功,不同步回头检查(排错后面介绍)
3.2ddl测试
3.2.1权限更改
实施OGGddl复制OGG用户要有dba权限
grantdbatoggs;
在前面的基础上开启ddl复制
关闭目标extract,目标replicat进程
关闭回收站
3.2.2执行ddl配置脚本
进入sqlplus执行以下脚本*注:
执行marker_setup是无法执行要检查下是哪个用户,如果sys不行就切换到goldengate用户执行*
@marker_setup该脚本用于创建DDL的marker表GGS_MARKER,用于存储DDL信息,该表只进行insert操作
@ddl_setup该脚本创建了进行DDL复制抽取和复制所需的对象
@role_setup创建DDL复制所需的对象
3.2.3源端执行ddl到目标查看结果
重启源端抽取进程和目标端的复制进程
源端:
切换到scott用户,创建表t3
ctratetablet3(idnumber(10)primarykey,enamechar(10));
到目标端scott用户下查看
selecttable_namefromuser_tables;
目标端找到t2这张表就OK了
4查看错误报告
4.1进程错误报告
viewreport进程名查看进程报错情况
例:
viewreportmgr
4.2警告日志
viewggsevt查看警告日志
4.3ggserr日志
OGG安装目录下有个ggserr.log,查看OGG错误信息
常见错误分类:
1.OGG进程是否有读取数据库日志文件的权限
2.环境变量是否设置和生效如果只是一个instance,那么在系统级别设置ORACLE_HOME和ORACLE_SID,如果不能设置,可以设置GGExtract和Replicat组的SETENV参。
SETENV(ORACLE_HOME="
<
pathtooraclehomelocation>
"
)
SETENV(ORACLE_SID="
SID>
--SETENV参数会覆盖系统级别的设置。
--如果有多个instance,那么就需要对每个Extract和Replicat进程组设置SETENV
3.网路不通,这时候就要去检查你的参数设置和数据库网络服务,如果网络都能ping通可以远程访问就要去检查参数了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OGG 单向 复制