长事务管理

Posted 长城之上是千亿的星空,星空之上是不灭的守望。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长事务管理相关的知识,希望对你有一定的参考价值。

长事务管理

在停止抽取进程前需要通过命令检查是否存在长交易,以防止下次启动无法找到归档日志:

ggsci> info extXX, showch

…..

Read Checkpoint #1

….

 

  Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

    Thread #: 1

    Sequence #: 9671

    RBA: 239077904

    Timestamp: 2008-05-20 11:39:07.000000

    SCN: 2195.1048654191

    Redo File: Not available

 

  Current Checkpoint (position of last record read in the data source):

    Thread #: 1

    Sequence #: 9671

    RBA: 239377476

    Timestamp: 2008-05-20 11:39:10.000000

    SCN: 2195.1048654339

    Redo File: Not Available

 

Read Checkpoint #2

…..

 

  Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

    Thread #: 2

    Sequence #: 5287

    RBA: 131154160

    Timestamp: 2008-05-20 11:37:42.000000

    SCN: 2195.1048640151

    Redo File: /dev/rredo07

 

  Current Checkpoint (position of last record read in the data source):

    Thread #: 2

    Sequence #: 5287

    RBA: 138594492

    Timestamp: 2008-05-20 11:39:14.000000

    SCN: 2195.1048654739

    Redo File: /dev/rredo07

 

…..

为了方便长交易的管理,GoldenGate提供了一些命令来查看这些长交易,可以帮助客户和应用开发商查找到对应长交易,并在GoldenGate中予以提交或者回滚。

查看长交易的方法

Ggsci> send extract <进程名> , showtrans [thread n] [count n]

其中,<进程名>为所要察看的进程名,如extsz/extxm/extjx等;

Thread n是可选的,表示只查看其中一个节点上的未提交交易;

Count n也是可选的,表示只显示n条记录。例如,查看extsz进程中节点1上最长的10个交易,可以通过下列命令:

Ggsci> send extract extsz , showtrans thread 1  count 10

 

输出结果是以时间降序排列的所有未提交交易列表,通过xid可以查找到对应的事务,请应用开发商和DBA帮助可以查找出未提交原因,通过数据库予以提交或者回滚后GoldenGate的checkpoint会自动向前滚动。

使用GoldenGate命令跳过或接受长交易的方法

在GoldenGate中强制提交或者回滚指定事务,可以通过以下命令(<>中的为参数):

Ggsci> SEND EXTRACT <进程名>, SKIPTRANS <5.17.27634> THREAD <2> //跳过交易

Ggsci>SEND EXTRACT <进程名>, FORCETRANS <5.17.27634> THREAD <1> //强制认为该交易已经提交

说明:使用这些命令只会让GoldenGate进程跳过或者认为该交易已经提交,但并不改变数据库中的交易,他们依旧存在于数据库中。因此,强烈建议使用数据库中提交或者回滚交易而不是使用GoldenGate处理。

配置长交易告警

可以在extract进程中配置长交易告警,参数如下所示:

extract extsz

……

warnlongtrans 12h, checkintervals 10m

exttrail /backup/goldengate/dirdat/sz

….

以上表示GoldenGate会每隔10分钟检查一下长交易,如果有超过12个小时的长交易,GoldenGate会在根目录下的ggserr.log里面加入一条告警信息。可以通过察看ggserr.log或者在ggsci中执行view ggsevt命令查看这些告警信息。以上配置可以有助于及时发现长交易并予以处理。

说明:在OGG 11g中,extract提供了BR参数可以设置每隔一段时间(默认4小时)将长交易缓存到本地硬盘(默认dirtmp目录下),因此extract只要不停止一般需要的归档日志不超过8个小时(极限情况)。但是如果extract停掉后,便无法再自动缓存长交易,需要的归档日志就会依赖于停机时间变长。

 

以上是关于长事务管理的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot - 优雅的处理长事务

ogg-01027(长事务)

监控MySQL长事务脚本

安卓手机长按home键如何设置任务管理器在最近使用里?

长事务

检查长事务