著录项信息
专利名称 | 用于阻止数据库计算系统中的事务暂停的方法和系统 |
申请号 | CN201410503040.8 | 申请日期 | 2014-09-26 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-04-15 | 公开/公告号 | CN104516943A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 国际商业机器公司 | 申请人地址 | 美国纽约
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 国际商业机器公司 | 当前权利人 | 国际商业机器公司 |
发明人 | P·S·普拉布;C·K·维什瓦卡玛 |
代理机构 | 北京市中咨律师事务所 | 代理人 | 于静;张亚非 |
摘要
本公开涉及数据库日志的存档管理,并且提供了一种通过监视数据库计算系统的活动数据库日志来阻止数据库计算系统中的事务暂停的方法。该方法包括由于在数据库计算系统的系统操作期间发生数据库日志填满状况,而切换数据库计算系统的存档单元。该方法还包括维护数据库日志历史表,其中数据库日志历史表捕获由数据库计算系统的系统线程生成的活动数据库日志的阈值计数。该方法还包括:基于由于在数据库计算系统的系统操作期间发生数据库日志填满状况而导致的数据库计算系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,限定用于存档活动数据库日志的临时位置。
1.一种通过监视数据库计算系统的活动数据库日志来阻止所述数据库计算系统中的事务暂停的方法,所述方法包括以下步骤:
由于在所述活动数据库日志的系统操作期间发生数据库日志填满状况,由一个或多个处理器切换所述数据库计算系统的存档单元;
由所述一个或多个处理器维护数据库日志历史表,其中所述数据库日志历史表捕获由所述数据库计算系统的系统线程生成的活动数据库日志的阈值计数;
由于在所述活动数据库日志的系统操作期间发生数据库日志填满状况,由所述一个或多个处理器确定系统故障或数据库日志状况的原因;
发生所述活动数据库日志向临时位置的存档,而不暂停或中止所述数据库计算系统的系统操作,其中所述临时位置包括:包括所述活动数据库日志的数据集的记录;以及包括所述临时位置的被存档的活动数据库日志的引导数据的数据集的记录;以及基于由于在所述数据库计算系统的系统操作期间发生数据库日志填满状况而导致的所述数据库计算系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,由所述一个或多个处理器限定用于存档所述活动数据库日志的所述临时位置,其中当所述活动数据库日志达到最终活动数据库日志状态时将所述活动数据库日志存档在所述临时位置,以及其中所述最终活动数据库日志状态基于活动数据库日志记录的另一个阈值计数。
2.根据权利要求1所述的方法,其中直到所述活动数据库日志达到最终活动数据库日志状态才解决所述系统故障或数据库日志状况的原因。
3.根据权利要求1所述的方法,还包括以下步骤:
由所述一个或多个处理器确定系统故障或数据库日志状况是否是由以比所述数据库计算系统更快的速度生成活动数据库日志的系统线程引起的;以及
如果所述系统线程以比所述数据库计算系统更快的速度生成所述活动数据库日志的最终活动数据库日志,则由所述一个或多个处理器暂停所述系统线程对所述活动数据库日志的生成。
4.根据权利要求3所述的方法,其中基于数据库日志历史表中的所述活动数据库日志的计数的阈值,暂停具有最高数量的活动数据库日志的系统线程,以及其中数据库日志历史表维护活动的和暂停的系统线程的记录。
5.根据权利要求3所述的方法,其中由所述一个或多个处理器确定系统故障或数据库日志状况是否是由以比所述数据库计算系统更快的速度生成活动数据库日志的系统线程引起的步骤还包括以下步骤:
由所述一个或多个处理器在数据库日志历史表中搜索所述数据库计算系统的活动的和暂停的系统线程的记录;以及
由所述一个或多个处理器将最终活动数据库日志存档在所述临时位置中。
6.一种通过监视数据库计算系统的活动数据库日志来阻止所述数据库计算系统中的事务暂停的计算机系统,所述计算机系统包括:
一个或多个处理器、一个或多个计算机可读存储器、一个或多个计算机可读有形存储设备、以及程序指令,所述程序指令被存储在所述一个或多个存储设备中的至少一个上,用于经由所述一个或多个存储器中的至少一个被所述一个或多个处理器中的至少一个执行,所述程序指令包括:
由于在所述活动数据库日志的系统操作期间发生数据库日志填满状况,切换所述数据库计算系统的存档单元的程序指令;
维护数据库日志历史表的程序指令,其中所述数据库日志历史表捕获由所述数据库计算系统的系统线程生成的活动数据库日志的阈值计数;
由于在所述活动数据库日志的系统操作期间发生数据库日志填满状况,确定系统故障或数据库日志状况的原因的程序指令;
发生所述活动数据库日志向临时位置的存档,而不暂停或中止所述数据库计算系统的系统操作的程序指令,其中所述临时位置包括:包括所述活动数据库日志的数据集的记录;
以及包括所述临时位置的被存档的活动数据库日志的引导数据的数据集的记录;以及基于由于在所述数据库计算系统的系统操作期间发生数据库日志填满状况而导致的所述数据库计算系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,限定用于存档所述活动数据库日志的临时位置的程序指令,其中当所述活动数据库日志达到最终活动数据库日志状态时将所述活动数据库日志存档在所述临时位置,以及其中所述最终活动数据库日志状态基于活动数据库日志记录的另一个阈值计数。
7.根据权利要求6所述的计算机系统,其中直到所述活动数据库日志达到最终活动数据库日志状态才解决所述系统故障或数据库日志状况的原因。
8.根据权利要求6所述的计算机系统,还包括:
确定系统故障或数据库日志状况是否是由以比所述活动数据库日志被缓存在所述临时位置的速度更快的速度生成活动数据库日志的系统线程引起的程序指令;以及如果所述系统线程以比所述数据库计算系统更快的速度生成所述活动数据库日志的最终活动数据库日志,则暂停所述系统线程对所述活动数据库日志的生成的程序指令。
9.根据权利要求8所述的计算机系统,其中基于数据库日志历史表中的所述活动数据库日志的计数的阈值,暂停具有最高数量的活动数据库日志的系统线程,以及其中数据库日志历史表维护活动的和暂停的系统线程的记录。
10.根据权利要求8所述的计算机系统,其中确定系统故障或数据库日志状况是否是由以比所述活动数据库日志被缓存在所述临时位置的速度更快的速度生成活动数据库日志的系统线程引起的程序指令还包括:
在数据库日志历史表中搜索所述数据库计算系统的活动的和暂停的系统线程的记录的程序指令;以及
将最终活动数据库日志存档在所述临时位置中的程序指令。
用于阻止数据库计算系统中的事务暂停的方法和系统\n技术领域\n[0001] 本发明一般涉及数据库计算系统的数据库操作活动,并且更特别地涉及数据库计算系统的数据库日志的存档管理。\n背景技术\n[0002] 事务(有时被称为“工作单元”或“UOW”)是一组必须被一起完成的相关操作。所述相关操作的所有可恢复动作必须成功完成或完全不执行。事务的这种特性被称为“原子性”。在最简单的情况中,事务将访问与单个计算机处理器相连的资源。这样的事务被称为“本地事务”。然而,更通常地,事务将访问位于若干个不同计算机处理器或逻辑分区中的资源,各自包含其自己的事务日志。这样的事务被称为“分布式事务”。当分布式事务结束时,事务的原子性特性要求所涉及的所有处理器提交事务或所有处理器中止事务。为了实现这一点,其中一个处理器担当协调者的角色以便使用所涉及的所有各方共同理解并遵循的“协调协议”来保证在事务的所有各方处有相同的结果。\n[0003] 二相提交协议已被广泛用作分布式事务管理环境中的优选协议。该协议保证工作或者被所有参与者成功完成,或者完全不被执行,其中任何数据修改或者被一起提交(完成),或者在故障时一起被回滚(回退)。事务的另一个特性是其持久性。这意味着一旦已经向用户通知成功,即使存在系统故障,事务的结果也必须持续,而不能被取消。使用恢复管理器来保证即使当系统崩溃时,系统的对象也是持久的、并且事务的效果也是原子性的。\n[0004] 恢复管理器保存为恢复所需的信息。在任务更新了可恢复临时存储队列之后,该恢复可以用于事务的动态回退,该动态回退也许是由于故障而引起的。此外,恢复数据可以用来将事务处理系统恢复到提交状态,例如在系统故障后系统被重启时。典型地,恢复文件包括至少一个日志,该至少一个日志包含由事务处理系统执行的事务的历史。在系统故障的情况下,恢复文件可以被回放以将系统返回到紧邻着故障前的状态,以及返回到使用事务日志来检查并取消在故障之前没有被正确完成的事务的状态。\n[0005] 此外,在事务故障的情况下,事务日志可以用于通过从故障前的最后变更开始往回工作,来反转已经由事务执行的更新,由此得名“动态事务回退”。回退发生在任意受影响的资源上的锁定被释放之前,这保护其他任务免于经历使用损坏的数据的可能性,因为修改后的数据不会被释放以供其使用(“提交”),直到当前任务已经用完该修改后的数据为止。如果日志需要在之后在系统重启时被回放,则首先在日志中加入条目以指示事务正在被回退。执行这样的事务日志记录的系统的示例包括事务系统(诸如 事\n务服务器或IBM 应用服务器),以及数据库系统(诸如IBM 或IBM \nIMSTM)。(IBM、CICS、WebSphere、DB2和IMS是国际商业机器公司在美国或其他国家或在这两者中的商标或注册商标)。日志典型地按活动发生的顺序记录信息。如果没有一定的管理,这将会消耗不断增加的资源量。因此,日志必须由执行被称为“关键点指示(keypointing)”的处理的恢复管理器定期地重组以便减小其尺寸。\n[0006] 关键点指示包括将系统的对象的当前提交值与针对还没有被完全解决的事务的事务状态条目和意向列表一起写入到恢复文件的新部分中。针对事务的意向列表包含由该事务改变的所有对象/资源的引用和值的列表、以及与二相提交协议有关的信息。一旦取得了关键点(即,通过关键点指示过程而存储的信息),被不可撤销地提交(或回退)的事务的恢复信息通常可以从日志中被丢弃,有时被称为日志“修整”。这会减小日志的文件尺寸、以及在恢复期间将要处理的事务的数量。\n[0007] 旧的日志记录通过修整而被删除的速率在理想情况下应当与在新的工作进入事务系统并对资源作出其自己的可恢复变更时新的日志数据被生成的速率匹配。在调整好的在线事务处理(OLTP)环境中,日志上持有的日志数据的量应当随着时间被合理地保持恒定,其中日志上持有的日志记录的数量在新工作和内务工作都被执行时会有潜在的周期性的上升和下降。这种用于日志数据删除的机制通常解决日志的尺寸随着时间而持续增长的问题。然而,长时间运行的UOW会阻止这种机制工作,直到这样的UOW已经完成且不再需要其日志数据为止,其数据不能从日志中被删除、并且自从该UOW的第一个日志条目以来所记录的所有数据必须保持在日志上。因此,系统将不能在关键点指示之后修整日志,并且日志的尺寸将会不断变大。最终,当超过日志记录子系统、操作系统或可用硬件的临界阈值时,这会导致向日志写入的请求由于“空间不足”类型的状况而失败。\n发明内容\n[0008] 在本发明的一个实施例中,提供了一种通过监视数据库计算系统的活动数据库日志来阻止由于数据库计算系统中的日志填满状况而暂停事务的方法。该方法包括:由于在活动数据库日志的系统操作期间发生数据库日志填满状况,由一个或多个处理器切换数据库计算系统的存档单元。该方法还包括:由一个或多个处理器维护数据库日志历史表,其中数据库日志历史表捕获由数据库计算系统的系统线程生成的活动数据库日志的阈值计数。\n该方法还包括:基于由于在数据库计算系统的系统操作期间发生的数据库日志填满状况而导致的数据库计算系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,由一个或多个处理器限定用于存档活动数据库日志的临时位置。\n[0009] 在本发明的另一个实施例中,提供了一种通过监视数据库计算系统的活动数据库日志来阻止数据库计算系统中的事务暂停的计算机系统。该计算机系统包括一个或多个处理器、一个或多个计算机可读存储器、一个或多个计算机可读有形存储设备、以及程序指令,所述程序指令被存储在一个或多个存储设备中的至少一个上,以便经由一个或多个存储器中的至少一个被一个或多个处理器中的至少一个执行。该计算机系统还包括由于在活动数据库日志的系统操作期间发生数据库日志填满状况而切换数据库计算系统的存档单元的程序指令。该计算机系统还包括维护数据库日志历史表的程序指令,其中数据库日志历史表捕获由数据库计算系统的系统线程生成的活动数据库日志的阈值计数。该计算机系统还包括基于由于在数据库计算系统的系统操作期间发生数据库日志填满状况而导致的数据库计算系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,限定用于存档活动数据库日志的临时位置的程序指令。\n[0010] 在本发明的又一实施例中,提供了通过监视数据库计算系统的活动数据库日志来阻止由于数据库计算系统中的日志填满状况而暂停事务的计算机程序产品。该计算机程序产品包括一个或多个计算机可读有形存储设备、以及存储在一个或多个存储设备中的至少一个上的程序指令。该计算机程序产品还包括由于在活动数据库日志的系统操作期间发生数据库日志填满状况而切换数据库计算系统的存档单元的程序指令。该计算机程序产品还包括维护数据库日志历史表的程序指令,其中数据库日志历史表捕获由数据库计算系统的系统线程生成的活动数据库日志的阈值计数。该计算机程序产品还包括基于由于在数据库计算系统的系统操作期间发生数据库日志填满状况而导致的数据库计算系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,限定用于存档活动数据库日志的临时位置的程序指令。\n附图说明\n[0011] 本发明的新颖特征在所附权利要求书中被阐述。然而,当结合附图阅读时,本发明本身以及优选使用模式、另外的目的及其优点将通过参考本发明的以下详细说明而被最佳地理解,在附图中类似的附图标记指示类似的组件、并且:\n[0012] 图1是根据本发明的实施例的用于存档数据库管理系统(DBMS)计算环境中的活动数据库日志的DBMS环境的功能图。\n[0013] 图2是根据本发明的实施例,由于在DBMS计算环境中发生日志填满状况,将数据库计算系统的最终活动数据库日志卸载或传送到数据库计算系统的临时日志单元的活动数据库日志结构的功能图。\n[0014] 图3示出根据本发明的实施例的线程历史表的功能框图,所述线程历史表可由数据库计算系统的数据库程序应用访问以用于维护数据库计算系统的系统线程所生成的活动数据库日志记录,其中数据库计算系统的系统线程生成活动数据库日志记录的速度比数据库计算系统的数据库程序应用更快。\n[0015] 图4是示出根据本发明的实施例,由数据库应用程序执行以便通过监视数据库计算系统的活动数据库日志(包括由于在数据库计算系统中发生日志填满状况而在临时日志单元中卸载活动数据库日志)来阻止由于数据库计算系统中的日志填满状况而导致的事务暂停的步骤的流程图。\n[0016] 图5示出根据本发明的实施例的计算机系统的组件的框图。\n具体实施方式\n[0017] 现在将参考附图详细描述本发明。现在参考图1,其示出用于存档DBMS计算环境\n100的活动数据库日志(包括例如阻止活动数据库日志的事务暂停,因此保证活动数据库日志对数据库系统而言可用以便在DBMS计算环境100中进行处理)的DBMS环境100。数据库系统可以是 是关系模型数据库服务器(RDBMS),其适于服务各种操作系统,\n包括例如 或 操作系统平台。\n[0018] 根据本发明的各方面,由数据库系统执行的数据库操作活动典型地由活动数据库日志维护,其中活动数据库日志的存储被数据库系统利用以从DBMS计算环境100的操作故障中恢复。数据库日志是线性数据集(LDS),其被构造成符合虚拟存储机制,包括例如虚拟存储访问方法(VSAM)。此外,数据库日志也可以被定义为由数据库系统执行的动作的历史,以便在数据库系统的崩溃或硬件故障时保证原子性、一致性、隔离性和持久性(ACID)特性。\n例如,如果数据库系统更新了数据库对象中的事务数据,则更新事件的类型或事务与数据库系统的所有数据一起被记录在数据库日志中。\n[0019] 此外,数据库日志记录机制提供了数据库系统的数据库操作故障的恢复,包括例如由于数据库系统的崩溃或操作故障而对数据库系统的同步或修复。数据库系统在数据库日志中记录数据变更和其他操作信息,其中数据变更通常包括例如插入或更新查询,所述插入或更新查询由数据库系统执行以恢复数据库系统的错误或操作故障。结果,在涉及数据库系统的系统故障的特定情况中,数据库系统可以利用数据库日志的事务的记录信息来恢复尽可能多的故障或损坏数据。例如,这样的事务被初始地记录在数据库系统的存储器中的活动日志中,由此提供对损坏数据的快速访问。考虑:例如,对于数据库系统所执行的每十个插入结构化查询语言(SQL)语句,由数据库系统测量的提交点。此外,考虑:例如,在第五个插入SQL语句期间,数据库系统崩溃,因为没有执行提交测量(commit measure)。例如,根据本发明的各方面,在数据库系统的操作期间,定义数据库日志以用于记录数据库系统的操作活动。然而,当数据库系统达到其数据库日志的全部集合变得填满的状态、并且因此数据库系统不能执行任何另外的数据库日志记录活动时,数据库系统中止处理数据库系统的数据库日志,由此引起数据库系统的日志填满状况。\n[0020] 日志填满状况暂停数据库系统的事务或操作,并会引起数据库系统的所有新事务的中断,其中新事务会要求数据库系统的数据库日志记录被写入。当数据库系统向数据库系统的存储带存档时,发生日志填满状况。此外,如果数据库日志被卸载到存储带,则硬件或存储带的不可用会阻止数据库系统存档数据库日志。当数据库系统不能将数据存档到数据库系统的存储盘时(特别是如果所述盘的存储被填满),也发生日志填满状况。因此,在日志填满状况下,数据库系统试图将数据库日志卸载到数据库系统的各种设备或数据库系统的元件上,直到或者如果数据库系统的设备或元件变成或者可用于存储卸载的数据库日志。\n[0021] 本发明提供了由于在数据库系统的系统操作期间在数据库系统中发生了日志填满状况,而切换数据库系统的存档单元。本发明还提供了:维护数据库日志历史表的系统线程,以及基于由于在数据库计算系统的系统操作期间发生了日志填满状况而导致的数据库系统的切换后的存档单元以及所维护的数据库日志历史表中的活动数据库日志的阈值计数,来提供用于存档活动数据库日志的临时位置。例如,阈值计数可以由系统管理员设置,或者其可以是活动数据库日志的阈值计数的缺省值。本发明特别允许避免数据库系统的操作期间的日志填满状况。例如,在没有发生数据库日志的存档时设置阈值,然而,当达到阈值时,数据库系统创建临时单元以便由于数据库系统中发生日志填满状况而将数据库日志临时卸载到临时单元。\n[0022] 考虑例如数据库系统的五个数据库日志被设置为存档到数据库系统的磁带上的情况。此外,考虑:磁带不可用,并且数据库日志不能被卸载到磁带。因此,在这种情况下,数据库系统已经达到其最终的活动数据库日志,并且由于已经确定存在硬件问题,在本发明的实施例中,数据库系统由于数据库系统中的日志填满状况而将存档介质切换为另一个设备。\n[0023] DBMS存档环境100包括数据库计算系统105。数据库计算系统105是服务器数据库计算系统,诸如管理服务器、网络服务器或任何其他电子设备或计算系统。服务器计算系统也可以表示通过一个或多个网络互连的计算机的“云”,其中当通过数据库管理系统(DBMS)环境100的计算环境访问时,服务器计算系统可以是针对利用集群计算机的计算系统的主服务器。例如,根据至少一个实施例,云计算系统可以是管理系统的一般实现,所述管理系统通过监视数据库计算系统105的活动数据库日志的状态来阻止由于数据库计算机系统\n105的日志填满状况而暂停或停止事务的处理。数据库计算系统105包括数据库应用程序\n110和数据库存储单元129。由于在数据库计算系统105的系统操作期间发生数据库日志填满状况,数据库应用程序110执行程序指令以切换数据库计算系统105的存档单元。根据一方面,数据库计算系统105的SQL程序可以作为数据库应用程序110的应用处理的一部分来执行,其中应用处理涉及执行数据库应用程序110的一个或多个程序。\n[0024] 数据库存储单元129可以是任何类型的存储设备、存储服务器、存储区域网络、独立磁盘冗余阵列(RAID)、云存储设备或任何类型的数据存储装置。例如,数据库存储单元\n129是 关系数据库管理系统。RDBMS是数据库,其存储来自数据库计算系统105的数据库日志记录活动的信息。存储在数据库存储单元129中的信息可以是数据库日志的结构化或非结构化信息,包括由数据库计算系统105执行的动作的历史,以便在数据库计算系统\n105的崩溃或操作硬件故障时保证ACID特性。\n[0025] 数据库应用程序110包括数据库恢复单元130、数据库日志管理器135、线程日志历史表125和存档数据库日志结构126。数据库恢复单元130是由数据库应用程序110执行的可恢复操作序列以用于数据库应用程序110的应用处理。例如,如果数据库计算系统105的工作单元涉及对DBMS计算环境100的其他可恢复资源的变更,则数据库恢复单元130的工作单元将被数据库恢复单元130的其他恢复单元支持。\n[0026] 数据库日志管理器135存档数据库系统105的数据库日志文件,并在数据库计算系统105的恢复期间取回数据库日志文件。例如,数据库日志管理器135支持存档数据库计算系统105的媒体文件,其中数据库计算系统105的数据库日志文件可以被存档到数据库计算系统105的磁盘位置。数据库日志管理器135包括数据库事务管理器120。数据库事务管理器\n120将标识符分配给数据库计算系统105的事务,监视事务的进展,并对数据库计算系统105的系统操作期间的事务的完成和故障负责。例如,数据库日志管理器135向数据库事务管理器120提供可以用来在单个工作单元内协调若干数据库的更新的功能。数据库应用程序110自动协调数据库日志管理器135的工作单元,并利用数据库日志管理器135来登记数据库计算系统105的每个事务。\n[0027] 线程日志历史表125维护由数据库计算系统105的系统线程生成的活动数据库日志记录,其中数据库计算系统105的系统线程生成活动数据库日志记录的速度比数据库程序应用110更快。例如,线程历史表125是当达到所有活动数据库日志的25%、或者由系统管理员设置的活动数据库日志的任何特定阈值计数时,由数据库应用程序110创建的数据库计算系统105的临时表。根据至少一个实施例,一旦数据库计算系统105达到这样的点,线程日志历史表125就被数据库应用程序110删除,其中在所述点处,数据库计算系统105的所有活动数据库日志被卸载到数据库计算系统105的以前不能用于存档活动数据库日志的原有设备(original device)。\n[0028] 在示出的实施例中,由于在DBMS计算环境100中发生日志填满状况,存档数据库日志结构126将数据库计算系统105的活动数据库日志卸载或传送到数据库程序应用110的临时日志单元140。临时日志单元140包括zparm临时存档单元(zparm_temp_arch_unit)141,其提供用于将活动数据库日志卸载到临时日志单元140的参数值。例如,存档数据库日志结构126也利用日志管理控制块(LMB)单元127,其包括用于管理活动数据库日志的两个或更多控制块LDSD 111、112、113和114。存档数据库日志结构126也包括引导数据集(BSDS,bootstrap dataset)128,其将卸载到临时日志单元140的活动数据库日志与活动数据库日志的对应单元一起存储在临时日志单元140中。\n[0029] 根据本发明的至少一个实施例,如果数据库计算系统105中的被指定用于存档活动数据库日志的设备不可用,则存档引擎145将活动数据库日志存档在临时日志单元140中。此外,根据本发明的至少一个实施例,一旦所述设备变得可用,存档引擎145将存档在临时日志单元140中的活动数据库日志传送到数据库计算系统的适当设备。\n[0030] 图2示出根据本发明的实施例,由于DBMS计算环境100中发生日志填满状况,而将数据库计算系统105的最终活动数据库日志卸载或传送到临时日志单元140的活动数据库日志结构126的功能框图。\n[0031] 数据库计算系统105利用LMB单元127来管理数据库计算系统105的活动数据库日志。如图所示,LMB 127已经“通过链条连接(chained)”到环形链条形式的两个或更多控制块LDSD 111、112、113和114(即,LBM 127包括指向环形链条形式的两个或更多控制块LDSD \n111、112、113和114的链条的头部的指针),其中每个LDSD 111、112、113和114分别表示被标为日志1、日志2、日志3和日志4的活动数据库日志数据集。LMB 127也包括指向数据库计算系统105的存档参数的指针,其中临时日志单元140可以根据LMB 127的存档参数而被创建。\n例如,如果数据库应用程序110确定数据库计算系统105的硬件故障,其中在这种情况下数据库应用程序110等待数据库应用程序110达到其最终活动数据库日志,数据库应用程序\n110将数据库计算系统105的存档单元切换为临时日志单元140、并将活动数据库日志存档到临时日志单元140。根据至少一个实施例,在活动数据库日志被传送到临时日志单元140后,数据库程序应用110利用临时日志单元140的活动数据库日志更新BSDS 128。如图1所示,临时日志单元140的最终活动数据库日志被创建的位置是由数据库计算系统105的Zparm参数临时存档单元141确定的。例如,如上所述,Zparm临时存档单元141是数据库计算系统105的系统级参数,其限定或描述数据库系统105的存档参数值的操作特性。在至少一个实施例中,Zparm临时存档单元141也可以包括双重存档(dual archive)单元,其可以保证活动数据库日志的副本被存档到临时日志单元140。\n[0032] 此外,为了获取Zparm参数临时存档单元141的存档参数值,数据库程序应用110利用包括存档参数的LMB单元127,其中临时日志单元140可以根据LMB 127的存档参数而被创建。如上描述,数据库计算系统105使用LMB 127来管理数据库计算系统105的活动日志。LMB单元127包括指向数据库计算系统105的临时日志单元140的指针。临时日志单元140包含两个数据集,一个数据集包含活动日志,而另一个数据集包含在存档开始时的时间点的BSDS \n128,其中BSDS 128利用临时日志单元140的被存档的临时日志而得到更新。此外,存档引擎\n145将整个临时存储的活动数据库日志存档在临时日志单元140中。例如,在本发明的至少一个实施例中,如果例如数据库系统105的可能被指定用于存档活动数据库日志的存档单元不可用,则将最终活动数据库日志存档到临时日志单元140是由存档引擎145执行的。\n[0033] 图3示出数据库程序应用110的线程历史表125的功能框图,其中线程历史表125可由数据库程序应用110访问以维护由系统线程生成的活动数据库日志记录,所述系统线程生成活动数据库日志记录的速度比数据库程序应用110更快。根据至少一个实施例,数据库计算系统105维护由线程日志历史表125中的线程1、线程2、线程3中的任何一个生成的最终活动数据库日志记录的阈值计数。\n[0034] 考虑:例如,其中全部活动数据库日志的50%被填满的情况,在这种情况下,数据库程序应用110维护由线程1、线程2、线程3中的任何一个生成的活动数据库日志的数量的记录,其中线程1、线程2、线程3是数据库计算系统105的线程日志历史表125中的当前运行或操作的系统线程。此外,在其中全部活动数据库日志的50%被填满的示例中,线程1、线程\n2、线程3中的任何一个的恢复单元(UR)340与其系统线程细节(包括例如线程状态310、URID \n320、日志计数/URID 330、UR 340和总计数350)一起由数据库程序应用110确定。UR 340是将数据库计算系统105中的数据从一个一致性点变更到另一个一致性点的工作。URID 320标识UR 340的工作单元。\n[0035] URID 320是指示活动数据库日志的该恢复单元的开头的活动数据库日志的起始UR的相对字节地址。例如,在示出的环境中,UR1是针对线程3的当前正在进行中的恢复单元的URID 320,其中线程3表示系统线程。对于每个UR1、UR2、UR3等,URID 320由数据库程序应用110分配,并且其对应的活动数据库日志使用链接的列表数据结构而得到维护。例如,数据库程序应用110开始数据库计算系统105的活动数据库日志的UR记录标记。例如,当UR记录被创建时,也对该UR创建UR计数器,并且只要新日志被添加到UR,该计数器就被递增。因此当UR结束时,我们具有总计数,其在线程日志历史表125中被更新。线程日志历史表125维护所有系统线程的提交的UR和未提交的UR的总计数。例如,如果对于完成的UR 340识别出对应的线程1、线程2或线程3中的任何一个,则针对线程1、线程2或线程3中的任何一个线程的URID 320和总计数350在线程日志历史表125中被更新。在这种情况下,针对每个URID \n320的线程状态310从未提交(Un-Committed)被改变为提交(Committed)状态。此外,考虑:\n例如,数据库计算系统105达到最终活动数据库日志被0%填满的点的情况,在这种情况下,数据库应用程序110确定所有活动地运行的UR(包括所有运行的UR的日志计数),并更新运行的UR的日志计数的线程日志历史表125。\n[0036] 此外,数据库程序应用110搜索线程日志历史表125以确定线程1、线程2、线程3中的任何一个是否生成了数据库计算系统105的最大数量的活动数据库日志。一旦发现数据库日志历史表125中的线程1、线程2、线程3中的生成最大数量的活动数据库日志的任何一个线程的系统线程,该系统线程就被临时暂停。在另一个示例中,考虑以下情况:存在多于一个的系统线程以比数据库应用程序110更快的速度生成更多数据库活动日志。在这样的情况下,当最终活动数据库日志的25%被填满、并且数据库应用程序110还没有开始存档最终数据库活动日志时,根据本发明的实施例,数据库应用程序110验证线程日志历史表125以确定线程1、线程2、线程3中的生成了数据库计算系统105的最大数量的活动数据库日志的任何一个线程的第二系统线程,并暂停该第二系统线程。\n[0037] 然而,如果第二系统线程的暂停不能解决如上所述的线程1、线程2或线程3中的任何一个以比数据库应用程序110更快的速度生成更多活动数据库日志的问题,则在数据库应用程序110中的最终活动数据库日志的容量的50%处,线程1、线程2、线程3中的已经生成最大数量的活动数据库日志的任何一个线程的第三系统线程被数据库应用程序110识别并暂停。现在,在这种情况下,数据库应用程序110开始将活动数据库日志存档到临时日志单元140。当所有的最终活动日志被存档到临时日志单元125时,数据库应用程序110恢复被暂停的线程1、线程2或线程3中的任何一个。例如,如果数据库应用程序110恢复被暂停的线程,则线程日志历史表125中的线程1、线程2、线程3中的任何一个线程的一些条目被更新。\n例如,对于被恢复的线程1、线程2或线程3中的每一个,针对被恢复的线程的线程状态310从暂停被改变为活动/暂停前(pre-suspended)。\n[0038] 根据至少一个实施例,一旦数据库应用程序110将数据库计算系统105的存档单元切换为临时日志单元140并将最终活动数据库日志存档到临时日志单元140,同样一旦数据库应用程序110暂停或恢复数据库计算系统105的任何事务,数据库应用程序110将数据库应用程序110的被暂停或恢复事务的更新的消息传送给数据库计算系统105的系统管理员。\n[0039] 此外,在线程1、线程2、线程3中的任何一个的第三系统线程被恢复后,数据库应用程序110首先验证线程1、线程2或线程3的之前被暂停的线程中的任何一个是否正在引起类似的日志记录问题,如果线程1、线程2、线程3中的任何一个正在引起类似的日志记录问题,则数据库应用程序110暂停线程1、线程2、线程3中的任何一个的所有系统线程。否则,数据库应用程序110暂停从之前的循环值开始以来生成最多数量的活动日志记录的线程。此外,如果线程1、线程2、线程3中的任何一个的相同系统线程被暂停超过系统管理员指定的系统线程的阈值,则该线程将被永久暂停。\n[0040] 图4是示出根据本发明的实施例,由数据库应用程序110执行以便通过监视数据库计算系统105的活动数据库日志(包括由于数据库计算系统105中发生日志填满状况而在临时日志单元140中卸载活动数据库日志)来阻止数据库计算系统105中的事务暂停的步骤的流程图。\n[0041] 由于在数据库计算系统105的活动数据库日志的系统操作期间发生日志填满状况,数据库应用程序110切换数据库计算系统105的存档单元(步骤410)。数据库应用程序\n110还维护线程日志历史表125,其中线程日志历史表125捕获由数据库计算系统105的系统线程生成的活动数据库日志的阈值计数(步骤420)。例如,数据库应用程序110确定系统/硬件故障或数据库日志填满状况是否是由以比数据库计算系统105更快的速度生成活动数据库日志的系统线程引起的。如果日志填满状况是由数据库计算系统105的系统线程引起的,则数据库应用程序110还例如通过确定具有最高数量的活动数据库日志的系统线程、并基于线程日志历史表125中的活动数据库日志的计数的阈值而暂停系统线程,来临时暂停系统线程对活动数据库日志的生成,其中线程日志历史表125维护数据库计算系统105的活动的和暂停的系统线程的记录。数据库应用程序110还在线程日志历史表125中搜索数据库计算系统105的活动的和暂停的系统线程的记录。例如,数据库应用程序110将该过程重复某个指定的阈值,此后,数据库应用程序110永久地暂停系统线程。例如,数据库应用程序110还基于由于数据库计算系统105的系统操作期间发生数据库日志填满状况而导致的数据库计算系统105的切换后的存档单元以及线程日志历史表125中的活动数据库日志的维护的阈值计数,来限定用于存档活动数据库日志的临时日志单元140(步骤430)。这样做是因为可能会存在以下两者的组合:数据库计算系统105的系统故障,以及数据库计算系统105的写入更多日志的系统线程。如上所述,数据库日志填满状况会暂停数据库系统的事务或操作,并且会引起数据库计算系统105的所有新事务的中断,其中所述新事务要求数据库计算系统105的日志记录被写入。\n[0042] 根据本发明的至少一个实施例,BSDS 128包括:包括活动数据库日志的数据集的记录;以及包括临时日志单元140的被存档的活动数据库日志的BSDS 128的数据集的记录。\n例如,由于在数据库计算系统105的活动数据库日志的系统操作期间发生数据库日志填满状况,数据库应用程序110确定数据库故障或数据库日志状况的原因。由于在活动数据库日志的系统操作期间发生数据库日志填满状况,数据库应用程序110还确定系统故障或数据库日志状况的原因,其中发生将活动数据库日志存档到临时日志单元140的操作,而不暂停或中止数据库计算系统105的系统操作。此外,系统故障或数据库日志状况的原因直到活动数据库日志达到最终活动数据库日志状态才被解决,其中当活动数据库日志达到最终活动数据库日志状态时活动数据库日志被存档到临时日志单元140,并且其中最终活动数据库日志状态基于活动数据库日志记录的另一个阈值计数。\n[0043] 图5是根据本发明的实施例的计算机系统的功能框图。\n[0044] 计算机系统500仅是适合的计算机系统的一个示例,并且并非旨在对在此描述的本发明的实施例的使用范围或功能暗示任何限制。不管怎样,计算机系统500能够被实施和/或执行上文中阐述的任何功能。在计算机系统500中存在计算机512,其能利用大量其他通用或专用计算系统环境或配置来操作。适合于与计算机512一起使用的熟知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微计算机系统、大型计算机系统以及包括任何上述系统或设备等的分布式云计算环境。数据库计算系统105可以被实施为计算机512的实例。\n[0045] 计算机512可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可以包括例程、程序、对象、组件、逻辑、数据结构等,其执行特定任务或实施特定抽象数据类型。计算机512可以在分布式云计算环境中被实践,在所述分布式云计算环境中任务被通过通信网络连接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。\n[0046] 如图5所示,计算机512以通用计算设备的形式示出。计算机512的组件可以包括但不限于一个或多个处理器或处理单元516、存储器528和总线518,该总线518将包括存储器\n528的各种系统组件耦合到处理单元516。\n[0047] 总线518表示一个或多个任意若干类型的总线结构,包括存储器总线或存储控制器、外围总线、加速图形端口以及处理器或使用任意各种总线架构的本地总线。通过举例而不是进行限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线以及外围组件互连(PCI)总线。\n[0048] 计算机512典型地包括各种计算机系统可读介质。这样的介质是可以被计算机512访问的任何可用介质,并且包括易失性和非易失性介质,以及可移除和不可移除介质。\n[0049] 存储器528包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)630和/或高速缓存532。计算机512还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅通过举例,存储系统534可以被提供用于从不可移除、非易失性磁介质(没有示出,并且典型地被称为“硬驱”)读取或向其写入。尽管未示出,可以提供用于从可移除、非易失性磁盘(例如“软盘”)读取和向其写入的磁盘驱动,以及用于从可移除、非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取和向其写入的光盘驱动。在这种情况下,各自可以通过一个或多个数据介质接口连接到总线518。如以下将进一步描述和示出的,存储器528可以包括至少一个程序产品,其具有一组(例如至少一个)配置成执行本发明的实施例的功能的程序模块。\n[0050] 数据库应用程序110可以存储在存储器528中,通过举例而不是进行限制,以及操作系统、一个或多个应用程序、其他程序模块以及程序数据可以存储在存储器528中。操作系统、一个或多个应用程序、其他程序模块、以及程序数据中的每一个或其某种组合可以包括网络环境的实施。程序模块542通常执行在此描述的本发明的实施例的功能和/或方法。\n数据库应用程序110可以被实施为程序540的实例。\n[0051] 计算机512也可以与下述设备通信:一个或多个外部设备514(诸如键盘、指点设备等)以及显示器524;使用户能够与计算机512交互的一个或多个设备;和/或使计算机512能够与一个或多个其他计算设备通信的任何设备(例如网卡、调制解调器等)。这样的通信经由输入/输出(I/O)接口522发生。此外,计算机512经由网络适配器520与一个或多个网络通信,诸如局域网(LAN)、通用广域网(WAN)、和/或公共网络(例如因特网)。如图所示,网络适配器520经由总线518与计算机512的其他组件通信。应当理解,尽管未示出,其他硬件和/或软件组件可以与计算机512结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动以及数据存档存储系统等。\n[0052] 附图中的流程图和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意的是,在有些替代性实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。\n[0053] 所属领域的技术人员将理解的是,本发明的实施例可以实施为系统、方法或计算机程序产品。因此,本发明的实施例可以采取以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或软件和硬件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的实施例还可以采取用一个或多个计算机可读介质实施的计算机程序产品的形式,该计算机可读介质上包含有计算机可读程序代码。\n[0054] 另外,可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的适当组合。\n计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件的上下文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。\n[0055] 计算机可读信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读程序代码。这种传播的信号可以采用各种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。\n[0056] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言(诸如Java、Smalltalk、C++等),还包括常规的过程式程序设计语言(诸如“C”程序设计语言、诸如Verilog之类的硬件描述语言、或类似的程序设计语言)。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。\n[0057] 计算机程序指令还可以加载到计算机、其它可编程数据处理装置或其他设备上,以使一系列操作步骤在计算机、其它可编程装置或其他设备上被执行以产生计算机实现的过程,使得在计算机或其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/动作的处理。\n[0058] 基于前述方法、系统和计算机程序产品,已经描述了通过监视数据库计算系统的活动数据库日志来阻止数据库计算系统中的事务暂停的方法。然而,可以作出许多修改和替换,而不脱离本发明的范围。在这点上,流程图或框图中的每个方框可以表示模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意的是,在有些替代性实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。因此,本发明是通过举例而不是限制的方式公开的。
法律信息
- 2021-11-26
专利权的转移
登记生效日: 2021.11.16
专利权人由国际商业机器公司变更为勤达睿公司
地址由美国纽约变更为美国纽约
- 2017-11-24
- 2015-05-13
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201410503040.8
申请日: 2014.09.26
- 2015-04-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-01-27
|
2009-08-31
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |