长事务的影响
OGG是基于事务级的实时复制工具,也就是说OGG只复制已提交的事务,在遇到事务的commit或rollback之前,它会将每个事务的操作存储在称为cache的托管虚拟内存池中。内存再大也有不够用的时候,当事务数据超过一定的阈值或者当前空闲内存无法满足分配请求时,OGG进程会将最少使用的old buffer swap 到磁盘上的dirtmp中。
当OGG遇到长事务时,如果extract进程因某种原因终止,原有的文件系统上的临时数据都将被删除,重启后会根据recoverycheckpoint查找最早开始进行的长事务起始点所在的归档日志进行恢复,如果重启时发现所需归档被删除,则extract进程将无法重启,只能通过恢复归档或初始化解决。即使归档存在,重启后进行recovery会很大程度影响OGG 的性能。
长事务的处理
1.监控ggserr.log 中的长事务警告,可以通过配置extract 进程参数warnlongtrans 调整警告频率
2.监控数据库中的长事务
selectstart_timefrom gv$transaction;
3.ggsci提供了如下命令来处理未提交事务
send extract ,showtrans查看正在处理的未提交事务
send extract ,skiptrans跳过事务(不建议)
send extract ,forcetrans强制认为事务已经提交(不建议)
建议所有的事务提交或回滚操作都在数据库中进行
4.说明:在OGG11g中,extract提供了BR参数可以设置每隔一段时间(默认4小时)将长交易缓存及BR检查点到本地硬盘(默认dirtmp目录下),因此extract只要不停止一般需要的归档日志不超过8个小时(极限情况)。但是如果extract停掉后,便无法再自动缓存长交易,需要的归档日志就会依赖于停机时间变长。
相关阅读:
RAC环境下管理OGG-HA
RAC环境下配置OGG同步
GoldenGate单向表DML同步
Oracle GoldenGate 系列:Extract 进程的恢复原理
Oracle GoldenGate安装配置
Oracle goldengate的OGG-01004 OGG-1296错误