逻辑日志记录介绍
本章内容
要显示逻辑日志文件所包含的逻辑日志记录,请使用 onlog 命令。
本章提供以下信息:
- 阅读逻辑日志记录的简要指南
- 不同逻辑日志记录类型的列表
一般来说,您无需阅读和理解逻辑日志文件。然而在调试情况下,onlog 输出是有用的。例如:您可能想要使用 onlog 跟踪特定事务或查看数据库服务器对特定 tblspace 进行了什么更改。也可以使用 onlog 调查前滚过程中所发生的错误的原因。
关于逻辑日志记录
大多数 SQL 语句生成多个逻辑日志记录。当数据库服务器在逻辑日志中记录以下事件时,解释逻辑日志记录就更为复杂:
- 删除表或索引的事务
- 回滚事务
- 在其中事务任活动的检查点
- 分布式事务
以下各节讨论这些事务的逻辑日志记录。
删除表或索引的事务
一旦数据库服务器从数据库中删除了表或索引,它无法回滚该删除操作。如果事务包含 DROP TABLE 或 DROP INDEX 语句,那么数据库服务器如下处理该事务:
- 数据库服务器完成事务的所有其他部分,并写下相关的逻辑日志记录。
- 数据库服务器将 BEGCOM 记录写入逻辑日志和与 DROP TABLE 或 DROP INDEX 相关联的记录(例如:DINDEX )。
- 数据库服务器写入 COMMIT 记录。
如果事务在数据库服务器将 BEGCOM 记录写入逻辑日志之后意外终止,那么数据库服务器在恢复过程中前滚该事务,因为它无法回滚删除操作。
回滚的事务
当发生回滚时,数据库服务器为回滚的逻辑日志中的每个记录生成补偿日志记录(CLR)。如果在回滚过程中发生系统故障,那么数据库服务器使用 CLR 。CLR 向数据库服务器提供有关在故障发生前回滚进度的信息。换句话说,数据库服务器使用 CLR 来记录回滚。
如果 CLR 包含短语 includes next record ,那么打印的下一条日志记录作为补偿操作包含在 CLR 日志记录中。否则,必须假定补偿操作是 CLR 的 link 字段所指向的日志记录的逻辑撤销。
带有活动事务的检查点
如果任何事务在检查点时是活动的,那么检查点记录包含使用以下各列描述每个活动事务的子条目:
- 日志开始(十进制格式)
- 事务 ID(十进制格式)
- 唯一日志号(十进制格式)
- 日志位置(十六进制格式)
- 用户名
分布式事务
当分布式事务(跨多个数据库服务器的事务)生成日志记录,它们与非分布式事务稍有不同。如果事务提交时发生故障,那么可能需要阅读并解释它们,以确定这两个数据库服务器上事务的状态。
分布式事务中涉及以下日志记录:
- BEGPREP
- ENDTRANS
- HEURTX
- PREPARE
- TABLOCKS
如果正在使用 TP/XA 执行分布式事务,那么数据库服务器使用 XAPREPARE 记录而不是 PREPARE 记录。
逻辑日志记录的结构
每个逻辑日志记录都有头信息,根据记录类型,输出中也会出现其他信息列,就像逻辑日志记录类型和附加列中解释的那样。
逻辑日志记录头
下表包含了说明显示逻辑日志记录的头列的样本输出。
表: onlog 的样本输出
addr | len | type | xid | id | link |
---|---|---|---|---|---|
2c018 | 32 | BEGIN | 6 | 3 | 0 |
2c038 | 140 | HDELETE | 6 | 0 | 2c018 |
2c0c4 | 64 | DELITEM | 6 | 0 | 2c038 |
2c104 | 40 | DELITEM | 6 | 0 | 2c0c4 |
2c12c | 72 | HDELETE | 6 | 0 | 2c104 |
2c174 | 44 | DELITEM | 6 | 0 | 2c12c |
2c1a0 | 72 | HDELETE | 6 | 0 | 2c174 |
2c1e8 | 44 | DELITEM | 6 | 0 | 2c1a0 |
2c214 | 64 | HDELETE | 6 | 0 | 2c1e8 |
2c254 | 56 | DELITEM | 6 | 0 | 2c214 |
2c28c | 48 | DELITEM | 6 | 0 | 2c254 |
2c2bc | 24 | PERASE | 6 | 0 | 2c28c |
2c2d4 | 20 | BEGCOM | 6 | 0 | 2c2bc |
2c2e8 | 24 | ERASE | 6 | 0 | 2c2d4 |
2c300 | 28 | CHFREE | 6 | 0 | 2c2e8 |
2c31c | 24 | COMMIT | 6 | 0 | 2c300 |
表: 定义了每个头列的内容。
头字段 | 内容 | 格式 |
---|---|---|
addr | 日志记录地址(日志位置) | 十六进制 |
len | 记录长度(字节) | 十进制 |
type | 记录类型的名称 | ASCII |
xid | 事务编号 | 十进制 |
id | 逻辑日志编号 | 十进制 |
link | 到事务中的前一记录的链接 | 十六进制 |
逻辑日志记录类型和附加列
除了对给个记录显示 6 个头列之外,一些记录类型还显示信息的附加列。信息的显示会根据记录类型而变化。
下表列出了所有记录类型及它们附加列。
操作列标识生成日志条目的数据服务器操作类型。附加列和格式列描述逻辑日志记录头中描述的头以外每个记录类型还出现什么信息。
记录类型 | 操作 | 附加列和格式 |
---|---|---|
ADDCHK | 添加 chunk | ● chunk 编号 - Decimal ● chunk 名称 - ASCII |
ADDDBS | 添加 dbspace | ● dbspace 名称 - ASCII |
ADDITEM | 将条目添加到索引中 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● 逻辑页 - Decimal ● 键号 - Decimal ● 键长 - Decimal |
ADDLOG | 添加日志 | ● 日志编号 - Decimal ● 日志长度(页)- Decimal ● 页号 - Hexadecimal |
ALLOCGENPG | 分配类属页 | ● tblspace ID - Decimal ● rowid - Decimal ● slot 标识和长度 - Decimal ● 页的版本(如果删除的话)- Decimal ● 标识,vimage 记录 - Decimal ● 上一个 rowid - Decimal ● 数据 - ASCII |
ALTERDONE | 对分片的更改完成 | ● tblspace ID - Hexadecimal ● 上一页的物理页号 - Hexadecimal ● 逻辑页号 - Decimal ● 更改的版本 - Decimal |
ALTSPCOLSNEW | 变更表中的已更改列 | ● 列的数量 - Decimal ● 特殊列列表 - 数组 |
ALTSPCOLSOLD | 变更表中的已更改列 | ● 列的数量 - Decimal ● 特殊列列表 - 数组 |
BADIDX | 错误的索引 | ● tblspace ID - Hexadecimal |
BEGCOM | 开始提交 | ●(无) - (无) |
BEGIN | 开始工作 | ● 数据 - Decimal ● 时间 - Decimal ● SID - Decimal ● 用户 - ASCII |
BEGPREP | 由协调者数据库服务器所写入,以记录两阶段提交协议的开始 | ● 标识 - Decimal(在分布式事务中值为 0) ● 参与者的数量 - Decimal |
BEGWORK | 开始事务 | ● 开始事务的时间 - Decimal ● 用户 ID - Decimal ● 进程 ID - Decimal |
BFRMAP | 简单大对象自由图页更改 | ● tblspace ID - Hexadecimal ● bpageno - Hexadecimal ● 状态 USED/FREE 日志 ID - Decimal ● 上一页 - Hexadecimal |
BLDCL | 构建 tblspace | ● tblspace ID - Hexadecimal ● fextsize - Decimal ● nextsize - Decimal ● 行大小 - Decimal ● ncolumns - Decimal ● 表名 - ASCII |
BMAPFULL | 位图已修改以准备用于变更 | ● tblspace ID - Hexadecimal ● 位图页号 - Decimal |
BMAP2TO4 | 2 位位图更改成 2 个 4 位位图 | ● tblspace ID - Hexadecimal ● 2 位位图页号 - Decimal ● 标识 - Decimal |
BSPADD | 添加 blobspace | ● blobspace 名称 - ASCII |
BTCPYBCK | 将子键复制回父键 | ● tblspace ID - Hexadecimal ● 父逻辑页 - Decimal ● 子逻辑页 - Decimal ● slot - Decimal ● 行关闭 - Decimal ● 键号 - Decimal |
BTMERGE | 合并 B-tree 节点 | ● tblspace ID - Hexadecimal ● 父逻辑页 - Decimal ● 左逻辑页 - Decimal ● 右逻辑页 - Decimal ● 做 slot - Decimal ● 左行关闭 - Decimal ● 右 slot - Decimal ● 右行关闭 - Decimal ● 键号 - Decimal |
BTSHUFFL | 拖拽 B-tree 节点 | ● tblspace ID - Hexadecimal ● 父逻辑页 - Decimal ● 右逻辑页 - Decimal ● 左逻辑页- Decimal ● 左 slot - Decimal ● 左行关闭 - Decimal ● 键号 - Decimal ● 标识 - Hexadecimal |
BTSPLIT | 分割 B-tree 节点 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● 父逻辑页 - Decimal ● 左逻辑页 - Decimal ● 右逻辑页 - Decimal ● 无限逻辑页 - Decimal ● 根左逻辑页 - Decimal ● 中间分割 - Decimal ● 键号 - Decimal ● 键长 - Decimal |
CDINDEX | 创建拆离索引 | ● 数据库名 - ASCII ● 所有者 - ASCII ● 表名 - ASCII ● 索引名 - ASCII |
CDR | 捕获由更新语句修改过得表列组,例如: bitvector 。此日志记录允许 Enterprise Replication 只捕获更改过得列传输给目标站点。 在该示例中,表的前 6 列从未更改过(bitvector 中的最左面 6 位是 0 ),第 7 和第 8 列更新过(第7 和 8 位是 1 )等等。onlog 输出显示了与输出的单行中相符的同样多的 bitvector 位。要查看以十六进制显示的整个 bitvector ,请使用 onlog -l 命令 | ● CDR 记录的名称 - ASCII ● 分区号 - Hexadecimal ● bitvector - 二进制 CDR 日志记录的样本 onlog 输出: adr len type xid id link 40 36 CDR 14 0 18 name partno bitvector UPDCOLS 10009a 000000110100110100 |
CHALLOC | Chunk extent 分配 | ● 页号 - Hexadecimal ● 大小 - Hexadecimal |
CHCOMBINE | Chunk extent 结合 | ● 页号 - Hexadecimal |
CHFREE | Chunk extent 释放 | ● 页号 - Hexadecimal ● 大小 - Hexadecimal |
CHKADJUP | 更新磁盘上的 chunk 附件。当从保留区域移动空间至元数据或用户数据区域或当用户添加sbspace chunk 时,数据库服务器写入该记录 | ● chunk 编号 - Integer ● ud1_start_page - Integer ● ud1_size - Integer ● md_start_page - Integer ● md_size - Integer ● ud2_start_page - Integer ● ud2_size - Integer ● 标志 - Hexadecimal |
CHPHYLOG | 更改物理日志位置 | ● 页号 - Hexadecimal ● 大小(千字节) - Hexadecimal ● dbspace 名 - ASCII |
CHRESERV | 保留用于元数据窃取的 extent 。该记录是在添加 sbspace 块时写入的。 | ● chunk 编号 - Integer ● 页号 - Integer ● 长度 - Integer |
CHSPLIT | Chunk extent 分割 | ● 页号 - Hexadecimal |
CINDEX | 创建索引 | ● tblspace ID - Hexadecimal ● 长的 rowid - Decimal ● 高的 rowid - Decimal ● 索引描述符 - ASCII |
COARSELOCK | 粗粒度锁定 | ● tblspace ID - Hexadecimal ● 旧的粗粒度锁定标志值 - Decimal ● 新的粗粒度锁定标志值 - Decimal |
CKPOINT | 检查点 | ● 最大用户数 - Decimal ● 活动事务的数量 - Decimal |
CLR | 补偿日志记录:在回滚过程中创建 | ● (无) - (无) |
CLUSIDX | 创建群集索引 | ● tblspace ID - Hexadecimal ● 键号 - Decimal |
COLREPAI | 调整 BYTE、 TEXT 或 VARCHAR 列 | ● tblspace ID - Hexadecimal ● 已调整列的数量 - Decimal |
COMMIT | 提交工作 | ● 日期 - Decimal ● 时间 - Decimal |
COMTAB | 压缩页上的 slot 表 | ● 逻辑页编号 - Decimal ● 已移动 slots 的数量 - Decimal ● 已压缩的 slot 对 - ASCII |
COMWORK | 结束事务并提交工作 | ● 结束事务时间 - Decimal ● 开始事务时间 - Decimal |
DELETE | 删除前映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal |
DELITEM | 从索引中删除条目 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● 逻辑页 - Decimal ● 键号 - Decimal ● 键长 - Decimal |
DERASE | 删除关闭 dbspace 中的 tblspace | ● tblspace 编号 - Hexadecimal ● 表锁编号 - Decimal |
DFADDEXT | 已添加的下一个 extent | ● partnum - Hexadecimal ● 列表中 extent 的偏移量 - Hexadecimal ● 页中的 extent 大小 - Decimal ● extent 的物理地址 - Offset and chunk no-hex |
DFDRPEXT | 删除源 extent | ● partnum - Hexadecimal ● 列表中 extent 的偏移量 - Hexadecimal ● extent 源大小 - Decimal ● 物理地址 - offset and chunk no-hex |
DFEND | 结束分片的操作 | ● partnum - Hexadecimal |
DFMVPG | 将页从旧的 extent 移到新的 extent | ● partnum - Hexadecimal ● 新的 extent 的偏移量 - Hexadecimal ● 资源的逻辑页号 - Hexadecimal ● 目的地的物理地址 - Offset and chunk no-hex ●资源的逻辑地址 - Offset and chunk no-hex |
DFREMDUM | 移除虚拟条目 | ● partnum - Hexadecimal |
DFSTART | 分片开始操作 | ● partnum - Hexadecimal |
DINDEX | 删除索引 | ● tblspace ID - Hexadecimal ● 键号 - Decimal |
DRPBSP | 删除 blobspace | ● blobspace 名 - ASCII |
DRPCHK | 删除 chunk | ● chunk 编号 - Decimal ● chunk 名 - ASCII |
DRPDBS | 删除 dbspace | ● dbspace 名称 - ASCII |
DRPLOG | 删除日志 | ● 日志编号 - Decimal ● 日志大小(页) - Decimal ● 页号 - Hexadecimal |
ENDTRANS | 由协调者和参与者数据库服务器写入以记录事务的结束。ENDTRANS 指示数据库服务器从其共享内存事务表中除去事务条目并关闭该事务。 在协调者逻辑日志中,导致已提交事务的每个 BEGPREP 是与 ENDTRANS 记录配对的。如果协调者的最后决定时回滚事务,那么不写入 ENDTRANS 记录。 在参与者逻辑日志中,每个 ENDTRANS 记录是与 HEURTX 记录配对的 | ● (无) - (无) |
ERASE | 删除 tblspace | ● tblspace ID -Hexadecimal |
FREE_RE | 将保留 extent 的 extent 分配给 sbspace chunk 的元数据或用户数据区域 | ● chunk 编号 - Integer ● 页号 - Integer ● 长度 - Integer ● 标志 - Hexadecimal |
HDELETE | 删除主行 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal |
HEURTX | 由参与者数据库服务器写入,以记录回滚事务的试探性决策。它应与指示事务已回滚的标准 ROLLBACK 记录相关联 | ● 标志 - Hexadecimal(值始终是 1 ) |
HINSERT | 主行插入 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal |
HUPAFT | 主行更新,后映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal |
HUPBEF | 主行更新,前映象 此外,HUPBEF 头的标志字段可能包含以下值: LM_PREVLSN 确认存在 LSN LM_FIRSTUPD 确认这是该事务对此 rowID 的首次更新 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal ● LSN(可选)- Decimal |
HUPDATE | 如果主行更新前映象和后映象都可以适合单个页,那么数据库服务器写入单个 HUPDATE 记录。 此外, HUPDATE 日志的标志字段可能包含以下值: LM_PREVLSN 确认存在 LSN LM_FIRSTUPD 确认这是该事务对此 rowID 的首次更新 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● 向前 ptr rowid - Hexadecimal ● 旧的 slotlen - Decimal ● 新的 slotlen - Decimal ● 块的数量 - Decimal ● LSN (optional) - Decimal |
IDXFLAGS | 索引标志 | ● tblspace ID - Hexadecimal ● 键号 - Hexadecimal |
INSERT | 插入后映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal |
ISOSPCOMMIT | 记录已隔离的保存点提交 | ● 结束事务时间 - Decimal ● 开始事务时间 - Decimal |
LCKLVL | 锁定方式(页或行) | ● tblspace ID - Hexadecimal ● 新的锁定方式 lockmode - Hexadecimal ● 旧的锁定方式 - Hexadecimal |
LG_ADDBPOOL | 在线添加缓冲池 | ● 页大小(以字节计) - Decimal ● 池中缓冲区数 - Decimal ● lru 队列数 - Decimal ● lru_max_dirty 百分比 - Decimal ● lru_min_dirty 百分比 - Decimal |
PTRUNCATE | 表示意图截断表。分区标记为丢弃或复用,具体取决于指定的命令选项 | ● tblspace ID - Hexadecimal |
TRUNCATE | TRUNCATE 已释放了 extents 且将落实该事务 | ● tblspace ID - Hexadecimal |
MVIDXND | 索引节点已移动以允许 2 位至 4 位的位图转换 | ● tblspace ID - Hexadecimal ● 旧页号 - Decimal ● 新页号 - Decimal ● 父页号 - Decimal ● 父 slot 号 - Decimal ● 父 slot 偏移量 - Decimal ● 键号 - Decimal |
PBDELETE | 删除 tblspace blobpage | ● bpageno - Hexadecimal ● 状态 USED/FREE 唯一 ID - Decimal |
PBINSERT | 添加 tblspace blobpage | ● bpageno - Hexadecimal ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal ● pbrowid - Hexadecimal |
PDINDEX | 预删除索引 | ● tblspace ID - Hexadecimal |
PGALTER | 原位更改了页 | ● tblspace ID - Hexadecimal ● 物理页号 - Hexadecimal |
PGMODE | 页模式已在位图中修改 | ● tblspace ID - Hexadecimal ● 逻辑页号 - Decimal ● 旧模式 - Hexadecimal ● 新模式 - Hexadecimal |
PERASE | 预擦除旧文件。标记要删除的表。数据库服务器释放提交的空间 | ● tblspace ID - Hexadecimal |
PNGPALIGN8 | 将该 tblspace 中的页用作类属页 | ● 无 |
PNLOCKID | 更改 tblspaces 索标识 | ● tblspace ID - Hexadecimal ● 旧锁 ID - Hexadecimal ● 新锁 ID - Hexadecimal |
PNSIZES | 设置 tblspace extent 大小 | ● tblspace ID - Hexadecimal ● fextsize - Decimal ● nextsize - Decimal |
PREPARE | 由参与者数据库服务器写入,以记录参与者提交事务的能力(如果这样指示过)。 | ● 协调者的数据库服务器名称 - ASCII |
PTADESC | 添加更改描述信息 | ● tblspace ID - Hexadecimal ● 上一页的物理页号 - Hexadecimal ● 逻辑页号 - Decimal ● 已添加列的数量 - Decimal |
PTALTER | 分片更改已开始 | ● tblspace ID - Hexadecimal ● 上一页的物理页号 - Hexadecimal ● 逻辑页号 - Decimal ● 更改 desc 页号 - Decimal ● 已添加的列数 - Decimal ● 更改的版本 - Decimal ● 已添加的行大小 - Decimal |
PTALTNEWKEYD | 在变更表命令之后更新tblspace 头中的键描述符 | ● 键描述符的字节数 - Decimal ● 键描述符中的数据 - ASCII |
PTALTOLDKEYD | 在变更表命令之后更新键描述符 | ● 键描述符的字节数 - Decimal ● 键描述符中的数据 - ASCII |
PTCOLUMN | 向分片添加特殊列 | ● tblspace ID - Hexadecimal ● 列的数量 - Decimal |
PTEXTEND | Tblspace 扩展 | ● tblspace ID - Hexadecimal ● 上一逻辑页 - Decimal ● 第一物理页 - Hexadecimal |
PTRENAME | 重命名表 | ● tblspace ID - Hexadecimal ● 旧表名 - ASCII ● 新表名 - ASCII |
RDELETE | 剩余页删除 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal ● hrowid (可选)- Decimal ● poffset (可选)- Decimal |
RENDBS | 重命名 dbspace | ● 新的 dbspace 名称 - ASCII |
REVERT | 记录 dbspace 到较早版本 dbspace 的复原 | ● 复原事件的类型 - Decimal ● arg1 - Decimal ● arg2 - Decimal ● arg3 - Decimal |
RINSERT | 剩余页插入 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal ● hrowid(可选)- Decimal ● poffset(可选)- Decimal |
ROLLBACK | 回滚工作 | ● 日期 - Decimal ● 时间 - Decimal |
ROLWORK | 结束事务并回滚工作 | ● 结束事务时间 - Decimal ● 开始事务时间 - Decimal |
RSVEXTEND | 记录对保留页的扩展 | ● 页数 - Decimal ● extent 的物理页号 - Hexadecimal |
RTREE | 记录对 R-tree 索引页的插入和删除。( R-tree 索引页上的其他操作是以物理方式记录的)记录子类型为: ● LEAFINS - 在叶页中插入项 ● LEAFDEL - 删除叶页中的项 | ● 记录子类型 - ASCII ● 索引页 rowid - Hexadecimal ● tuple 长度 - Decimal ● 基本表 rowid - Decimal ● 基本表 fragid - Decimal ● 删除标志 - Decimal |
RUPAFT | 剩余页更新,后映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal |
RUPBEF | 剩余页更新,前映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● slotlen - Decimal ● hrowid(可选)- Decimal ● poffset (可选)- Decimal |
RUPDATE | 如果剩余页更新前映象和数据库都可以适合单个页,那么数据库服务器写入一个 RUPDATE 记录 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal ● 向前 ptr rowid - Hexadecimal ● 旧 slotlen - Decimal ● 新 slotlen - Decimal ● 块的数量 - Decimal ● hrowid (可选) - Decimal ● poffset (可选) - Decimal |
SBLOB | 指示智能大对象的子系统日志记录 各种记录子类型为: ● CHALLOC ● CHCOMBINE ● CHFREE ● CHSPLIT ● CREATE ● DELETES ● EXTEND ● HDRUPD ● PDELETE ● PTRUNC ● REFCOUNT ● UDINSERT ● UDINSERT_LT ● UDUPAFT ● UDUPAFT_LT ● UDUPAFT ● UDUPAFT_LT ● UDWRITE ● UDWRITE_LT | |
SYNC | 如果该日志文件是空的,且管理员指示数据库服务器切换至下一个日志文件,那么写人逻辑日志文件 | ● (无) - (无) |
TABLOCKS | 由协调者或数据库服务器写入。它与 BEGPREP 或 PREPARE 记录相关联。并包含由事务持有的已锁定 tblspace 列表(按 tblspace 编号)。(在分布式事务中,事务显示为锁的所有者。) | ● 锁的数量 - Decimal ● tblspace 编号 - Hexadecimal |
UDINSERT | 附加新的用户数据 | ● 锁的数量 - Decimal ● tblspace 编号 - Hexadecimal |
UDUPAFT | 如果 UDWRITE 代价太高,那么更新用户数据后映象 | ● chunk - Decimal ● chunk 中的页 - Hexadecimal ● 页中的偏移量 - Hexadecimal ● 数据长度 - Hexadecimal |
UDUPBEF | 如果 UDWRITE 代价太高,那么更新用户数据前映象 | ● chunk - Decimal ● chunk 中的页 - Hexadecimal ● 页中的偏移量 - Hexadecimal ● 数据长度 - Hexadecimal |
UDWRITE | 更新用户数据(差分映象) | ● chunk - Decimal ● chunk 中的页 - Hexadecimal ● chunk 中的偏移量 - Hexadecimal ● 写入前长度 - Hexadecimal ● 写入后长度 - Hexadecimal |
UNDO | 将要回滚的一系列事务的头记录 | ● 计数 - Decimal |
UNDOBLDC | 如果应回滚 CREATE TABLE 语句但由于相关 chunk 已关闭而无法回滚,呢么写入该记录。当重放日志文件时,将删除该表 | ● tblspace 编号 - Hexadecimal |
UNIQID | 当向行指定新的序列值时记录 | ● tblspace ID - Hexadecimal ● 唯一 ID - Decimal |
UNIQ8ID | 当向行指定新的序列8 值时记录 | ● tblspace ID - Hexadecimal ● 唯一 ID - Decimal |
UPDAFT | 更新后映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal |
UPDBEF | 更新前映象 | ● tblspace ID - Hexadecimal ● rowid - Hexadecimal |
XAPREPARE | 参与者可以提交该 XA 事务 | ● (无) - (无) |
智能大对象的日志记录类型
所有智能大对象日志记录都是 SBLOB 类型。每个智能大对象日志记录包含 6 个头列(在逻辑日志记录头中描述)、记录子类型和其他信息。信息的显示会根据记录子类型而变化。
下表列出了智能大对象的所有记录类型。子类型列描述了智能大对象的记录类型。操作列标识生成日志条目的数据库服务器操作类型。附加列和格式列描述了每个记录类型出现什么信息。
记录子类型 | 操作 | 附加列 | 格式 |
---|---|---|---|
CHALLOC | 分配 chunk extent | extent [chk, page, len] | Decimal |
标识 | Hexadecimal | ||
CHCOMBINE | 组合用户数据 Extent 列表中的两页 | chunk 编号 | Decimal |
第一页 | Decimal | ||
第二页 | Decimal | ||
CHFREE | 释放 chunk extent | extent [chk, page, len] | Decimal |
CHSPLIT | 分割用户数据 Extent 列表中的两页 | chunk 编号 | Decimal |
要分割的 UDFET 页 | Decimal | ||
CREATE | 创建智能大对象 | 智能大对象 ID [sbs, chk, page, oid] | Decimal |
lomaphdr 中 extent 的数量 | Decimal | ||
DELETE | 删除提交的智能大对象 | 智能大对象 ID [sbs, chk, page, oid] | Decimal |
EXTEND | 向智能大对象的 extent 列表添加 extent | 智能大对象 ID [sbs, chk, page, oid] | Decimal |
extent [chk, page, len] | Decimal | ||
lomap 溢出页号 | Decimal | ||
HDRUPD | 更新智能大对象的头页 | 智能大对象 ID [sbs, chk, page, oid] | Decimal |
旧 EOF 偏移量 | String | ||
新 EOF 偏移量 | String | ||
旧的时间 | Decimal | ||
新的时间 | Decimal | ||
PDELETE | 对提交的待删除智能大对象进行排队 | e智能大对象 ID [sbs, chk, page, oid] | Decimal |
PTRUNC | 对提交的待截断智能大对象进行排队 | 智能大对象 ID [sbs, chk, page, oid] | Decimal |
旧的偏移量 | String | ||
新的偏移量 | String | ||
REFCOUNT | 增加或减少智能大对象的引用计数 | 智能大对象 ID [sbs, chk, page, oid] | Decimal |
如果增加,那么为 1 ;如果减少,那么为 0 | Decimal | ||
UDINSERT,UDINSERT_LT | 附加新的用户数据 | chunk | Decimal |
chunk 中的页 | Decimal | ||
页中的偏移量 | Decimal | ||
数据长度 | Decimal | ||
UDUPAFT,UDUPAFT_LT | 如果 UDWRITE 代价太高,那么更新用户数据后映象 | chunk | Decimal |
chunk 中的页 | Decimal | ||
页中的偏移量 | Decimal | ||
数据长度 | Decimal | ||
UDUPBEF,UDUPBEF_LT | 如果 UDWRITE 代价太高,那么更新用户数据前映象 | chunk | Decimal |
chunk 中的页 | Decimal | ||
页中的偏移量 | Decimal | ||
数据长度 | Decimal | ||
UDWRITE,UDWRITE_LT | 更新用户数据(差分映象) | chunk | Decimal |
chunk 中的页 | Decimal | ||
页中的偏移量 | Decimal | ||
写入前的长度 | Decimal | ||
写入后的长度 | Decimal | ||
不同映象块的数量 | Decimal |
下图显示了 onlog 输出中的智能大对象记录的示例。前两条记录显示 extent 已释放。下一组记录(其上下两侧分别是 BEGIN 和 COMMIT)显示存储器的分配和智能大对象的创建。
图: onlog 输出中的智能大对象记录