一种事务恢复方法和事务恢复装置制造方法及图纸

技术编号:7125349 阅读:212 留言:0更新日期:2012-04-11 18:40
本发明专利技术实施例提供了一种事务恢复方法和事务恢复装置。事务恢复方法包括拦截一CICS?AS进程发往资源管理器RM的事务恢复请求xa_recover;在记录的事务中查找该CICS?AS负责的事务;在找到此类事务时,将该事务返回给CICS?AS,以便CICS?AS对该事务进行恢复。本发明专利技术实施例还提供了一种事务恢复装置。在CICS?AS启动后通过xa_recover接口请求尚未成功提交的事务时,可直接在记录的事务中查找该CICS?AS负责的未完成的事务并返回,而无需向数据库请求此类事务。这样便无需申请数据库锁,使得尚未成功提交的事务可及时返回给CICS?AS,实现CICS?AS的及时启动。

【技术实现步骤摘要】
【国外来华专利技术】一种事务恢复方法和事务恢复装置
本专利技术涉及事务恢复技术,尤其涉及一种事务恢复方法和事务恢复装置。
技术介绍
X/Open组织为分布式事务处理(DistributedTransactionProcessing,DTP)定义了分布式事务处理模型,该模型包括应用程序(Application,AP)、事务管理器(TransactionManager,TM)、资源管理器(ResourceManager,RM)和通信资源管理器(CommunicationResourceManager,CRM)四个部分。一般而言,事务管理器通常是交易中间件,资源管理器通常是数据库,通信资源管理器通常是消息中间件。通常情况下,交易中间件都兼具事务管理器和通信资源管理器的功能。为实现交易中间件与资源管理器之间的交互,X/Open组织定义了一种两阶段接口规范,即扩展架构(eXtendedArchitecture,XA)。在第一阶段,交易中间件请求各相关数据库(即资源管理器)预提交(xa_prepare)各自的事务分支,以确定各数据库是否可以提交各自的事务分支。在第二阶段,交易中间件审查所有数据库返回的预提交结果,如确定所有数据库都可以提交,交易中间件将要求所有数据库做正式提交(xa_commit)。当交易中间件与数据库之间的交互出现问题(例如网络故障等)时,有可能需要对一些事务分支执行恢复操作。为此,XA专门定义了恢复(xa_recover)接口。交易中间件通过xa_recover接口向数据库请求发起失败事务查询请求,以请求尚未成功提交的事务分支,然后执行恢复操作。具体来说,在交易中间件与数据库交互以提交事务分支的过程中,交易中间件一侧会首先记录该事务分支的提交状态,并根据数据库一侧对事务分支的提交结果(例如预提交结果,正式提交结果等)对记录的状态进行更新。交互过程中数据库一侧的提交结果可能会因网络传输问题未能到达交易中间件一侧,在这种情况下,如果交易中间件重新启动,则尽管重新启动之后的交易中间件仍然会保留重新启动前记录的提交状态,但该提交状态将显然落后于数据库一侧的提交状态,即数据库一侧记录的提交状态是最准确的。例如,尽管一些事务在交易中间件一侧显示仍处于提交过程中,但实际上该事务分支在数据库一侧已提交成功。因此,XA规定交易中间件需要通过xa_recover接口向数据库请求数据库一侧记录的尚未提交成功的事务分支,并根据交易中间件自身记录的提交状态对该事务分支进行恢复。例如,当交易中间件通过xa_recover接口获得的尚未提交成功的事务分支为处于第一阶段即预提交阶段的事务分支时,交易中间件在对该事务分支进行恢复时将执行回滚(rollback)操作。当交易中间件通过xa_recover接口获得的尚未提交成功的事务分支为处于第二阶段即正式提交阶段的事务分支时,交易中间件在对该事务分支执行恢复时将执行重新执行正式提交操作。客户信息控制系统(CustomerInformationControlSystem,CICS)是由国际商业机器公司(InternationalBusinessMachinesCorporation,IBM)开发的一种交易中间件产品,其符合X/Open组织提出的DTP模型的要求。依照IBM的设计,CICS应用服务器(ApplicationServer,AS)进程在启动(例如CICS重新启动,CICS根据负载情况自动增加CICSAS进程,CICS终止超时交易对应的CICSAS进程,并启动一个新的CICSAS进程)时需要通过xa_recover接口发起失败事务查询请求,以便向数据库请求在第一阶段或第二阶段中尚未成功提交的事务(即失败事务),继而执行恢复操作。在查找尚未成功提交的事务时,数据库需要申请数据库锁(Lock),并查询事务状态表。例如,对于甲骨文公司(Oracle)的数据库系统而言,数据库需要以共享(Share)方式申请分布式事务锁(Distributedtransactionentry,DX锁),来查询未完成的事务,例如从dba_pending_transaction视图中查询未完成的事务。然而,上述数据库锁有可能很难申请,由此导致通过xa_recover接口发起的失败事务查询请求被挂起。例如对于Oracle数据库系统而言,如果某个大的分布式事务(例如正在通过数据库链路(DatabaseLink,DBLink)导入数据)以独占(Exclusive,也称排他)方式申请了DX锁,该DX锁会以独占方式锁定dba_pending_transaction视图。如果dba_pending_transaction中记录有相关事务分支,由于查询操作需要申请的共享锁只有在这个独占锁释放后才能申请到,所以对上述相关事务分支的查询操作都会被阻塞,直到这个大的分布式事务结束使得独占锁得以释放。由此可见,通过xa_recover接口读取dba_pending_transaction中事务分支记录的操作很容易发生阻塞。如此一来,CICSAS进程将无法及时启动。
技术实现思路
有鉴于此,实有必要提供一种事务恢复方法,以解决CICSAS进程在启动过程中因数据库无法及时申请到数据库锁而导致CICSAS进程无法及时获取尚未成功提交的事务至使CICSAS进程无法及时启动的问题。同时,提供一种事务恢复装置,以解决CICSAS进程在启动过程中因数据库无法及时申请到数据库锁而导致CICSAS进程无法及时获取尚未成功提交的事务至使CICSAS进程无法及时启动的问题。依据本专利技术的一个方面,提供一种事务恢复方法,包括:拦截一客户信息控制系统应用服务器进程CICSAS进程发往资源管理器RM的事务恢复请求xa_recover;在记录的事务中查找该CICSAS进程负责的未完成的事务;在找到所述未完成的事务时,将该未完成的事务返回给所述CICSAS进程,以便所述CICSAS进程对所述未完成的事务进行恢复。依据本专利技术的一个方面,提供一种事务恢复装置,包括:拦截模块,用于拦截一客户信息控制系统应用服务器进程CICSAS进程发往资源管理器RM的事务恢复请求xa_recover;查找模块,用于在记录的事务中查找该CICSAS进程负责的未完成的事务;返回模块,用于在查找模块找到所述未完成的事务时,将该未完成的事务返回给所述CICSAS进程,以便所述CICSAS进程对所述未完成的事务进行恢复。本专利技术实施例提供的事务恢复方法记录待提交的每一事务,并将该事务的状态标记为未完成,并在该事务提交成功时将该事务的状态标记为已完成。在这种情况下,在CICSAS进程启动后通过xa_recover接口请求尚未成功提交的事务时,可直接在记录的事务中查找该CICSAS进程负责的未完成的事务返回给CICSAS进程,而无需向数据库请求尚未成功提交的事务。如此一来便无需申请数据库锁,从而使得尚未成功提交的事务可及时返回给CICSAS进程,实现CICSAS进程的及时启动。附图说明图1是依据本专利技术一实施例的事务恢复方法的示范性流程图;图2是依据本专利技术一实施例的事务恢复方法的示范性信令图;图3是依据本专利技术一实施例的事务恢复方法的示范性信令图;图4是依据本专利技术一实施例的事务恢复装置的逻本文档来自技高网
...
一种事务恢复方法和事务恢复装置

