当前位置:  数据库>oracle

停止OGG e进程时遭遇长事务分析

    来源: 互联网  发布时间:2017-06-15

    本文导语: 日常在进行数据库维护时经常要停止ogg进程,有时会遇到提示当前有一个长时间执行的事务存在的错误,OGG提示可使用  SEND EXTRACT EHXZG001, FORCESTOP命令强制停止进程。然后最后重启该进程需要读取的是20939和12852两个redo日志。 GGSC...

日常在进行数据库维护时经常要停止ogg进程,有时会遇到提示当前有一个长时间执行的事务存在的错误,OGG提示可使用  SEND EXTRACT EHXZG001, FORCESTOP命令强制停止进程。然后最后重启该进程需要读取的是20939和12852两个redo日志。

GGSCI (gdlt2hxzgdb02) 21> stop *
Sending STOP request to EXTRACT EHXZG001 ...
There are open, long-running transactions. Before you stop Extract, make the archives containing data for those transactions available for when Extract restarts. To force Extract to stop, use the SEND EXTRACT EHXZG001, FORCESTOP command.
Oldest redo log files necessary to restart Extract are:
Redo Thread 1, Redo Log Sequence Number 20939, SCN 3340.2050804863 (14347241573503), RBA 47790608
Redo Thread 2, Redo Log Sequence Number 12852, SCN 3340.2057322291 (14347248090931), RBA 4788752.


关键点分析:
1.当数据库中一个事务发起时,OGG的e进程将捕捉该事务,进而扫描相关的redo 日志或archive 日志。
2.当数据库中一个事务较长未提交或回滚时,OGG将事务keep在内存中,因此同样保持该事务而不提交或中断。
3.当需要停止OGG e进程时,便会提示事务正在执行。

措施:
措施1:使用  SEND EXTRACT EHXZG001, FORCESTOP命令强制停止进程,但是,你必须保证重启时包含该事务的日志文件存在并可用,意思就是说ogg进程重启时会再次恢复捕捉该事务,当此时发现相应的日志文件不存在了,于是OGG便会报错,一般提示找不到归档等,其实强制停止个人建议不在万不得已情况下还是不要做。有一篇文章阐述了过程并做了总结:
措施2:不在OGG层面操作,直接从源端数据库进行回滚或提交,这样虽然需要等待一定时间但相对比较保险。


OGG事务处理延伸分析:
1.OGG的抽取进程会实时捕捉事务,但投递到目标端时,如果该事务未做提交,复制进程是不会将其写入到目标数据库中的,这样避免了不一致性。
2.OGG有个Bounded Recovery机制,会每隔一段时间做一个检查,如果检测到长事务,OGG会将时间段内这个未提交或回滚的长事务从内存中保存到磁盘上,往后每隔一段时间同样做一次检查。以上这个时间段是可以通过参数自定义的 BR BRINTERVAL 2H  。(两个小时)。
3.Bounded Recovery机制在你强制停止抽取进程后重启时,可以不必一整个事务都从数据库的日志中读取,而已在检查点内保存的事务过程可以通过OGG 自己保存的BR文件读取。
4.一个长事务中未受Bounded Recovery检测保存的过程,OGG通过记录检查点去归档中读取。


    
 
 

您可能感兴趣的文章:

  • 怎么查看Linux中所运行的进程,并且知道哪些是停止响应的,用什么命令可以杀掉停止响应的进程?
  • 当服务进程意外停止后,怎么让一个服务进程自动重启?
  • tail跟踪一个进程后,怎么停止跟踪? ^Z强制结束后,tail进程还是有,要kill掉
  • 已知一个进程的PID,但不知道这个进程是否停止,如何能知道系统中是否有相应的进程在运行。
  • linux如何获取当前程序ID并用shell脚本停止进程
  • linuxES3.0下 WebSphere进程经常自动停止问题? 小妹先谢了
  • 只知道一个命令, 不知道其进程,问如何停止它?
  • 简单问题:如何是主进程停止运行若干长时间?
  • linux下,tomcat进程存在却停止了服务
  • SIGINT,SIGQUIT,SIGTERM,SIGQUIT 这些停止进程的信号有什么不同
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境)
  • 安装VMWARE TOOLS时,提示说先要停止XFREE86的服务,才能继续,那么怎样先停止RH9.0的该服务?
  • c# 启动和停止windows服务
  • 关机时想停止某项服务还需要配置吗
  • 如何停止模块运行
  • 免安转MySQL服务的启动与停止方法
  • 怎样停止一个未完成的I/O操作?
  • 如何停止SNMP和SENDMAIL服务?
  • vsftp自动停止服务
  • jsp中如何捕捉用户点击停止按钮
  • HP-UX上如何停止一个脚本?
  • 关于ssh连远程系统,启动服务后,客户端一旦关闭服务自动停止的问题,解决立即结贴
  • red hat 下怎么在tomcat停止服务后自动重启.
  • 如何停止处理JSP文件?
  • 就我啊,我受不了啊,UNIX下PING如何停止!
  • 如何启动/停止linux下的Telnet、FTP服务?
  • 我想停止proftp!什么命令?
  • 怎样停止运行在面板上出现的小程序呀。
  • 请教:如何停止mrtg?
  • 开机自检一点就停止响应,什么原因??
  • 如何停止一个线程呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3