大量的恢复经验和实战总结,逐步了完善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> listfileUsage: 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*.dbfListed 2 files from 'e:\oradata\orcl' to listfile.txt (starting from #1).OBET> open listfile.txtLoaded 2 files from datafile list 'listfile.txt'.OBET> infoLoaded 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.txtLoaded 2 files from datafile list 'listfile.txt'.OBET> infoLoaded 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> showCurrent settings:File: (not set)Blocksize: 8192 bytesBlock: 1Offset in block: 0 (file offset: 0x00002000)Count: 32 bytesMode: browseEndian: little (x86)Loaded files: 2 (use 'info' to list) |
可以根据情况通过set命令修改相关值,具体语法为:set
OBET> setUsage: 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 bytesEndian: 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:25File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK Progress: 100000 / 139521 blocks checked... File #1 completed: no bad blocks foundVerifying file #2: e:\oradata\orcl\SYSTEM01.DBF (126721 blocks) - Started: 2026-08-16 17:37:26File #2: rfile=1 (0x00000001) header_block_num=126720 (0x0001EF00) filesize_status:OK Progress: 100000 / 126721 blocks checked... File #2 completed: no bad blocks foundDBV completed at: 2026-08-16 17:37:26===============================================DBV Summary:Total blocks checked: 266242Total all zero blocks found: 0Total all rdba error blocks found: 0Total all tailchk error blocks found: 0Total all soft corrupted blocks found: 0Total all checksum error blocks found: 0Total bad blocks found: 0Execution time: 1.00 secondsThroughput: 2080.02 MB/s===============================================Detailed report saved to: dbv_20260816173725.logFiles processed: 2OBET> dbv file 1===============================================DBV (Data Block Verification)Block Size: 8192 bytesEndian: little-endian (x86)Target File: #1 (only)===============================================Verifying file #1: e:\oradata\orcl\SYSAUX01.DBF (139521 blocks) - Started: 2026-08-16 17:37:31File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK Progress: 100000 / 139521 blocks checked... File #1 completed: no bad blocks foundDBV completed at: 2026-08-16 17:37:32===============================================DBV Summary:Total blocks checked: 139521Total all zero blocks found: 0Total all rdba error blocks found: 0Total all tailchk error blocks found: 0Total all soft corrupted blocks found: 0Total all checksum error blocks found: 0Total bad blocks found: 0Execution time: 1.00 secondsThroughput: 1090.01 MB/s===============================================Detailed report saved to: dbv_file_1_20260816173731.logFiles processed: 1OBET> dbv file 1 block 128===============================================DBV (Data Block Verification)Block Size: 8192 bytesEndian: 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:42File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK Progress: 100128 / 139521 blocks checked... File #1 completed: no bad blocks foundDBV completed at: 2026-08-16 17:37:43===============================================DBV Summary:Total blocks checked: 139393Total all zero blocks found: 0Total all rdba error blocks found: 0Total all tailchk error blocks found: 0Total all soft corrupted blocks found: 0Total all checksum error blocks found: 0Total bad blocks found: 0Execution time: 1.00 secondsThroughput: 1090.01 MB/s===============================================Detailed report saved to: dbv_file_1_block_128_20260816173742.logFiles processed: 1OBET> dbv file 1 block 128 blocks 10===============================================DBV (Data Block Verification)Block Size: 8192 bytesEndian: 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:47File #1: rfile=2 (0x00000002) header_block_num=139520 (0x00022100) filesize_status:OK File #1 completed: no bad blocks foundDBV completed at: 2026-08-16 17:37:47===============================================DBV Summary:Total blocks checked: 10Total all zero blocks found: 0Total all rdba error blocks found: 0Total all tailchk error blocks found: 0Total all soft corrupted blocks found: 0Total all checksum error blocks found: 0Total bad blocks found: 0Execution time: 0.00 secondsThroughput: 0.00 MB/s===============================================Detailed report saved to: dbv_file_1_block_128_20260816173747.logFiles 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使用说明
浙公网安备 33010602011771号