【技术保护点】
1.一种事务恢复方法,其特征在于,包括:拦截一客户信息控制系统应用服务器CICS AS进程发往资源管理器RM的事务恢复请求xa_recover;在记录的事务中查找该CICS AS进程负责的未完成的事务;在找到所述未完成的事务时,将该未完成的事务返回给所述CICS AS进程,以便所述CICS AS进程对所述未完成的事务进行恢复。

【技术特征摘要】
【国外来华专利技术】1.一种事务恢复方法,其特征在于,所述方法由事务恢复装置执行,包括:拦截一客户信息控制系统应用服务器CICSAS进程发往资源管理器RM的事务恢复请求xa_recover;在事务恢复装置记录的事务中查找该CICSAS进程负责的未完成的事务;在找到所述未完成的事务时,将该未完成的事务返回给所述CICSAS进程,以便所述CICSAS进程对所述未完成的事务进行恢复。2.如权利要求1所述的方法,其特征在于,所述方法还包括:在监听到所述CICSAS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务,并将所述事务的状态标记为未完成;在监听到所述RM发往所述CICSAS进程的针对所述事务的提交成功通知时,将所述事务的状态标记为已完成。3.如权利要求1所述的方法,其特征在于,所述方法还包括:在监听到所述CICSAS进程发往所述RM的针对任一事务的预提交请求xa_prepare时,记录所述事务;以及在监听到所述RM发往所述CICSAS进程的针对所述事务的提交成功通知时,在记录的事务中删除所述事务;所述在记录的事务中查找该CICSAS进程负责的未完成的事务具体包括,在记录的事务中查找该CICSAS进程负责的事务;所述在找到所述未完成的事务时,将该未完成的事务返回给所述CICSAS进程,以便所述CICSAS进程对所述未完成的事务进行恢复,具体包括,在找到所述事务时,将该事务返回给所述CICSAS进程,以便所述CICSAS进程对所述事务进行恢复。4.如权利要求2或3所述的方法,其特征在于,所述提交成功通知为所述RM响应所述CICSAS进程针对所述事务发出的预提交请求xa_prepare而返回的只读通知xa_rdonly。5.如权利要求2或3所述的方法,其特征在于,所述提交成功通知为所述RM响应所述CICSAS进程针对所述事务发出的正式提交请求xa_commit而返回的xa_commit执行成功通知。6.如权利要求2或3所述的方法,其特征在于,所述提交成功通知为所述RM响应所述CICSAS进程针对所述事务发出的回滚请求xa_rollb...

【专利技术属性】
技术研发人员:李玉华
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1