【YashanDB知识库】如何dump数据文件,转换rowid, 查询对应内容
本文来自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,结果如下:
点击查看代码
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
分析数据发现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知识库】如何dump数据文件,转换rowid, 查询对应内容的更多相关文章
- DG_数据文件转换参数测试
本篇博客流程图: 一.测试需求及参数说明 二.测试环境进行相关测试 三.问题总结 一.测试需求及参数说明 1.1测试需求说明 DG切换 切换前,数据库版本12.2.0.1,主库rac两节点,备一rac ...
- Spark2 加载保存文件,数据文件转换成数据框dataframe
hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafiledrwx ...
- RMAN备份与恢复之数据文件
备份数据文件,模拟磁盘损坏时,还原恢复数据文件. 首先,查询数据文件序号,备份数据文件,可根据数据文件序号指定备份的数据文件. SQL SQL> select file_name,file_id ...
- 【基础】Oracle 表空间和数据文件
多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...
- redis通过dump.db文件 进行数据替换 复制
进行数据替换无非就是三步, 杀掉redis进程 ------------> 复制 dump.db文件 ------------------>启动redis pkill redis-se ...
- 【数据预处理】TIMIT语料库WAV文件转换
1 问题描述 这两天复现代码.先构造数据集,纯净语音.不同噪声.不同SNR的混合语音.其中纯净语音由两部分组成,IEEE corpus和TIMIT. 一开始我用MATLAB中的audioread读取音 ...
- asm和file system之间数据文件的转换
How to move a datafile from a file system to ASMMoving a datafile from the file system can be achive ...
- bbed的使用--查看数据文件信息 & sid信息
1.得到文件的块大小和数据块个数 在Linux和Unix上,oracle提供了一个小工具dbfsize用于查看文件块大小 (可以参看[ID:360032.1]How to detect and fix ...
- [20181031]12c 在线移动数据文件.txt
[20181031]12c 在线移动数据文件.txt --//12c以前,移动或者改名数据文件是一项比较麻烦的事情,至少要停一下业务.而12c支持在线移动或者改名数据文件,并且有点不可思议--//的是 ...
- jstack Dump 日志文件中的线程状态
[转]jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condi ...
随机推荐
- 1、Git简介
1.1.概述 Git 是一个开源免费的分布式版本控制系统,用于快速高效地管理各种小型或大型项目的代码. Git 不仅容易学习.占用空间小,而且性能快如闪电. Git 具有廉价的本地分支.方便的暂存区域 ...
- 【MySQL】 批量更改库,表,字段的字符集
库一级的更改: -- 单个库字符集更改 ALTER DATABASE `ymcd_aisw` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; ALTER ...
- 【SpringMVC】03 使用注解
第一步还是配置web.xml,使用分发器统一处理请求和加载容器文件 <?xml version="1.0" encoding="UTF-8"?> & ...
- 树莓派3b+使用官方屏幕后倒置问题——屏幕倒置
树莓派3b+的屏幕本身就是倒置的,因此为了使树莓派在官方屏幕下能显示正常的屏幕画面因此需要通过设置把树莓派的官方屏幕的输出倒置一下,这样树莓派的官方屏幕的输出就是正常的了. 解决方法:(源自:http ...
- 国产操作系统 “银河麒麟操作系统V10” 试用失败历程
面对外国的科技封锁,具有自主产权的国产软件已经变得迫在眉睫了,几天前在新闻上看到国产的操作"银河麒麟操作系统V10"已经发布,于是抱着尝鲜的心态想着去试着用用.虽然都是基于linu ...
- 使用tensorbaoardx报错——Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
运行代码报错: from tensorboardX import SummaryWriter 报错内容: 发生异常: TypeError Descriptors cannot not be creat ...
- TF-IDF 算法原理以及源码实现
TF-IDF(Term Frequency-Inverse Document Frequency),是用来衡量一个词在文档中的重要性,下面看一下TDF-IDF的公式: 首先是TF,也就是词频,用来衡量 ...
- bfs优化
层次单调性 走地图 双重bfs 1.模块性 2.方案:外层bfs逆推,内层bfs重新跑 A.每次代价0/1:双端队列bfs B.每次代价任意数值:优先队列bfs(dijikstra).迭代(SPFA) ...
- Gradio.NET 支持 .NET 8 简化 Web 应用开发
前言 Gradio.NET 是 Gradio 在 .NET 平台上的移植版本.Gradio 是一个开源的 Python 包,用于快速构建机器学习模型.API 或任意 Python 函数的演示或 Web ...
- 我的 mac 生产力工具
应用名称 说明 安装命令 Homebrew mac 上的强大包管理器 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com ...