惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
P
Proofpoint News Feed
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
美团技术团队
D
Docker
博客园 - Franky
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 惜分飞

不太常见的10.2.0.1的oracle redo损坏恢复--惜分飞 obet快速修复oracle 位图损坏块 obet forcecopy功能抢救硬件故障中的数据文件 通过obet 恢复system坏块,打开数据库---惜分飞 分享一例运行在aix上的sap系统数据库恢复过程--惜分飞 Oracle Block Editor Tool 几乎动用了所有手段的Oracle故障恢复--惜分飞 Oracle Block Edit Tool (obet) 功能增强–2026.07 使用deepseek进行Oracle恢复,引起重大故障---惜分飞 硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复 1.5T MySQL数据库完美恢复---惜分飞 asm dd 10M导致system文件部分坏块修复---惜分飞 一次断电引起的Oracle故障恢复-ora-600 2662故障---惜分飞 Oracle故障第一现场被恢复混乱的数据库恢复--惜分飞 OraScan (Oracle碎片扫描工具)使用说明 imp导入dmp报IMP-00098: INTERNAL ERROR: impgst2故障处理 记录一次win删除数据文件完美恢复案例 国产信创库fio破坏主备库以及备份故障处理--惜分飞 .wman扩展名勒索mysql数据库恢复 Oracle数据库被勒索加密一键open工具–OraFHR rose双机引起文件系统损坏导致数据库异常故障处理---惜分飞 ORA-704 ORA-604 ORA-1578故障处理 csc(0x0006.d75a14f4) higher than block scn(0x0000.00000000)--故障处理--obet ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理---惜分飞 aix环境10g由于控制器异常导致ORA-600 4000故障处理---惜分飞 不当恢复truncate数据导致数据库不能open处理 在生产环境错误执行dd命令破坏asm磁盘故障恢复---惜分飞 Patch_SCN快速解决ORA-600 2663故障 obet实现对数据文件坏块检测功能(obet dbv) obet快速修改scn/resetlogs恢复数据库(缺少归档,ORA-00308)
obet dbv功能完整说明
惜分飞 · 2026-08-17 · via 博客园 - 惜分飞

大量的恢复经验和实战总结,逐步了完善obet(Oracle Block Edit Tool)功能和实现恢复的便利性.对于数据库恢复其中一个重要功能就是检测数据块的损坏情况(这个直接关系到恢复的实际效果),Oracle本身提供的dbv功能有一些不足,obet工具的dbv功能是对oracle本身的dbv功能的深度完善,弥补其本身的几个功能不足点:
1. Oracle dbv 需要安装oracle 软件,对于有些时候为了一个dbv检测需要安装Oracle 软件,成本和动作太大,obet工具直接单个文件即可运行
2. 如果数据文件头损坏,或者文件大小不对,或者block 0损坏,Oracle自带dbv均无法检测
3. Oracle dbv无法实现跨字节序检测(比如需要在win平台上检测aix系统的数据文件的坏块情况[比如硬件恢复场景需要])
4. Oracle dbv有些版本无法实现低版本dbv检测高版本数据库文件
5. Oracle dbv无法一条命令实现多个数据文件检测(需要人工写脚本来实现)

