写点什么

【YashanDB 知识库】如何 dump 数据文件,转换 rowid, 查询对应内容

作者:YashanDB
  • 2024-09-27
    广东
  • 本文字数:3473 字

    阅读完需:约 11 分钟

本文来自 YashanDB 官网,具体内容可见https://www.yashandb.com/newsinfo/7459464.html?templateId=1718516

问题现象

客户环境有时候会遇到文件损坏的情况,需要 dump 文件,根据 rowid 查询数据情况。

问题的风险及影响

熟练掌握崖山数据文件 dump 操作,并识别 rowid,在故障的情况下可以快速确认相应的数据情况,查找需要的数据。

问题影响的版本

YashanDB 版本所有版本

问题分析和处理过程

1、在故障情况下,直接查询表数据,会遇到 YAS-02147 的错误。



2、崖山提供 dump 命令,可以 dump 出 db 数据文件,但不包含数据内容。


详细说明见 dump | YashanDB Doc (yasdb.com)




3、确认文件 id 和 blockid


在上述命令中,dump 的时候需要文件 id 和 blockid。


文件 id 对应 V$datafile 表空间所在的文件 id,如下面 users 表空间文件 id 是 4。


表 block 对应 dba_segments 中 block 起始位置及数量,如下面 CUSTOMER 从 block 131 开始,有 8 个 block。



根据上面分析,执行 dump 命令 ALTER SYSTEM DUMP DATAFILE 4 MINBLOCK 131 MAXBLOCK 140,结果如下:<details><summary>点击查看代码</summary>


SQL> ALTER SYSTEM DUMP DATAFILE 4 MINBLOCK 131 MAXBLOCK 140;
Succeed.
SQL> exit
[cod@6c5c2b1ac6f0 trace]$ ls -l
total 8
-rw-rw-r-- 1 cod cod 5541 Jul 30 10:18 yashan_yas_21.trc
[cod@6c5c2b1ac6f0 trace]$ cat yashan_yas_21.trc
*** 2024-07-30 10:17:52.212
Start dump data blocks TS#: 4 FILE#: 4 minblk 132 maxblk 132
Block dump from disk:
warning: disk dump block information is incompleted, file#: 4 blk#: 132 ts#: 4

*** 2024-07-30 10:18:53.922
Start dump data blocks TS#: 4 FILE#: 4 minblk 131 maxblk 140
Block dump from cache:
BUFFER CTRL DUMP
FILE#: 4 BLK#: 131 TS#: 4
bucketId: 29579 crNext: 4294967295 hashNext:4294967295
lruListId: 2 lru: [7546, 7537]
resStatus: 0 refCount: 1 pcFlag: 0
scn: 0 ext: 0 node: 0 xsn: 0 ssn: 0
lastLfn: 0 dtyList: [NULL, NULL]
truncPoint: [0, 0, 0, 0]
BUFFER CTRL DUMP END
DISK BLOCK DUMP
segment
head: id 0-131, type 33, instance id 0 lsn 5031, checksum: 0, change num 4, isEncrypted 0, isCompressed 0
segType: heap
dataOid: 2486
ssm tree: search entry: 0-129, level: 1
level[0]: ssm block count: 1, current block: 0-128
level[1]: ssm block count: 1, current block: 0-129
level[2]: ssm block count: 1, current block: 0-130
hwm L1: 0-128
hwm L1 node: 7
extents lhwm: block id: 0-136, extent idx: 0, map block: 0-131, offset: 0, blkIdx: 8, used block count: 8. lhwmL1: 0-128
extent ctrl: extent count: 1, block count: 8, map count: 0 , extent map offset: 380
last map block: 63-67108863, offset: 0, extents change number: 0
extents hwm: block id: 0-136, extent idx: 0, offset: 0, unformatted block count: 0, used block count: 8, map block: 63-67108863
extents map: extent count: 1, capacity: 487, next map: 63-67108863, map nodes:
id: 0-128 size: 8

0. L1 block id: 0-128 data block id: 0-132
tail: change num: 4
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from disk:
warning: disk dump block information is incompleted, file#: 4 blk#: 132 ts#: 4

*** 2024-07-30 10:18:53.922
Block dump from cache:
BUFFER CTRL DUMP
FILE#: 4 BLK#: 133 TS#: 4
bucketId: 29581 crNext: 4294967295 hashNext:4294967295
lruListId: 2 lru: [7548, 7546]
resStatus: 0 refCount: 1 pcFlag: 0
scn: 0 ext: 0 node: 0 xsn: 0 ssn: 0
lastLfn: 0 dtyList: [NULL, NULL]
truncPoint: [0, 0, 0, 0]
BUFFER CTRL DUMP END
DISK BLOCK DUMP
heap data
head: id 0-133, type 4, instance id 0 lsn 5029, checksum: 0, change num 1, isEncrypted 0, isCompressed 0
dataOid: 2486, extent change number: 0
block scn: 0, map block: 0-128, slot: 5, freeness: 5
rows: 0, dirs: 0, xslots: 0, si xslots: 0, free size: 8108, free begin: 80, free end: 8188 free dir: 4095

