标签云
asm恢复 bbed bootstrap$ dul kcbzib_kcrsds_1 kccpb_sanity_check_2 kcratr_nab_less_than_odr kgegpa MySQL恢复 ORA-00312 ORA-00704 ORA-00742 ORA-01110 ORA-01200 ORA-01555 ORA-01578 ORA-01595 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-600 kdsgrp1 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (110)
- 数据库 (1,821)
- DB2 (22)
- MySQL (80)
- Oracle (1,651)
- Data Guard (53)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (168)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (620)
- Oracle安装升级 (102)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (36)
- pdu工具 (7)
- PostgreSQL恢复 (13)
- SQL Server (34)
- SQL Server恢复 (14)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (45)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (28)
-
最近发表
- Patch_SCN快速解决ORA-600 2663故障
- 在生产环境错误执行dd命令破坏asm磁盘故障恢复
- obet实现对数据文件坏块检测功能
- oracle linux 8.10注意pmlogger导致空间被大量占用
- obet快速修改scn/resetlogs恢复数据库(缺少归档,ORA-00308)
- 使用DBMS_PDB.RECOVER抢救单个pdb
- aix环境写入大文件设置combehin提高效率
- 记录一次国产数据库被rm -rf /*删除的救援过程
- 数据库启动报 maximum number of processes () exceeded分析
- ORA-600 [ksunfy : too few sessions]
- 由于数据块scn大于数据库scn导致ORA-600 kcbzib_kcrsds_1错误
- ORA-600 ktbair2: illegal inheritance恢复
- 一键恢复ORA-00704 ORA-00702故障—202512
- PostgreSQL查询一个表相关的所有oid
- PostgreSQL oid文件替换实现数据访问
- 模拟sql server故障备份完成恢复实现数据0丢失
- sql server 事务日志备份异常恢复案例
- win平台挂起Oracle数据库启动进程
- linux异常磁盘lvm恢复操作演示
- open数据库报ora-600 kdsgrp1故障处理
分类目录归档:小工具
obet实现对数据文件坏块检测功能
通过一段时间的测试和使用,obet修复了不少bug,关于obet的以往功能和特性的文章:
Oracle数据块编辑工具( Oracle Block Editor Tool)-obet
obet(Oracle Block Editor Tool)第二版发布
并且也在客户的生产环境上进行了实战:obet快速修改scn/resetlogs恢复数据库(缺少归档,ORA-00308).利用周末的时间又对obet的工具进行了功能增强,增加了dbv(数据块校验)功能.
Oracle dbv的不足
1. oracle dbv需要在安装oracle服务端的环境下才能执行
2. oracle dbv对于文件大小不正确(文件头记录block数和实际文件大小不匹配),文件头损坏等情况都可能导致dbv无法执行,类似下面的报错
C:\Users\XFF>dbv file=H:\BaiduNetdisk\kingdee\system01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期日 1月 11 17:30:29 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBV-00107: 未知标头格式 (0) (2054913149) C:\Users\XFF>
C:\Users\XFF>dbv file=H:\BaiduNetdisk\kingdee\users01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期日 1月 11 20:10:05 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBV-00102: FILE (H:\BAIDUNETDISK\KINGDEE\USERS01.DBF) 在 end read 操作 (-1) 期间出现文件 I/O 错误 C:\Users\XFF>
3. oracle dbv一条命令执行检测一个数据文件,如果数据文件多,检查起来很繁琐
4. oracle dbv么有检查进度,对于io性能较慢,数据文件较大的情况,无法跟踪检查进度.
obet的dbv功能使用
1. 配置listfile.txt文件,格式为file# name
1 H:\BaiduNetdisk\kingdee\system01.dbf 5 H:\BaiduNetdisk\kingdee\EAS_D_EAS_STANDARD.ORA
2. 启动obet,执行open listfile.txt(如果不在obet目录提供完整路径)
OBET> open listfile.txt
Loaded 2 files from config file 'listfile.txt'.
OBET> info
Loaded files (2 total):
----------------------------------------
Number Path
----------------------------------------
1 H:\BaiduNetdisk\kingdee\system01.dbf
5 H:\BaiduNetdisk\kingdee\EAS_D_EAS_STANDARD.ORA
----------------------------------------
3. 执行dbv命令(logfile
OBET> dbv =============================================== DBV (Data Block Verification) Block Size: 8192 bytes =============================================== Verifying file #1: H:\BaiduNetdisk\kingdee\system01.dbf (131841 blocks) - Started: 2026-01-11 18:03:58 file 1, block 0: checksum error (expected 0xC4DA, got 0xC478), bad block file 1, block 1: checksum error (expected 0xF835, got 0xB835), bad block Progress: 10000 / 131841 blocks checked... Progress: 20000 / 131841 blocks checked... ………………. Progress: 120000 / 131841 blocks checked... Progress: 130000 / 131841 blocks checked... File #1 completed: 0 all zero, 0 soft corrupted, 0 tailchk error, 2 checksum error, 0 rdba error Verifying file #5: H:\BaiduNetdisk\kingdee\EAS_D_EAS_STANDARD.ORA (4194303 blocks) - Started: 2026-01-11 18:04:08 Progress: 10000 / 4194303 blocks checked... Progress: 20000 / 4194303 blocks checked... …………………… Progress: 260000 / 4194303 blocks checked... Progress: 270000 / 4194303 blocks checked... file 5, block 277678: tailchk error (expected 0x0228BB21, got 0x0228AD21), bad block file 5, block 277679: rdba error (expected 277679, got 277615), bad block file 5, block 277680: rdba error (expected 277680, got 277616), bad block file 5, block 277681: rdba error (expected 277681, got 277617), bad block ……………… file 5, block 277692: rdba error (expected 277692, got 277628), bad block file 5, block 277693: rdba error (expected 277693, got 277629), bad block file 5, block 277694: rdba error (expected 277694, got 277630), bad block file 5, block 279406: tailchk error (expected 0x02281E22, got 0x00000700), bad block file 5, block 279407: rdba error (expected 279407, got 448), bad block file 5, block 279408: rdba error (expected 279408, got 0), bad block ……………… Progress: 280000 / 4194303 blocks checked... Progress: 290000 / 4194303 blocks checked... Progress: 300000 / 4194303 blocks checked... Progress: 310000 / 4194303 blocks checked... file 5, block 312932: tailchk error (expected 0x0106C0B8, got 0x010629B8), bad block file 5, block 312933: rdba error (expected 312933, got 312869), bad block file 5, block 312934: rdba error (expected 312934, got 312870), bad block file 5, block 312935: rdba error (expected 312935, got 312871), bad block file 5, block 312936: rdba error (expected 312936, got 312872), bad block file 5, block 312937: rdba error (expected 312937, got 312873), bad block file 5, block 312938: rdba error (expected 312938, got 312874), bad block file 5, block 312939: rdba error (expected 312939, got 312875), bad block ……………… Progress: 4180000 / 4194303 blocks checked... Progress: 4190000 / 4194303 blocks checked... File #5 completed: 1 all zero, 0 soft corrupted, 13 tailchk error, 1 checksum error, 255 rdba error DBV completed at: 2026-01-11 18:09:30 =============================================== DBV Summary: Total blocks checked: 4325872 Total all zero blocks found: 1 Total all rdba error blocks found: 255 Total all tailchk error blocks found: 13 Total all soft corrupted blocks found: 0 Total all checksum error blocks found: 3 Total bad blocks found: 272 =============================================== Detailed report saved to: dbv_20260111180358.log OBET>
win平台挂起Oracle数据库启动进程
对于oracle的有些故障,如果数据库完全open会报错,导致启动失败,这个时候,我们可以尝试在数据库open到一半的过程中把启动过程挂起,然后登录数据库对字典进行修复,然后就可以正常启动数据库。非win平台可以通过gdb挂起数据库启动过程,因为win系统是进程模式,无法通过gdb挂起来实现,通过自己写程序修改oracle内存来实现这个功能
在Oracle Recovery Tools工具中,点击修改内存—>检索Oracle数据库进程—>选择需要操作的数据库进程—>挂起Oracle进程 就可以实现oracle数据库在open的过程中挂住

然后其他会话登录数据库,进行需要的操作,再重新点击取消挂起数据库可以继续open成功

obet(Oracle Block Editor Tool)第二版发布
在几天之前发布了obet的第一个版本(Oracle数据块编辑工具( Oracle Block Editor Tool)-obet),最近对功能进行了一些完善,并发布第二版(下载地址:下载obet),主要增加了以下几个功能:
0) corrupt [block x] 命令主要用于标记坏块功能(在第一版中已经完善)
1) repair [block x] 命令对于坏块的自动修复,主要包括checksum,tailchk,seq_kcbh等
2)增加copy chkscn 命令主要用于对文件头的checkpoint scn相关信息修复
3)增加copy resetlogscn命令主要用于对文件头的resetlogs相关信息修复
4)把之前的copy命令调整为copy data命令格式
5)增加copy block命令主要用于数据文件之间的数据块直接拷贝
该版本的help命令提示
OBET (Oracle Block Editor Tool) commands:
open <config_file> - Load file list from config file (format: <num> <path>)
info - Show loaded file list (from open command)
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
d/dump [options] - Display data (options: block X, offset Y, count N)
m/modify <hex> [opts] - Modify data with hex (opts: block X, offset Y)
undo - Undo last modification
sum [block X] - Calculate checksum for block (default: current block)
sum apply [block X] - Apply checksum: write calculated value to block
tailchk [block X] - Calculate tailchk for block (default: current block)
tailchk apply [block X] - Apply tailchk: write calculated value to block
repair [block X] - Repair bad block (fix seq_kcbh, tailchk, checksum)
copy data <src> to <dest> - Copy data between files
<src> format: file,block,offset,count (e.g., 1,1,10,64)
<dest> format: file[,block][,offset] (e.g., 3 or 3,1 or 3,1,128)
copy block file#,block# to file#,block# - Copy entire data block
copy chkscn file n to file m - Copy datafile header checkpoint SCN info
copy resetlogscn file n to file m - Copy datafile header resetlogs info
corrupt [block X] - Mark block as corrupted (default: current block)
show - Display current settings (filename, blocksize, block, offset, count, mode)
license - Show/manage software license (registration code required)
version - Show software version and developer information
p/print <param> - Print Oracle structure,Use the 'p/print' command to see details
undo - Undo the last copy chkscn or copy resetlogscn operation
help - Show this help message
quit/exit - Exit OBET
copy block功能演示
随便把一个block拷贝到文件的另外位置,也可以拷贝到不同文件的其他位置,根据需要调整
OBET> copy block 1,1 to 1,5 Confirm copy block: Source: file#1 (/u01/xifenfei/system01.dbf), block 1 (entire 8192-byte block) Target: file#1 (/u01/xifenfei/system01.dbf), block 5 (entire 8192-byte block) Proceed? (Y/YES to confirm): y Successfully copied block 1 from file#1 to block 5 in file#1 (8192 bytes). OBET> set file 1 filename set to: /u01/xifenfei/system01.dbf (file#1) OBET> set count 128 count set to: 128 OBET> dump block 1 offset 0 File: /u01/xifenfei/system01.dbf Block: 1 Offsets: 0 to 127 -------------------------------------------------------------------------------- 00002000 01230000 01004000 00000000 00000104 28C60000 00000000 0004200B A2DB266A 00002020 58494645 4E464549 AC020000 00720100 00200000 01000300 00000000 00000000 00002040 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00002060 08024000 07000000 00000000 7DC92131 12345678 87654321 00000000 00000000 <128 bytes read> OBET> dump block 5 offset 0 File: /u01/xifenfei/system01.dbf Block: 5 Offsets: 0 to 127 -------------------------------------------------------------------------------- 0000A000 01230000 01004000 00000000 00000104 28C60000 00000000 0004200B A2DB266A 0000A020 58494645 4E464549 AC020000 00720100 00200000 01000300 00000000 00000000 0000A040 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000A060 08024000 07000000 00000000 7DC92131 12345678 87654321 00000000 00000000 <128 bytes read>
copy chkscn功能演示
OBET> p kcvfh.kcvfhckp
File: H:\xifenfei\system01.dbf
Size: 8192 bytes
Block: 1
Offset: 484
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x1BDDBF09
ub2 kscnwrp @488 0x163D
ub2 kscnwrp2 @490 0x0000
ub4 kcvcptim @492 0x488361FC
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0006E3D3
ub4 kcrbabno @504 0x0000B44B
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[8] @512-519 02 00 00 00 00 00 00 00
OBET> p kcvfh.kcvfhckp
File: H:\xifenfei\sysaux01.dbf
Size: 8192 bytes
Block: 1
Offset: 484
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x67452301
ub2 kscnwrp @488 0x0000
ub2 kscnwrp2 @490 0x0000
ub4 kcvcptim @492 0x00000000
ub2 kcvcpthr @496 0x0000
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0006E3D3
ub4 kcrbabno @504 0x0000B44B
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[8] @512-519 02 00 00 00 00 00 00 00
<kcvfh.kcvfhckp structure printed successfully>
OBET> copy chkscn file 1 to file 2
Confirm Modify chkscn:
Source: file#1 (H:\xifenfei\system01.dbf)
Target: file#2 (H:\xifenfei\sysaux01.dbf)
Proceed? (Y/YES to confirm): y
Successfully copied checkpoint SCN information from file#1 to file#2.
OBET> p kcvfh.kcvfhckp
File: H:\xifenfei\sysaux01.dbf
Size: 8192 bytes
Block: 1
Offset: 484
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x1BDDBF09
ub2 kscnwrp @488 0x163D
ub2 kscnwrp2 @490 0x0000
ub4 kcvcptim @492 0x488361FC
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0006E3D3
ub4 kcrbabno @504 0x0000B44B
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[8] @512-519 02 00 00 00 00 00 00 00
<kcvfh.kcvfhckp structure printed successfully>
copy resetlogscn功能演示
OBET> p kcvfh.kcvfhrlc File: H:\xifenfei\system01.dbf Size: 8192 bytes Block: 1 Offset: 112 ub4 kcvfhrlc @112 0x3215EC5C <kcvfh.kcvfhrlc structure printed successfully> OBET> p kcvfh.kcvfhrls File: H:\xifenfei\system01.dbf Size: 8192 bytes Block: 1 Offset: 116 struct kcvfhrls, 8 bytes @116 ub4 kscnbas @116 0x000E74FF ub2 kscnwrp @120 0x0000 ub2 kscnwrp2 @122 0x0000 <kcvfh.kcvfhrls structure printed successfully> OBET> p kcvfh.kcvfhrlc File: H:\xifenfei\sysaux01.dbf Size: 8192 bytes Block: 1 Offset: 112 ub4 kcvfhrlc @112 0x67452301 <kcvfh.kcvfhrlc structure printed successfully> OBET> p kcvfh.kcvfhrls File: H:\xifenfei\sysaux01.dbf Size: 8192 bytes Block: 1 Offset: 116 struct kcvfhrls, 8 bytes @116 ub4 kscnbas @116 0x43658709 ub2 kscnwrp @120 0x0021 ub2 kscnwrp2 @122 0x0000 <kcvfh.kcvfhrls structure printed successfully> OBET> copy resetlogscn file 1 to file 2 Confirm Modify resetlogscn: Source: file#1 (H:\xifenfei\system01.dbf) Target: file#2 (H:\xifenfei\sysaux01.dbf) Proceed? (Y/YES to confirm): y Successfully copied resetlog SCN information from file#1 to file#2. OBET> p kcvfh.kcvfhrlc File: H:\xifenfei\sysaux01.dbf Size: 8192 bytes Block: 1 Offset: 112 ub4 kcvfhrlc @112 0x3215EC5C <kcvfh.kcvfhrlc structure printed successfully> OBET> p kcvfh.kcvfhrls File: H:\xifenfei\sysaux01.dbf Size: 8192 bytes Block: 1 Offset: 116 struct kcvfhrls, 8 bytes @116 ub4 kscnbas @116 0x000E74FF ub2 kscnwrp @120 0x0000 ub2 kscnwrp2 @122 0x0000 <kcvfh.kcvfhrls structure printed successfully>
corrupt [block x]标记坏块功能
C:\Users\XFF>dbv file=h:/xifenfei/users01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期三 11月 12 21:40:55 2025 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = H:\XIFENFEI\USERS01.DBF DBVERIFY - 验证完成 检查的页总数: 26656 处理的页总数 (数据): 23569 失败的页总数 (数据): 0 处理的页总数 (索引): 309 失败的页总数 (索引): 0 处理的页总数 (其他): 720 处理的总页数 (段) : 0 失败的总页数 (段) : 0 空的页总数: 2058 标记为损坏的总页数: 0 流入的页总数: 0 加密的总页数 : 0 最高块 SCN : 2255414715 (18.2255414715) OBET> corrupt block 10 Confirm modification: File: h:/xifenfei/users01.dbf Block: 10 Offset: 14 (file offset: 0x0001400E) Original value: 01 New value: FF Are you sure to set this block corrupted? (Y/YES to proceed): y Verification successful: Block 10 marked as corrupted (offset 14 set to 0xFF). Modification successful. C:\Users\XFF>dbv file=h:/xifenfei/users01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期三 11月 12 21:41:22 2025 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = H:\XIFENFEI\USERS01.DBF 页 10 流入 - 很可能是介质损坏 Corrupt block relative dba: 0x0100000a (file 4, block 10) Fractured block found during dbv: Data in bad block: type: 30 format: 2 rdba: 0x0100000a last change scn: 0x0000.00003e78 seq: 0xff flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x3e781e01 check value in block header: 0x1a6 computed block checksum: 0xfe DBVERIFY - 验证完成 检查的页总数: 26656 处理的页总数 (数据): 23569 失败的页总数 (数据): 0 处理的页总数 (索引): 309 失败的页总数 (索引): 0 处理的页总数 (其他): 719 处理的总页数 (段) : 0 失败的总页数 (段) : 0 空的页总数: 2058 标记为损坏的总页数: 1 流入的页总数: 1 加密的总页数 : 0 最高块 SCN : 2255414715 (18.2255414715)
repair [block x]修复坏块功能
C:\Users\XFF>dbv file=h:/xifenfei/undo01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期日 11月 16 00:06:59 2025 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = H:\XIFENFEI\UNDO01.DBF 页 2 流入 - 很可能是介质损坏 Corrupt block relative dba: 0x02000002 (file 8, block 2) Fractured block found during dbv: Data in bad block: type: 29 format: 2 rdba: 0x02000002 last change scn: 0x163d.1bddbcfa seq: 0xff flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0xbcfa1d02 check value in block header: 0xec11 computed block checksum: 0xfd DBVERIFY - 验证完成 检查的页总数: 4880 处理的页总数 (数据): 0 失败的页总数 (数据): 0 处理的页总数 (索引): 0 失败的页总数 (索引): 0 处理的页总数 (其他): 4372 处理的总页数 (段) : 11 失败的总页数 (段) : 0 空的页总数: 507 标记为损坏的总页数: 1 流入的页总数: 1 加密的总页数 : 0 最高块 SCN : 467517187 (5693.467517187) OBET> repair Repairing block 2 in file H:\xifenfei\undo01.dbf... Repair analysis for block 2: 1. seq_kcbh check: 0xFF -> needs repair (0x01) 2. Tailchk check: 0x021DFABC -> needs repair (0x011DFABC) 3. Checksum check: 0x11EC -> OK Confirm repair operations: File: H:\xifenfei\undo01.dbf Block: 2 Operations needed: fix offset14, fix tailchk Confirm? (Y/YES to proceed): y Verification after repair: 1. seq_kcbh: 0x01 OK 2. Tailchk: 0x011DFABC OK 3. Checksum: 0x11EC OK Block 2 repair completed successfully. C:\Users\XFF>dbv file=h:/xifenfei/undo01.dbf DBVERIFY: Release 11.2.0.4.0 - Production on 星期日 11月 16 00:07:29 2025 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - 开始验证: FILE = H:\XIFENFEI\UNDO01.DBF DBVERIFY - 验证完成 检查的页总数: 4880 处理的页总数 (数据): 0 失败的页总数 (数据): 0 处理的页总数 (索引): 0 失败的页总数 (索引): 0 处理的页总数 (其他): 4373 处理的总页数 (段) : 11 失败的总页数 (段) : 0 空的页总数: 507 标记为损坏的总页数: 0 流入的页总数: 0 加密的总页数 : 0 最高块 SCN : 467517187 (5693.467517187)


加我微信(17813235971)
加我QQ(107644445)

