GoldenGate运维手册.docx
- 文档编号:23308745
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:27
- 大小:31.39KB
GoldenGate运维手册.docx
《GoldenGate运维手册.docx》由会员分享,可在线阅读,更多相关《GoldenGate运维手册.docx(27页珍藏版)》请在冰豆网上搜索。
GoldenGate运维手册
GOLDENGATE运维手册
2014年4月
文档修改记录
版本号
日期
说明
编写者
审核者
2014/4
文档编写
1OGG常用监控命令
1.1说明
对GoldenGate实例进行监控,最简单的办法是通过GGSCI命令行的方式进行。
通过在命令行输入一系列命令,并查看返回信息,来判断GoldenGate运行情况是否正常。
命令行返回的信息包括整体概况、进程运行状态、检查点信息、参数文件配置、延时等。
除了直接通过主机登录GGSCI界面之外,也可以通过GoldenGateDirectorWeb界面登录到每个GoldenGate实例,并运行GGSCI命令。
假如客户部署了很多GoldenGate实例,如果单独登录到每个实例的GGSCI界面,会很不方便,此时建议通过GoldenGateDirectorWeb界面,登录到每个实例,并运行命令行命令。
1.2启动GoldenGate进程
1)首先以启动GoldenGate进程的系统用户(一般为oracle)登录源系统。
2)进入GoldenGate安装目录,执行./ggsci进入命令行模式。
3)启动源端管理进程GGSCI>startmgr
4)同样登陆到目标端GoldenGate安装目录,执行./ggsci,然后执行GGSCI>startmgr启动管理进程。
5)在源端执行GGSCI>starter*启动所有进程
6)同样登录到备份端执行GGSCI>starter*启动所有进程
7)使用GGSCI>infoer*或者GGSCI>info<进程名>察看进程状态是否为Running(表示已经启动)。
注意有的进程需要几分钟起来,请重复命令观察其启动状态。
说明:
无论源还是目标,启动各extract/replicat进程前需要启动mgr进程。
start命令的一般用法是:
start<进程名称>
如:
GGSCI>startextdm启动一个名叫extdm的进程
也可以使用通配符,如:
GGSCI>starter*启动所有的extract和replicat进程
GGSCI>startextract*d*启动所有的包含字符‘d’extract进程
GGSCI>startreplicatrep*启动所有以“rep“开头的replicat进程
1.3停止GoldenGate进程
依照以下步骤停止GoldenGate进程:
1)以启动GoldenGate进程的系统用户(一般为oracle)登录源主机,进入GoldenGate安装目录执行./ggsci进入命令行管理界面
2)(本步骤仅针对抽取日志的主extract进程,datapump进程和replicat进程不需要本步骤)验证GoldenGate的抽取进程重起所需的日志存在,对各个主extXX进程,执行如下命令:
3)ggsci>infoextXX,showch
…..
ReadCheckpoint#1
….
RecoveryCheckpoint(positionofoldestunprocessedtransactioninthedatasource):
Thread#:
1
Sequence#:
9671
Timestamp:
2008-05-2011:
39:
RedoFile:
Notavailable
CurrentCheckpoint(positionoflastrecordreadinthedatasource):
Thread#:
1
Sequence#:
9671
Timestamp:
2008-05-2011:
39:
RedoFile:
NotAvailable
ReadCheckpoint#2
…..
RecoveryCheckpoint(positionofoldestunprocessedtransactioninthedatasource):
Thread#:
2
Sequence#:
5287
Timestamp:
2008-05-2011:
37:
RedoFile:
/dev/rredo07
CurrentCheckpoint(positionoflastrecordreadinthedatasource):
Thread#:
2
Sequence#:
5287
Timestamp:
2008-05-2011:
39:
RedoFile:
/dev/rredo07
…..
首先察看RecoveryCheckpoint所需要读取的最古老日志序列号,如举例中的实例1需要日志9671及其以后所有归档日志,实例2需要序列号为5287及以后所有归档日志,确认这些归档日志存在于归档日志目录后才可以执行下一步重起。
如果这些日志已经被删除,则下次重新启动需要先恢复归档日志。
注意:
对于OGG11及以后版本新增了自动缓存长交易的功能,缺省每隔4小时自动对未提交交易缓存到本地硬盘,这样只需要最多8个小时归档日志即可。
但是缓存长交易操作只在extract运行时有效,停止后不会再缓存,此时所需归档日志最少为8个小时加上停机时间,一般为了保险起见建议确保重启时要保留有12个小时加上停机时间的归档日志。
4)执行GGSCI>stoper*停止所有源进程,或者分别对各个进程执行stop<进程名>单独停止。
5)以oracle用户登录目标系统,进入安装目录/oraclelog1/goldengate,执行./ggsci进入命令行。
6)在目标系统执行stoper*停止复制
7)在两端进程都已停止的情况下,如需要可通过stopmgr停止各系统内的管理进程。
类似的,stop命令具有跟start命令一样的用法。
这里不再赘述。
注意,如果是只修改抽取或者复制进程参数,则不需要停止MGR。
不要轻易停止MGR进程,并且慎重使用通配符er*,以免对其他复制进程造成不利影响。
1.4查看整体运行情况
进入到GoldenGate安装目录,运行GGSCI,然后使用infoall命令查看整体运行情况。
如下图示:
Group表示进程的名称(MGR进程不显示名字);Lag表示进程的延时;Status表示进程的状态。
有四种状态:
STARTING:
表示正在启动过程中
RUNNING:
表示进程正常运行
STOPPED:
表示进程被正常关闭
ABENDED:
表示进程非正常关闭,需要进一步调查原因
正常情况下,所有进程的状态应该为RUNNING,且Lag应该在一个合理的范围内。
1.5查看参数设置
使用viewparams<进程名>可以查看进程的参数设置。
该命令同样支持通配符*。
1.6查看进程状态
使用info<进程名称>命令可以查看进程信息。
可以查看到的信息包括进程状态、checkpoint信息、延时等。
如:
还可以使用info<进程名称>detail命令查看更详细的信息。
包括所使用的trail文件,参数文件、报告文件、警告日志的位置等。
如:
使用info<进程名称>showch命令可以查看到详细的关于checkpoint的信息,用于查看GoldenGate进程处理过的事务记录。
其中比较重要的是extract进程的recoverycheckpoint,它表示源数据中最早的未被处理的事务;通过recoverycheckpoint可以查看到该事务的redolog位于哪个日志文件以及该日志文件的序列号。
所有序列号比它大的日志文件,均需要保留。
1.7查看延时
GGSCI>lag<进程名称>可以查看详细的延时信息。
如:
此命令比用info命令查看到的延时信息更加精确。
注意,此命令只能够查看到最后一条处理过的记录的延时信息。
此命令支持通配符*。
1.8查看统计信息
GGSCI>stats<进程名称>,<时间频度>,table
该报告会详细的列出处理的类型和记录数。
如:
GGSCI>statsedr,total列出自进程启动以来处理的所有记录数。
GGSCI>statsedr,daily,table列出当天以来处理的有关表的所有记录数。
1.9查看运行报告
GGSCI>viewreport<进程名称>可以查看运行报告。
如:
也可以进入到
最新的报告总是以<进程名称>.rpt命名的。
加后缀数字的报告是历史报告,数字越大对应的时间越久。
如下图示:
如果进程运行时有错误,则报告文件中会包括错误代码和详细的错误诊断信息。
通过查找错误代码,可以帮助定位错误原因,解决问题。
2OGG的常见运维任务指南
2.1配置自动删除队列
1)进入安装目录执行./ggsci;
2)执行editparammgr编辑管理进程参数,加入或修改以下行
purgeoldextracts/
其中,第一个参数为队列位置,*可匹配备份中心所有队列文件;
第二个参数表示是首先要保证满足检查点需要,不能删除未处理队列;
第三个参数表示最小保留多少天,后面的数字为天数。
例如,如果希望只保留队列/ggs/dirdat/xm文件3天,可以配置如下:
purgeoldextracts/ggs/dirdat/xm,usecheckpoint,minkeepdays3
3)停止MGR进程,修改好参数后重启该进程
GGSCI>stopmgr
输入y确认停止
GGSCI>startmgr
注:
临时停止mgr进程并不影响数据复制。
2.2配置启动MGR时自动启动Extract和Replicat进程
1)进入安装目录执行./ggsci;
2)执行editparammgr编辑管理进程参数,加入以下行
AUTOSTARTER*
3)停止MGR进程,修改好参数后重启该进程
GGSCI>stopmgr
GGSCI>startmgr
注意:
一般建议不用自动启动,而是手工启动,便于观察状态验证启动是否成功,同时也便于手工修改参数。
2.3配置MGR自动重新启动Extract和Replicat进程
GoldenGate具有自动重起extract或者replicat进程的功能,能够自动恢复如网络中断、数据库临时挂起等引起的错误,在系统恢复后自动重起相关进程,无需人工介入。
1)进入安装目录执行ggsci进入命令行界面;
2)执行editparammgr编辑管理进程参数,加入以下行
AUTORESTARTER*,RETRIES3,WAITMINUTES5,RESETMINUTES60
以上参数表示每5分钟尝试重新启动所有进程,共尝试三次。
以后每60分钟清零,再按照每5分钟尝试一次共试3次。
3)停止MGR进程,修改好参数后重启该进程,使修改后的参数文件生效
GGSCI>stopmgr
GGSCI>startmgr
2.4长事务管理
在停止抽取进程前需要通过命令检查是否存在长交易,以防止下次启动无法找到归档日志:
ggsci>infoextXX,showch
…..
ReadCheckpoint#1
….
RecoveryCheckpoint(positionofoldestunprocessedtransactioninthedatasource):
Thread#:
1
Sequence#:
9671
Timestamp:
2008-05-2011:
39:
RedoFile:
Notavailable
CurrentCheckpoint(positionoflastrecordreadinthedatasource):
Thread#:
1
Sequence#:
9671
Timestamp:
2008-05-2011:
39:
RedoFile:
NotAvailable
ReadCheckpoint#2
…..
RecoveryCheckpoint(positionofoldestunprocessedtransactioninthedatasource):
Thread#:
2
Sequence#:
5287
Timestamp:
2008-05-2011:
37:
RedoFile:
/dev/rredo07
CurrentCheckpoint(positionoflastrecordreadinthedatasource):
Thread#:
2
Sequence#:
5287
Timestamp:
2008-05-2011:
39:
RedoFile:
/dev/rredo07
…..
为了方便长交易的管理,GoldenGate提供了一些命令来查看这些长交易,可以帮助客户和应用开发商查找到对应长交易,并在GoldenGate中予以提交或者回滚。
(一)查看长交易的方法
Ggsci>sendextract<进程名>,showtrans[threadn][countn]
其中,<进程名>为所要察看的进程名,如extsz/extxm/extjx等;
Threadn是可选的,表示只查看其中一个节点上的未提交交易;
Countn也是可选的,表示只显示n条记录。
例如,查看extsz进程中节点1上最长的10个交易,可以通过下列命令:
Ggsci>sendextractextsz,showtransthread1count10
输出结果是以时间降序排列的所有未提交交易列表,通过xid可以查找到对应的事务,请应用开发商和DBA帮助可以查找出未提交原因,通过数据库予以提交或者回滚后GoldenGate的checkpoint会自动向前滚动。
(二)使用GoldenGate命令跳过或接受长交易的方法
在GoldenGate中强制提交或者回滚指定事务,可以通过以下命令(<>中的为参数):
Ggsci>SENDEXTRACT<进程名>,SKIPTRANS<>THREAD<2>10m以上表示GoldenGate会每隔10分钟检查一下长交易,如果有超过12个小时的长交易,GoldenGate会在根目录下的里面加入一条告警信息。
可以通过察看或者在ggsci中执行viewggsevt命令查看这些告警信息。
以上配置可以有助于及时发现长交易并予以处理。
说明:
在OGG11g中,extract提供了BR参数可以设置每隔一段时间(默认4小时)将长交易缓存到本地硬盘(默认dirtmp目录下),因此extract只要不停止一般需要的归档日志不超过8个小时(极限情况)。
但是如果extract停掉后,便无法再自动缓存长交易,需要的归档日志就会依赖于停机时间变长。
2.5表的重新再同步(需时间窗口)
如果是某些表由于各种原因造成两边数据不一致,需要重新进行同步,可以参照以下步骤。
1)确认需要修改的表无数据变化(如果有条件建议停止应用系统并锁定除去sys和goldengate以外的其它所有用户防止升级期间数据变化,或者锁定所要再同步的表);
2)重启dpe进程(为了能够对统计信息清零);
3)停止目标端的rep进程;
注意:
步骤4-6为将源端数据通过exp/imp导入到目标端,客户也可以选择其它初始化方式,比如在目标端为源端表建立dblink,然后通过createtableasselectfrom的方式初始化目标端表。
4)在源端使用exp导出该表或者几张表数据。
例如:
expgoldengate/XXXXfile=tables=grants=y
5)通过ftp传输到目标端;
6)在目标端,使用imp导入数据;
nohupimpgoldengate/XXXXXfile=fromuser=ctais2touser=ctais2ignore=y&
7)如果这些表有外键,在目标端检查这些外键并禁止它们(记得维护dirsql下的禁止和启用外键的脚本SQL);
8)启动目标端的rep进程;
9)使用statsmydpe命令观察datapump的统计信息,观察里面是否包含了本次重新同步表的数据变化,如确认该时段内这些表无数据变化,则重新初始化成功;否则中间可能产生重复数据,目标replicat会报错,将错误处理机制设置为reperrordefault,discard,等待replicat跟上后对discard中的记录进行再次验证,如果全部一致则重新初始化也算成功完成,当然也可以另择时段对这些表重新执行初始化。
2.6表的重新再同步(无需时间窗口)
如果是某些表由于各种原因造成两边数据不一致,需要重新进行同步,但实际业务始终24小时可用,不能提供时间窗口,则可以参照以下步骤。
(因较为复杂,使用需谨慎!
)
1)确认ext/dpe/rep进程均无较大延迟,否则等待追平再执行操作;
2)停止目标端的rep进程;
注意:
步骤3-5为将源端数据通过exp/imp导入到目标端,客户也可以选择其它初始化方式,比如expdp/impdp。
3)在源端获得当前的scn号。
例如:
selectfromdual;
以下以获得的scn号为1176681为例
4)在源端使用exp导出所需重新初始化的表或者几张表数据,并且指定到刚才记下的scn号。
例如:
exp
5)通过ftp传输到目标端;
6)在目标端,使用imp导入数据;
nohupimpgoldengate/XXXXXfile=fromuser=ctais2touser=ctais2ignore=y&
7)如果这些表有外键,在目标端检查这些外键并禁止它们(记得维护dirsql下的禁止和启用外键的脚本SQL);
8)编辑目标端对应的rep参数文件,在其map里面加入一个过滤条件,只对这些重新初始化的表应用指定scn号之后的记录(一定要注意不要修改本次初始化之外的其它表,会造成数据丢失!
):
map,target,filter(@GETENV("TRANSACTION","CSN")>1176681);
9)确认参数无误后,启动目标端的rep进程;
10)使用inforepxx或者lagrepxx直到该进程追上,停止该进程去掉filter即可进入正常复制。
3数据结构变更和应用升级
3.1(仅复制DML时)源端和目标端数据库增减复制表
(一)增加复制表
在GoldenGate的进程参数中,如果通过*来匹配所有表,因此只要符合*所匹配的条件,那么只要在源端建立了表之后GoldenGate就能自动复制,无需修改配置文件,但是需要为新增的表添加附加日志。
步骤如下:
GGSCI〉dbloginuseridgoldengate,passwordXXXXXXX
GGSCI>infotrandata
如果不是enable则需要手动加入:
GGSCI>addtrandata
注:
(仅对Oracle9i)如果该表有主键或者该表不超过32列,则显示enabled表示添加成功;如果无主键并且列超过32列,则可能出现错误显示无法添加则需要手工处理,此时请根据附录二中方法手工处理。
如果没有使用统配符,则需要在主Extract、DataPump里面最后的table列表里加入新的复制表;在目标端replicat的map列表同样也加入该表的映射。
然后,新增表请首先在目标端建立表结构。
如果有外键和trigger,需要在目标表临时禁止该外键和trigger,并维护在dirsql下的禁止和启用这些对象的对应脚本文件。
对于修改了文件的所有源和目标进程,均需重启进程使新的参数生效。
(二)减少复制表
GoldenGate缺省复制所有符合通配符条件的表,如果有的表不再需要,可以在源端drop掉,然后到目标drop掉,无需对复制做任何修改。
如果其中几个表依然存在,只是无需GoldenGate复制,则可以通过以下步骤排除:
1)在源端系统上首先验证所需归档日志存在后通过stopextXX停止对应的extXX进程;
2)在目标端系统上ggsci中执行stoprepXX停止目标端的复制进程;
3)在源端修改ext进程的参数文件排除所不复制的表:
Ggsci>editparamextXX
……
tableexclude*;
tableexclude*;
tableexclude$_*;
tableexclude$_*;
tableexclude*;
tableexclude;
tablectais2.*;
…….
在文件定义table的行前面加入一行“tableexclude
注:
如果是没有使用通配符,则直接注释掉该表所在的table行即可。
4)在目标端修改rep进程参数,同样排除该表:
GGSCI>editparamrepXX
在map前面加入一行:
--mapexclude
mapexclude
MAPctais2.*,TARGETctais2.*;
注:
如果是没有使用通配符,则直接注释掉该表所在的map行即可。
5)在目标端系统上启动复制进程repXX
GGSCI>startrepXX
6)在源端系统上启动源端的抓取进程extXX
GGSCI>startextXX
即可进入正常复制状态。
3.2(仅复制DML时)修改表结构
当数据库需要复制的表结构有所改变,如增加列,改变某些列的属性如长度等表结构改变后,可以按照下列步骤执行:
1)按照本文前面所述操作顺序停止源和目标端各抽取及投递进程(注意停源端抽取要验证一下归档日志是否存在防止无法重起),无需停止manager进程;
2)修改目标表结构;
3)修改源表结构;
4)如果表有主键,并且本次修改未修改主键,则可以直接启动源和目标所有进程继续复制,完成本次修改;否则,如果表无主键或者本次修改了主键则需继续执行下列步骤;
ggsci>dbloginuseridgoldengate,passwordXXXXXX
ggsci>deletetrandata
ggsci>addtrandata
(仅对Oracle9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GoldenGate 手册