联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
大量的恢复经验和实战总结,逐步了完善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 #1).
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 #1: e:\oradata\orcl\SYSAUX01.DBF (139521 blocks) - Started: 2026-08-16 17:37:25 File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK Progress: 100000 / 139521 blocks checked... File #1 completed: no bad blocks found Verifying file #2: e:\oradata\orcl\SYSTEM01.DBF (126721 blocks) - Started: 2026-08-16 17:37:26 File #2: rfile=1 (0x00000001) header_block_num=126720 (0x0001EF00) filesize_status:OK Progress: 100000 / 126721 blocks checked... File #2 completed: no bad blocks found 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: #1 (only) =============================================== Verifying file #1: e:\oradata\orcl\SYSAUX01.DBF (139521 blocks) - Started: 2026-08-16 17:37:31 File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK Progress: 100000 / 139521 blocks checked... File #1 completed: no bad blocks found 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: #1, block 128 to end =============================================== Verifying file #1: e:\oradata\orcl\SYSAUX01.DBF (block 128 to 139520, 139393 blocks) - Started: 2026-08-16 17:37:42 File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK Progress: 100128 / 139521 blocks checked... File #1 completed: no bad blocks found 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: #1, block 128 - 137 (10 blocks) =============================================== Verifying file #1: e:\oradata\orcl\SYSAUX01.DBF (block 128 to 137, 10 blocks) - Started: 2026-08-16 17:37:47 File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK File #1 completed: no bad blocks found 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使用说明