在使用obet的dbv功能之前需要准备listfile文件(内容格式:No Name)
listfile文件操作
1. 在可以mount的库中可以直接通过查询v$datafile(select file#,name from v$datafile),把结果保存到listfile.txt中
2. 通过obet的listfile功能直接获取

OBET> listfile

Usage: listfile <path|remove|edit>

  listfile <path>   - Scan directory and write to listfile.txt

  listfile remove   - Delete listfile.txt

  listfile edit [path] - Edit listfile.txt (notepad on Win, vi on Linux)

listfile 支持*通配符

OBET> listfile e:\oradata\orcl\sys*.dbf

Listed 2 files from 'e:\oradata\orcl' to listfile.txt (starting from

OBET> open listfile.txt

Loaded 2 files from  datafile list 'listfile.txt'.

OBET> info

Loaded files (2 total):

----------------------------------------

Number  Path

----------------------------------------

     1  e:\oradata\orcl\SYSAUX01.DBF

     2  e:\oradata\orcl\SYSTEM01.DBF

----------------------------------------

listfile remove 直接删除掉当前目录下面的listfile.txt文件
listfile edit 直接调用notepad/vi 编辑模式打开当前目录下的listfile.txt文件(也可以指定具体文件名称)
3. 使用open命令加载listfile

OBET> open listfile.txt

Loaded 2 files from  datafile list 'listfile.txt'.

OBET> info

Loaded files (2 total):

----------------------------------------

Number  Path

----------------------------------------

     1  e:\oradata\orcl\SYSAUX01.DBF

     2  e:\oradata\orcl\SYSTEM01.DBF

----------------------------------------

dbv之前确认参数设置
在执行dbv之前需要先确认当前一些配置,和dbv相关的主要是blocksize(默认值为8192),endian(默认值为little),可以通过show命令查看(如果是检测linux/win环境下默认的oracle数据文件,理论上不用这修改这些值)

OBET> show

Current settings:

File: (not set)

Blocksize: 8192 bytes

Block: 1

Offset in block: 0 (file offset: 0x00002000)

Count: 32 bytes

Mode: browse

Endian: little (x86)

Loaded files: 2 (use 'info' to list)

可以根据情况通过set命令修改相关值,具体语法为:set

OBET> set

Usage: set <param> <value>

  set filename <path>    - Set target file path (required)

  set file <num>         - Set filename using loaded file number (from open list)

  set blocksize <size>  - Set block size (2048,4096,[8192],16384,32768)

  set block <num>        - Set block number (starts from 0, default: 1)

  set offset <offset>   - Set offset within block (< blocksize, default: 0)

  set count <bytes>      - Set number of bytes to read (default: 32)

  set mode edit/browse   - Enable edit/browse mode

  set endian big/little  - Set byte order (default: little, big for AIX files)

dbv 检测数据文件
具体语法为:dbv [file N [block M [blocks X]]]
dbv 检测open listfile中的所有数据文件的所有block
dbv file N 检测listfile中编号为N的数据文件的所有block
dbv file N block M 检测listfile中编号为N的数据文件的block M开始到文件结束
dbv file N block M block X 检测listfile中编号为N的数据文件的block M开始,检测X个block

OBET> dbv

===============================================

DBV (Data Block Verification)

Block Size: 8192 bytes

Endian:     little-endian (x86)

Target File: ALL files in listfile

===============================================

Verifying file

File

  Progress: 100000 / 139521 blocks checked...

  File

Verifying file

File

  Progress: 100000 / 126721 blocks checked...

  File

DBV completed at: 2026-08-16 17:37:26

===============================================

DBV Summary:

Total blocks checked: 266242

Total all zero blocks found: 0

Total all rdba error blocks found: 0

Total all tailchk error blocks found: 0

Total all soft corrupted blocks found: 0

Total all checksum error blocks found: 0

Total bad blocks found: 0

Execution time: 1.00 seconds

Throughput: 2080.02 MB/s

===============================================

Detailed report saved to: dbv_20260816173725.log

Files processed: 2

OBET> dbv file 1

===============================================

DBV (Data Block Verification)

Block Size: 8192 bytes

Endian:     little-endian (x86)

Target File:

===============================================

Verifying file

File

  Progress: 100000 / 139521 blocks checked...

  File

DBV completed at: 2026-08-16 17:37:32

===============================================

DBV Summary:

Total blocks checked: 139521

Total all zero blocks found: 0

Total all rdba error blocks found: 0

Total all tailchk error blocks found: 0

Total all soft corrupted blocks found: 0

Total all checksum error blocks found: 0

Total bad blocks found: 0

Execution time: 1.00 seconds

Throughput: 1090.01 MB/s

===============================================

Detailed report saved to: dbv_file_1_20260816173731.log

Files processed: 1

OBET> dbv file 1 block 128

===============================================

DBV (Data Block Verification)

Block Size: 8192 bytes

Endian:     little-endian (x86)

Target File:

===============================================

Verifying file

File

  Progress: 100128 / 139521 blocks checked...

  File

DBV completed at: 2026-08-16 17:37:43

===============================================

DBV Summary:

Total blocks checked: 139393

Total all zero blocks found: 0

Total all rdba error blocks found: 0

Total all tailchk error blocks found: 0

Total all soft corrupted blocks found: 0

Total all checksum error blocks found: 0

Total bad blocks found: 0

Execution time: 1.00 seconds

Throughput: 1090.01 MB/s

===============================================

Detailed report saved to: dbv_file_1_block_128_20260816173742.log

Files processed: 1

OBET> dbv file 1 block 128 blocks 10

===============================================

DBV (Data Block Verification)

Block Size: 8192 bytes

Endian:     little-endian (x86)

Target File:

===============================================

Verifying file

File

  File

DBV completed at: 2026-08-16 17:37:47

===============================================

DBV Summary:

Total blocks checked: 10

Total all zero blocks found: 0

Total all rdba error blocks found: 0

Total all tailchk error blocks found: 0

Total all soft corrupted blocks found: 0

Total all checksum error blocks found: 0

Total bad blocks found: 0

Execution time: 0.00 seconds

Throughput: 0.00 MB/s

===============================================

Detailed report saved to: dbv_file_1_block_128_20260816173747.log

Files processed: 1

检测的具体明细可以看obet所在的当前目录中的dbv*.log文件,里面有坏块类型:
rdba error:表示block#和该块所在位置不匹配
tailchk/checksum error:表示该block不满足Oracle的校验规则
soft corrupted:表示该block在Oracle数据库标记为坏块
zero block:表示该block中全部为0,一般是由于底层损坏,或者硬件恢复过程使用空块替代引起
filesize_status:NO表示文件实际大小和文件头记录大小不匹配
下载obet obet使用说明