CN102317913B - 一种事务恢复方法和事务恢复装置 - Google Patents
一种事务恢复方法和事务恢复装置 Download PDFInfo
- Publication number
- CN102317913B CN102317913B CN201180001135.4A CN201180001135A CN102317913B CN 102317913 B CN102317913 B CN 102317913B CN 201180001135 A CN201180001135 A CN 201180001135A CN 102317913 B CN102317913 B CN 102317913B
- Authority
- CN
- China
- Prior art keywords
- affairs
- cics
- mentioned
- submission
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 194
- 238000011084 recovery Methods 0.000 title claims abstract description 110
- 101001074449 Crotalus durissus terrificus Phospholipase A2 inhibitor CNF Proteins 0.000 claims abstract description 178
- 230000008569 process Effects 0.000 claims abstract description 162
- 230000000903 blocking effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 7
- 238000005096 rolling process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000011664 signaling Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明实施例提供了一种事务恢复方法和事务恢复装置。事务恢复方法包括拦截一CICS AS进程发往资源管理器RM的事务恢复请求xa_recover;在记录的事务中查找该CICS AS负责的事务;在找到此类事务时,将该事务返回给CICS AS,以便CICS AS对该事务进行恢复。本发明实施例还提供了一种事务恢复装置。在CICS AS启动后通过xa_recover接口请求尚未成功提交的事务时,可直接在记录的事务中查找该CICS AS负责的未完成的事务并返回,而无需向数据库请求此类事务。这样便无需申请数据库锁,使得尚未成功提交的事务可及时返回给CICS AS,实现CICS AS的及时启动。
Description
技术领域
本发明涉及事务恢复技术,尤其涉及一种事务恢复方法和事务恢复装置。
背景技术
X/Open组织为分布式事务处理(Distributed Transaction Processing,DTP)定义了分布式事务处理模型,该模型包括应用程序(Application,AP)、事务管理器(Transaction Manager,TM)、资源管理器(Resource Manager,RM)和通信资源管理器(Communication Resource Manager,CRM)四个部分。一般而言,事务管理器通常是交易中间件,资源管理器通常是数据库,通信资源管理器通常是消息中间件。通常情况下,交易中间件都兼具事务管理器和通信资源管理器的功能。
为实现交易中间件与资源管理器之间的交互,X/Open组织定义了一种两阶段接口规范,即扩展架构(eXtended Architecture,XA)。在第一阶段,交易中间件请求各相关数据库(即资源管理器)预提交(xa_prepare)各自的事务分支,以确定各数据库是否可以提交各自的事务分支。在第二阶段,交易中间件审查所有数据库返回的预提交结果,如确定所有数据库都可以提交,交易中间件将要求所有数据库做正式提交(xa_commit)。
当交易中间件与数据库之间的交互出现问题(例如网络故障等)时,有可能需要对一些事务分支执行恢复操作。为此,XA专门定义了恢复(xa_recover)接口。交易中间件通过xa_recover接口向数据库请求发起失败事务查询请求,以请求尚未成功提交的事务分支,然后执行恢复操作。具体来说,在交易中间件与数据库交互以提交事务分支的过程中,交易中间件一侧会首先记录该事务分支的提交状态,并根据数据库一侧对事务分支的提交结果(例如预提交结果,正式提交结果等)对记录的状态进行更新。交互过程中数据库一侧的提交结果可能会因网络传输问题未能到达交易中间件一侧,在这种情况下,如果交易中间件重新启动,则尽管重新启动之后的交易中间件仍然会保留重新启动前记录的提交状态,但该提交状态将显然落后于数据库一侧的提交状态,即数据库一侧记录的提交状态是最准确的。例如,尽管一些事务在交易中间件一侧显示仍处于提交过程中,但实际上该事务分支在数据库一侧已提交成功。因此,XA规定交易中间件需要通过xa_recover接口向数据库请求数据库一侧记录的尚未提交成功的事务分支,并根据交易中间件自身记录的提交状态对该事务分支进行恢复。例如,当交易中间件通过xa_recover接口获得的尚未提交成功的事务分支为处于第一阶段即预提交阶段的事务分支时,交易中间件在对该事务分支进行恢复时将执行回滚(rollback)操作。当交易中间件通过xa_recover接口获得的尚未提交成功的事务分支为处于第二阶段即正式提交阶段的事务分支时,交易中间件在对该事务分支执行恢复时将执行重新执行正式提交操作。
客户信息控制系统(Customer Information Control System,CICS)是由国际商业机器公司(International Business Machines Corporation,IBM)开发的一种交易中间件产品,其符合X/Open组织提出的DTP模型的要求。
依照IBM的设计,CICS应用服务器(Application Server,AS)进程在启动(例如CICS重新启动,CICS根据负载情况自动增加CICS AS进程,CICS终止超时交易对应的CICS AS进程,并启动一个新的CICS AS进程)时需要通过xa_recover接口发起失败事务查询请求,以便向数据库请求在第一阶段或第二阶段中尚未成功提交的事务(即失败事务),继而执行恢复操作。在查找尚未成功提交的事务时,数据库需要申请数据库锁(Lock),并查询事务状态表。例如,对于甲骨文公司(Oracle)的数据库系统而言,数据库需要以共享(Share)方式申请分布式事务锁(Distributed transactionentry,DX锁),来查询未完成的事务,例如从dba_pending_transaction视图中查询未完成的事务。
然而,上述数据库锁有可能很难申请,由此导致通过xa_recover接口发起的失败事务查询请求被挂起。例如对于Oracle数据库系统而言,如果某个大的分布式事务(例如正在通过数据库链路(Database Link,DBLink)导入数据)以独占(Exclusive,也称排他)方式申请了DX锁,该DX锁会以独占方式锁定dba_pending_transaction视图。如果dba_pending_transaction中记录有相关事务分支,由于查询操作需要申请的共享锁只有在这个独占锁释放后才能申请到,所以对上述相关事务分支的查询操作都会被阻塞,直到这个大的分布式事务结束使得独占锁得以释放。由此可见,通过xa_recover接口读取dba_pending_transaction中事务分支记录的操作很容易发生阻塞。如此一来,CICS AS进程将无法及时启动。
发明内容
有鉴于此,实有必要提供一种事务恢复方法,以解决CICS AS进程在启动过程中因数据库无法及时申请到数据库锁而导致CICS AS进程无法及时获取尚未成功提交的事务至使CICS AS进程无法及时启动的问题。
同时,提供一种事务恢复装置,以解决CICS AS进程在启动过程中因数据库无法及时申请到数据库锁而导致CICS AS进程无法及时获取尚未成功提交的事务至使CICS AS进程无法及时启动的问题。
依据本发明的一个方面,提供一种事务恢复方法,包括:
拦截一客户信息控制系统应用服务器进程CICS AS进程发往资源管理器RM的事务恢复请求xa_recover;
在记录的事务中查找该CICS AS进程负责的未完成的事务;
在找到所述未完成的事务时,将该未完成的事务返回给所述CICS AS进程,以便所述CICS AS进程对所述未完成的事务进行恢复。
依据本发明的一个方面,提供一种事务恢复装置,包括:
拦截模块,用于拦截一客户信息控制系统应用服务器进程CICS AS进程发往资源管理器RM的事务恢复请求xa_recover;
查找模块,用于在记录的事务中查找该CICS AS进程负责的未完成的事务;
返回模块,用于在查找模块找到所述未完成的事务时,将该未完成的事务返回给所述CICS AS进程,以便所述CICS AS进程对所述未完成的事务进行恢复。
本发明实施例提供的事务恢复方法记录待提交的每一事务,并将该事务的状态标记为未完成,并在该事务提交成功时将该事务的状态标记为已完成。在这种情况下,在CICS AS进程启动后通过xa_recover接口请求尚未成功提交的事务时,可直接在记录的事务中查找该CICS AS进程负责的未完成的事务返回给CICS AS进程,而无需向数据库请求尚未成功提交的事务。如此一来便无需申请数据库锁,从而使得尚未成功提交的事务可及时返回给CICS AS进程,实现CICS AS进程的及时启动。
附图说明
图1是依据本发明一实施例的事务恢复方法的示范性流程图;
图2是依据本发明一实施例的事务恢复方法的示范性信令图;
图3是依据本发明一实施例的事务恢复方法的示范性信令图;
图4是依据本发明一实施例的事务恢复装置的逻辑结构示意图。
具体实施方式
图1是依据本发明一实施例的事务恢复方法100的示范性流程图。
步骤102,拦截一CICS AS进程发往资源管理器的事务恢复请求xa_recover;
步骤104,在记录的事务中查找该CICS AS进程负责的未完成的事务;
步骤106,在找到所述未完成的事务时,将该未完成的事务返回给所述CICSAS进程,以便所述CICS AS进程对所述未完成的事务进行恢复。
在具体实现过程中,方法100还包括,在监听到上述CICS AS进程发往上述资源管理器的针对任一事务的预提交请求xa_prepare时,记录上述事务,并将该事务的状态标记为未完成。
此后,方法100还包括,在监听到上述资源管理器发往上述CICS AS进程的针对上述事务即上述任一事务的提交成功通知时,将所述事务的状态标记为已完成。其中,该提交成功通知可以是上述资源管理器响应上述CICS AS进程针对上述事务发出的预提交请求xa_prepare而返回的只读通知xa_rdonly。此外,上述提交成功通知还可以是上述资源管理器响应上述CICS AS进程针对上述事务发出的正式提交请求xa_commit而返回的xa_commit执行成功通知。最后,上述提交成功通知还可以是上述资源管理器响应上述CICS AS进程针对上述事务发出的回滚请求xa_rollback而返回的xa_rollback执行成功通知。
应注意,在具体实现过程中,上面提到的在监听到上述CICS AS进程发往上述资源管理器的针对任一事务的预提交请求xa_prepare时,记录上述事务,并将该事务的状态标记为未完成,可实现为记录上述事务即可。在这种情况下,上面提到的在监听到上述资源管理器发往上述CICS AS进程的针对上述事务即上述任一事务的提交成功通知时,将所述事务的状态标记为已完成,可实现为将上述事务从记录的事务中删除。如此一来,记录的事务均为未完成的事务。因此,步骤104可具体实现为在记录的事务中查找该CICS AS进程负责的事务;而步骤106可具体实现为,在找到所述事务时,将该事务返回给所述CICS AS进程,以便所述CICS AS进程对所述事务进行恢复。
本发明实施例提供的事务恢复方法记录待提交的每一事务,并将该事务的状态标记为未完成,而在该事务提交成功时将该事务的状态标记为已完成。在这种情况下,在CICS AS进程启动后通过xa_recover接口请求尚未成功提交的事务时,可直接在记录的事务中查找该CICS AS进程负责的未完成的事务并返回给CICS AS进程,而无需向数据库请求尚未成功提交的事务。如此一来便无需申请数据库锁,从而使得尚未成功提交的事务可及时返回给CICS AS进程,实现CICS AS进程的及时启动。
为便于描述本发明的技术方案,下面结合图2对本发明提供的事务恢复方法进行更为详细的描述。
图2是依据本发明一实施例的事务恢复方法200的示范性信令图。
步骤202,一CICS AS进程发出针对一事务的预提交请求xa_prepare。
步骤204,在收到上述CICS AS进程发出的预提交请求xa_prepare后,本发明实施例提供的事务恢复装置记录该事务,并将该事务的状态标记为未完成。
步骤206,本发明实施例提供的事务恢复装置将上述CICS AS进程发出的预提交请求xa_prepare转发给数据库,即资源管理器RM。
步骤208,数据库响应上述CICS AS进程发出的预提交请求xa_prepare,在确定可以提交该事务时,向事务恢复装置返回预提交成功通知xa_ok。
步骤210,事务恢复装置将上述预提交成功通知xa_ok转发给上述CICS AS进程。
步骤212,在收到上述预提交成功通知xa_ok后,上述CICS AS进程发出针对上述事务的正式提交请求xa_commit。
步骤214,事务恢复装置收到上述正式提交请求xa_commit后,将该正式提交请求xa_commit转发给数据库。
步骤216,数据库接收上述正式提交请求xa_commit,数据库正式提交该事务,并在提交成功后,向事务恢复装置发出xa_commit执行成功通知。
步骤218,在收到上述xa_commit执行成功通知后,事务恢复装置将上述事务的状态标记为已完成。
步骤220,事务恢复装置将上述xa_commit执行成功通知转发给上述CICSAS进程。此后,事务执行完毕。
在上述过程中,若上述CICS AS进程重新启动,例如CICS重新启动导致上述CICS AS进程重新启动,则由于事务恢复装置中记录的上述事务的状态可能为未完成,因此事务恢复装置可能会直接将上述事务返回给上述CICS AS进程,以便上述CICS AS进程对上述事务进行恢复。以下就将方法200中描述的过程划分为三个不同区间分别进行描述,其中,区间1为步骤202至步骤210之间,即上述CICS AS进程已经发出预提交请求xa_prepare,但尚未收到预提交成功通知xa_ok;区间2为步骤210至步骤218之间,即上述CICS AS进程已经收到预提交成功通知xa_ok,但尚未收到xa_commit执行成功通知,且事务恢复装置尚未将上述事务的状态标记为已完成;区间3为步骤218至步骤220之间,即上述CICS AS进程已经收到预提交成功通知xa_ok,但尚未收到xa_commit执行成功通知,且事务恢复装置已将上述事务的状态标记为已完成。
如果上述CICS AS进程在区间1发生重新启动,则上述CICS AS进程会发出事务恢复请求xa_recover。在现有技术中,上述CICS AS进程会将上述事务恢复请求xa_recover发往数据库。而根据本发明实施例提供的技术方案,事务恢复装置会拦截该事务恢复请求xa_recover。随后,由于已经在步骤204对上述事务进行了记录并将该事务的状态标记为未完成,因此事务恢复装置将查找到上述事务并获知该事务的状态为未完成,继而将上述事务通知上述CICS AS进程,以便由上述CICS AS进程对上述事务执行恢复操作,例如回滚(rollback)操作。在具体实现过程中,根据IBM公司的设计,上述CICS AS进程只需获知上述事务即可知晓对该事务执行何种恢复操作,这是因为CICS AS进程也会记录事务的提交状态,尽管CICS AS进程记录的事务提交状态落后于资源管理器伤记录的事务提交状态,但足以用于对事务执行恢复操作。在执行回滚操作时,上述CICS AS进程会发出回滚请求xa_rollback,该回滚请求xa_rollback将在到达事务恢复装置后由事务恢复装置转发给数据库。在数据库响应该回滚请求xa_rollback从而执行回滚操作之后,数据库会返回xa_rollback执行成功通知给事务恢复装置。随后,事务恢复装置会将上述事务的状态标记为已完成,然后将上述xa_rollback执行成功通知返回给上述CICS AS进程。此后,该事务执行结束。更为具体的,如果在上述回滚操作过程中,CICS AS进程再次重新启动,则上述CICS AS进程会再次发送事务恢复请求xa_recover给事务恢复装置。如果事务恢复装置尚未将上述事务的状态标记为已完成,则其获取到的上述事务的状态仍将为未完成,因此会将上述事务通知上述CICS AS进程,以便由上述CICS AS进程对上述事务执行回滚操作。如果事务恢复装置已将上述事务的状态标记为已完成,则无需上报给CICS AS进程,因此CICS AS进程将无需对该事务执行回滚操作,事务执行完毕。
如果上述CICS AS进程在区间2发生重新启动,则上述CICS AS进程会发出事务恢复请求xa_recover。在现有技术中,上述CICS AS进程会将上述事务恢复请求xa_recover发往数据库。而根据本发明实施例提供的技术方案,事务恢复装置会拦截该事务恢复请求xa_recover。由于此时事务恢复装置尚未将上述事务的状态标记为已完成,因此事务恢复装置将查找到上述事务的状态为未完成,继而将上述事务通知上述CICS AS进程,以便由上述CICS AS进程对上述事务执行恢复操作,例如由上述CICS AS进程重新发出正式提交请求xa_commit。在具体实现过程中,根据IBM公司的设计,上述CICS AS进程只需获知上述事务即可知晓对该事务执行何种恢复操作,这是因为CICS AS进程也会记录事务的提交状态,尽管CICS AS进程记录的事务提交状态落后于资源管理器伤记录的事务提交状态,但足以用于对事务执行恢复操作。
如果上述CICS AS进程在区间3发生重新启动,则上述CICS AS进程会发出事务恢复请求xa_recover。在现有技术中,上述CICS AS进程会将上述事务恢复请求xa_recover发往数据库。而根据本发明实施例提供的技术方案,事务恢复装置会拦截该事务恢复请求xa_recover。由于此时事务恢复装置已经将上述事务的状态标记为已完成,因此事务恢复装置将不会返回任何事务给上述CICS AS进程,因此上述CICS AS进程将无需对该事务执行恢复操作,事务执行完毕。
图3是依据本发明一实施例的事务恢复方法300的示范性信令图。
步骤302,一CICS AS进程发出针对一事务的预提交请求xa_prepare。
步骤304,在收到上述CICS AS进程发出的预提交请求xa_prepare后,本发明实施例提供的事务恢复装置记录该事务并将其状态标记为未完成。
步骤306,本发明实施例提供的事务恢复装置将上述CICS AS进程发出的预提交请求xa_prepare转发给数据库,即资源管理器RM。
步骤308,数据库响应上述CICS AS进程发出的预提交请求xa_prepare,向事务恢复装置返回只读通知xa_rdonly。
步骤310,事务恢复装置在收到只读通知xa_rdonly后,将上述事务的状态标记为已完成。
步骤312,事务恢复装置将上述只读通知xa_rdonly转发给上述CICS AS进程。此后,事务处理完毕。
在上述过程中,若上述CICS AS进程重新启动,例如CICS重新启动导致上述CICS AS进程重新启动,则由于事务恢复装置中上述事务的状态可能为未完成,因此事务恢复装置可能会直接将上述事务返回给上述CICS AS进程,以便上述CICS AS进程对上述事务进行恢复。以下就将方法300中描述的过程划分为两个不同区间分别进行描述,其中,区间1为步骤302至步骤310之间,即上述CICS AS进程已经发出预提交请求xa_prepare,但尚未收到只读通知xa_rdonly,且事务恢复装置尚未将上述事务的状态标记为未完成;区间2为步骤310至步骤312之间,即上述CICS AS进程已经发出预提交请求xa_prepare,但尚未收到只读通知xa_rdonly,且事务恢复装置已经将上述事务的状态标记为已完成。
如果上述CICS AS进程在区间1发生重新启动,则上述CICS AS进程会发出事务恢复请求xa_recover。在现有技术中,上述CICS AS进程会将上述事务恢复请求xa_recover发往数据库。而根据本发明实施例提供的技术方案,事务恢复装置会拦截该事务恢复请求xa_recover。随后,由于已经在步骤304对上述事务进行了记录并将其状态标记为未完成,因此事务恢复装置将查找到上述事务的状态为未完成,继而将上述事务通知上述CICS AS进程,以便由上述CICS AS进程对上述事务执行恢复操作,例如回滚(rollback)操作。有关回滚操作及在回滚操作过程中CICS AS进程再次发生重新启动时各装置的操作与上文结合图2进行的描述相同,因此此处不再赘述。
如果上述CICS AS进程在区间2发生重新启动,则上述CICS AS进程会发出事务恢复请求xa_recover。在现有技术中,上述CICS AS进程会将上述事务恢复请求xa_recover发往数据库。而根据本发明实施例提供的技术方案,事务恢复装置会拦截该事务恢复请求xa_recover。随后,由于已经在步骤310中将上述事务的状态标记为已完成,因此事务恢复装置将无需上报上述事务,因此CICS AS进程将无需执行回滚操作,事务执行完毕。
本发明还提供了一种事务恢复装置,下面就结合图4进行详细描述。
图4是依据本发明一实施例的事务恢复装置400的逻辑结构示意图。如图4所示,事务恢复装置400包括拦截模块402、查找模块404和返回模块406。
拦截模块402用于拦截一CICS AS进程发往资源管理器的事务恢复请求xa_recover;
查找模块404用于在记录的事务中查找该CICS AS进程负责的未完成的事务;
返回模块406用于在查找模块404找到上述未完成的事务时,将该未完成的事务返回给上述CICS AS进程,以便上述CICS AS进程对上述未完成的事务进行恢复。
除上述模块外,事务恢复装置400还包括记录模块408。
记录模块408用于在监听到上述CICS AS进程发往上述RM的针对任一事务的预提交请求xa_prepare时,记录上述事务并将其状态标记为未完成;以及在监听到上述RM发往上述CICS AS进程的针对上述事务即上述任一事务的提交成功通知时,将上述事务的状态标记未已完成。
应注意,在具体实现过程中,上述记录模块408可具体实现为,用于在监听到所述CICS AS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务;以及在监听到所述RM发往所述CICS AS进程的针对所述事务的提交成功通知时,在记录的事务中删除所述事务。在这种情况下,查找模块404具体用于,在记录的事务中查找该CICS AS进程负责的事务;返回模块406具体用于,在找到所述事务时,将该事务返回给所述CICS AS进程,以便所述CICS AS进程对所述事务进行恢复。
在具体实现过程中,上述提交成功通知可以是上述RM响应上述CICS AS进程针对上述事务发出的预提交请求xa_prepare而返回的只读通知xa_rdonly。
在具体实现过程中,上述提交成功通知可以是上述RM响应上述CICS AS进程针对上述事务发出的正式提交请求xa_commit而返回的xa_commit执行成功通知。
在具体实现过程中,上述提交成功通知可以是上述RM响应上述CICS AS进程针对上述事务发出的回滚请求xa_rollback而返回的xa_rollback执行成功通知。
拦截模块402、查找模块404、返回模块406和记录模块408的操作与上文结合图1~图3描述的方法100~方法300中描述的对应步骤相对应,因此此处不再赘述。
在具体实现过程中,上述事务恢复装置400可与事务管理器或交易中间件集成在一起,也可独立于事务管理器或交易中间件而单独实现。应注意,在具体实现过程中,上述事务恢复装置400还应包括处理器、存储器和/或通信模块等硬件模块,或者与其他装置400共享处理器、存储器和/或通信模块等硬件模块。在这种情况下,拦截模块402具体用于通过处理器或通信模块来拦截一CICSAS进程发往资源管理器的事务恢复请求xa_recover;查找模块404用于通过处理器在存储器中记录的事务中查找该CICS AS进程负责的未完成的事务;返回模块406用于在查找模块404通过处理器找到上述未完成的事务时,通过处理器或通信模块将该未完成的事务返回给上述CICS AS进程,以便上述CICS AS进程对上述未完成的事务进行恢复。而上述记录模块408用于在通过处理器或通信模块监听到任一CICS AS进程发往上述RM的针对上述事务的预提交请求xa_prepare时,将上述事务记录在存储器中并将其状态标记为未完成;以及在通过处理器或通信模块监听到上述RM发往上述CICS AS进程的针对上述事务即上述任一事务的提交成功通知时,将上述事务的状态标记为已完成。
本领域普通技术人员可知,上述方法中的全部或部分步骤可以通过程序指令相关的硬件完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质如ROM、RAM和光盘等。
综上所述,以上仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种事务恢复方法,其特征在于,所述方法由事务恢复装置执行,包括:
拦截一客户信息控制系统应用服务器CICS AS进程发往资源管理器RM的事务恢复请求xa_recover;
在事务恢复装置记录的事务中查找该CICS AS进程负责的未完成的事务;
在找到所述未完成的事务时,将该未完成的事务返回给所述CICS AS进程,以便所述CICS AS进程对所述未完成的事务进行恢复。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在监听到所述CICS AS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务,并将所述事务的状态标记为未完成;
在监听到所述RM发往所述CICS AS进程的针对所述事务的提交成功通知时,将所述事务的状态标记为已完成。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
在监听到所述CICS AS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务;以及
在监听到所述RM发往所述CICS AS进程的针对所述事务的提交成功通知时,在记录的事务中删除所述事务;
所述在记录的事务中查找该CICS AS进程负责的未完成的事务具体包括,在记录的事务中查找该CICS AS进程负责的事务;
所述在找到所述未完成的事务时,将该未完成的事务返回给所述CICS AS进程,以便所述CICS AS进程对所述未完成的事务进行恢复,具体包括,在找到所述事务时,将该事务返回给所述CICS AS进程,以便所述CICS AS进程对所述事务进行恢复。
4.如权利要求2或3所述的方法,其特征在于,所述提交成功通知为所述RM响应所述CICS AS进程针对所述事务发出的预提交请求xa_prepare而返回的只读通知xa_rdonly。
5.如权利要求2或3所述的方法,其特征在于,所述提交成功通知为所述RM响应所述CICS AS进程针对所述事务发出的正式提交请求xa_commit而返回的xa_commit执行成功通知。
6.如权利要求2或3所述的方法,其特征在于,所述提交成功通知为所述RM响应所述CICS AS进程针对所述事务发出的回滚请求xa_rollback而返回的xa_rollback执行成功通知。
7.一种事务恢复装置,其特征在于,包括:
拦截模块,用于拦截一客户信息控制系统应用服务器CICS AS进程发往资源管理器RM的事务恢复请求xa_recover;
查找模块,用于在事务恢复装置记录的事务中查找该CICS AS进程负责的未完成的事务;
返回模块,用于在查找模块找到所述未完成的事务时,将该未完成的事务返回给所述CICS AS进程,以便所述CICS AS进程对所述未完成的事务进行恢复。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
记录模块,用于在监听到所述CICS AS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务,并将所述事务的状态标记为未完成;以及在监听到所述RM发往所述CICS AS进程的针对所述事务的提交成功通知时,将所述事务的状态标记为已完成。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
记录模块,用于在监听到所述CICS AS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务;以及在监听到所述RM发往所述CICS AS进程的针对所述事务的提交成功通知时,在记录的事务中删除所述事务;
所述查找模块具体用于,在记录的事务中查找该CICS AS进程负责的事务;
所述返回模块具体用于,在找到所述事务时,将该事务返回给所述CICS AS进程,以便所述CICS AS进程对所述事务进行恢复。
10.如权利要求8或9所述的装置,其特征在于,所述提交成功通知为所述RM响应所述CICS AS进程针对所述事务发出的预提交请求xa_prepare而返回的只读通知xa_rdonly。
11.如权利要求8或9所述的装置,其特征在于,所述提交成功通知为所述RM响应所述CICS AS进程针对所述事务发出的正式提交请求xa_commit而返回的xa_commit执行成功通知。
12.如权利要求8或9所述的装置,其特征在于,所述提交成功通知为所述RM响应所述CICS AS进程针对所述事务发出的回滚请求xa_rollback而返回的xa_rollback执行成功通知。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/077830 WO2012083697A1 (zh) | 2011-07-30 | 2011-07-30 | 一种事务恢复方法和事务恢复装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102317913A CN102317913A (zh) | 2012-01-11 |
CN102317913B true CN102317913B (zh) | 2016-11-16 |
Family
ID=45429413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180001135.4A Expired - Fee Related CN102317913B (zh) | 2011-07-30 | 2011-07-30 | 一种事务恢复方法和事务恢复装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102317913B (zh) |
WO (1) | WO2012083697A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9760584B2 (en) | 2012-03-16 | 2017-09-12 | Oracle International Corporation | Systems and methods for supporting inline delegation of middle-tier transaction logs to database |
US9665392B2 (en) | 2012-03-16 | 2017-05-30 | Oracle International Corporation | System and method for supporting intra-node communication based on a shared memory queue |
CN103488474A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 数据对象监听装置和数据对象监听方法 |
CN103559245A (zh) * | 2013-10-29 | 2014-02-05 | 华为技术有限公司 | 一种分布式事务提交故障的处理方法、装置和系统 |
CN103995868B (zh) * | 2014-05-20 | 2017-07-21 | 科大国创软件股份有限公司 | 面向分布式系统的全局事务管理器及事务处理方法 |
CN106598992B (zh) * | 2015-10-15 | 2020-10-23 | 南京中兴软件有限责任公司 | 数据库的操作方法及装置 |
CN109032774B (zh) * | 2018-06-27 | 2021-08-13 | 中国建设银行股份有限公司 | 应用程序恢复方法与装置 |
CN109634726A (zh) * | 2018-10-25 | 2019-04-16 | 平安科技(深圳)有限公司 | 定时任务的处理方法、装置、设备及存储介质 |
CN114416183A (zh) * | 2020-10-28 | 2022-04-29 | 武汉软艺信息技术有限公司 | 基于iOS系统快速还原App状态的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101438248A (zh) * | 2006-05-03 | 2009-05-20 | Bea系统公司 | 事务恢复机制 |
CN101667178A (zh) * | 2008-09-01 | 2010-03-10 | 北京数码大方科技有限公司 | 用于c/s架构文件管理系统的事务处理方法 |
JP2010146134A (ja) * | 2008-12-17 | 2010-07-01 | Nec Corp | 分散トランザクション処理システム、サーバ装置及びそれらに用いる分散トランザクションの障害復旧方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667179B (zh) * | 2008-09-03 | 2012-08-15 | 华为技术有限公司 | 移动搜索方法及其系统、搜索服务器同步元索引的方法 |
-
2011
- 2011-07-30 WO PCT/CN2011/077830 patent/WO2012083697A1/zh active Application Filing
- 2011-07-30 CN CN201180001135.4A patent/CN102317913B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101438248A (zh) * | 2006-05-03 | 2009-05-20 | Bea系统公司 | 事务恢复机制 |
CN101667178A (zh) * | 2008-09-01 | 2010-03-10 | 北京数码大方科技有限公司 | 用于c/s架构文件管理系统的事务处理方法 |
JP2010146134A (ja) * | 2008-12-17 | 2010-07-01 | Nec Corp | 分散トランザクション処理システム、サーバ装置及びそれらに用いる分散トランザクションの障害復旧方法 |
Non-Patent Citations (1)
Title |
---|
事务管理器的事务恢复处理;魏茂喜 等;《微型机与应用》;20041231;14-16,44 * |
Also Published As
Publication number | Publication date |
---|---|
CN102317913A (zh) | 2012-01-11 |
WO2012083697A1 (zh) | 2012-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102317913B (zh) | 一种事务恢复方法和事务恢复装置 | |
CN108459919B (zh) | 一种分布式事务处理方法及装置 | |
US10942823B2 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US9965364B2 (en) | Fault tolerant listener registration in the presence of node crashes in a data grid | |
EP2928160B1 (en) | Idempotence for database transactions | |
WO2016180164A1 (zh) | 一种分布式事务回滚方法及装置 | |
US8924346B2 (en) | Idempotence for database transactions | |
US9124670B2 (en) | Transactional and non-transactional data for maintaining session state | |
US9779128B2 (en) | System and method for massively parallel processing database | |
CN103647834B (zh) | 一种用于处理多阶段分布式任务调度的系统及方法 | |
US6434555B1 (en) | Method for transaction recovery in three-tier applications | |
CN103995868B (zh) | 面向分布式系统的全局事务管理器及事务处理方法 | |
CN113396407A (zh) | 用于利用区块链技术扩充数据库应用的系统和方法 | |
CN110807064B (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
CN102103642B (zh) | 基于oltp的数据删除方法、系统及图形数据库服务器 | |
US9361190B2 (en) | Recovery of a transaction after XA end | |
CN103559245A (zh) | 一种分布式事务提交故障的处理方法、装置和系统 | |
CN104809510A (zh) | 一种提供票务支持的票池中间件的构建、购票及锁票方法 | |
CN103761140B (zh) | 一种在异构关系型数据库中实现事务处理的方法 | |
EP3408763A1 (en) | Guaranteed commit outcome in a distributed transaction processing system | |
CN111209142A (zh) | 跨数据库的事务管理方法、装置、设备及存储介质 | |
CN104794138A (zh) | 一种数据库交易结果确认方法、装置及系统 | |
CN103885854A (zh) | 一种数据备份方法、装置及系统 | |
CN106503257A (zh) | 基于binlog补偿机制的分布式事务服务方法及系统 | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161116 |
|
CF01 | Termination of patent right due to non-payment of annual fee |