tail: change num: 1
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from cache:
BUFFER CTRL DUMP
FILE#: 4 BLK#: 134 TS#: 4
bucketId: 29582 crNext: 4294967295 hashNext:4294967295
lruListId: 2 lru: [4294967295, 7547]
resStatus: 0 refCount: 1 pcFlag: 0
scn: 0 ext: 0 node: 0 xsn: 0 ssn: 0
lastLfn: 0 dtyList: [NULL, NULL]
truncPoint: [0, 0, 0, 0]
BUFFER CTRL DUMP END
DISK BLOCK DUMP
heap data
head: id 0-134, type 4, instance id 0 lsn 5029, checksum: 0, change num 1, isEncrypted 0, isCompressed 0
dataOid: 2486, extent change number: 0
block scn: 0, map block: 0-128, slot: 6, freeness: 5
rows: 0, dirs: 0, xslots: 0, si xslots: 0, free size: 8108, free begin: 80, free end: 8188 free dir: 4095

tail: change num: 1
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from cache:
BUFFER CTRL DUMP
FILE#: 4 BLK#: 135 TS#: 4
bucketId: 29583 crNext: 4294967295 hashNext:4294967295
lruListId: 1 lru: [4294967295, 7543]
resStatus: 0 refCount: 1 pcFlag: 0
scn: 0 ext: 0 node: 0 xsn: 0 ssn: 0
lastLfn: 0 dtyList: [NULL, NULL]
truncPoint: [0, 0, 0, 0]
BUFFER CTRL DUMP END
DISK BLOCK DUMP
heap data
head: id 0-135, type 4, instance id 0 lsn 5030, checksum: 0, change num 4, isEncrypted 0, isCompressed 0
dataOid: 2486, extent change number: 0
block scn: 581620909456666624, map block: 0-128, slot: 7, freeness: 1
rows: 1, dirs: 1, xslots: 2, si xslots: 0, free size: 2022, free begin: 6116, free end: 8138 free dir: 4095
row[0]: size: 6036 xslot id: 0 columns: 3 format/link/migr/deleted/compact:1/0/0/0/0

xslot[0]: xid: 25-11349-1 active: 0 owscn: 0 fastcommit: 1 ura: block: 0-15758, ver: 0, dir: 1 ssn: 3055202304 fsc: 21794 mfb: 2066 scn: 581620909456666624
xslot[1]: xid: 0-0-0 active: 0 owscn: 0 fastcommit: 0 ura: block: 0-0, ver: 0, dir: 0 ssn: 0 fsc: 0 mfb: 0 scn: 0
tail: change num: 4
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from disk:
DISK BLOCK DUMP
unknown
head: id 0-136, type 0, instance id 0 lsn 9, checksum: 999298229, change num 0, isEncrypted 0, isCompressed 0
unknown type 0
tail: change num: 0
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from disk:
DISK BLOCK DUMP
unknown
head: id 0-137, type 0, instance id 0 lsn 9, checksum: 3105528825, change num 0, isEncrypted 0, isCompressed 0
unknown type 0
tail: change num: 0
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from disk:
DISK BLOCK DUMP
unknown
head: id 0-138, type 0, instance id 0 lsn 9, checksum: 996768988, change num 0, isEncrypted 0, isCompressed 0
unknown type 0
tail: change num: 0
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from disk:
DISK BLOCK DUMP
unknown
head: id 0-139, type 0, instance id 0 lsn 9, checksum: 3118723984, change num 0, isEncrypted 0, isCompressed 0
unknown type 0
tail: change num: 0
DISK BLOCK DUMP END

*** 2024-07-30 10:18:53.922
Block dump from disk:
DISK BLOCK DUMP
unknown
head: id 0-140, type 0, instance id 0 lsn 9, checksum: 979551335, change num 0, isEncrypted 0, isCompressed 0
unknown type 0
tail: change num: 0
DISK BLOCK DUMP END
复制代码


</details>分析数据发现 135 的块中存在数据:



4、转换 ROWID,查询数据内容


查看 ROWID 说明:ROWID UROWID | YashanDB Doc (yasdb.com)



对应:


dataoid 为 2486


spaceid 为 4


fileid 为 0(同个表空间可能有多个数据文件)


blockid 为 135


dir 为 0


最终拼接的 rowid 为 2486:4:0:135:0,根据 rowid 查询结果如下:



用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】如何dump数据文件,转换rowid, 查询对应内容_yashandb_YashanDB_InfoQ写作社区