获取逻辑日志记录中的信息

要确定数据完整性是否受到不一致实现的全局事务的影响,必须重建全局事务,并确定事务的哪些部分已落实,哪些已回滚。使用 onlog 实用程序获取必要信息。过程如下:

  1. 在包含 HEURTX 记录的参与者上重建事务。
    1. 参与者数据库服务器逻辑日志是您进行信息搜索的开始点。日志中的每条记录均有本地事务标识号 (xid)。获取 HEURTX 记录的 xid
    2. 使用本地 xid 定位所有相关联的日志记录,这些记录作为该工作片段的一部分而回滚。
  2. 确定哪一数据库服务器是充当全局事务的协调者。
    1. 查找参与者上包含相同本地 xid 的 PREPARE 记录。 PREPARE 记录为该参与者标记了两阶段落实协议的起点。
    2. 使用 onlog -l 选项获取 PREPARE 记录的详细输出。
      该记录包含全局事务标识 (GTRID) 和协调数据库服务器的名称。有关 GTRID 的信息,请参阅获取全局事务标识
  3. 从协调者日志获取其他参与者的列表。
    1. 检查协调者数据库服务器上的日志记录。 找到 BEGPREP 记录。
    2. 检查 BEGPREP 记录的详细输出。
      如果该记录中 GTRID 的前 32 字节与参与者的 GTRID 相匹配,那么 BEGPREP 记录是同一全局事务的一部分。请注意,BEGPREP 详细输出的 ASCII 部分中显示的参与者。
  4. 重建每个参与者上的事务。
    1. 在每个参与者数据库服务器上,读取逻辑日志以找到包含与该事务关联的 GTRID 的 PREPARE 记录,并获取该参与者执行的工作片段的本地 xid
    2. 在每个参与者数据库服务器上,使用本地 xid 定位所有与该事务(已落实或已回滚)相关联的逻辑日志记录。

在您遵循该过程之后,您将知道事务的所有参与者是哪些、分配给每个参与者哪些工作片段以及每个工作片段是已回滚还是已落实。根据该信息,您可以确定独立操作是否影响了数据完整性。