标签云
asm恢复 bbed bootstrap$ dul kcbzib_kcrsds_1 kccpb_sanity_check_2 kcratr_nab_less_than_odr MySQL恢复 obet ORA-00312 ORA-00704 ORA-00742 ORA-01110 ORA-01200 ORA-01555 ORA-01578 ORA-01595 ORA-600 2662 ORA-600 2663 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 kcratr_nab_less_than_odr 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 比特币加密文章分类
- MongoDB (1)
- MongoDB恢复 (1)
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (112)
- 数据库 (1,878)
- DB2 (22)
- MySQL (82)
- Oracle (1,704)
- 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 (72)
- Oracle Bug (8)
- Oracle RAC (56)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (659)
- Oracle安装升级 (107)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (91)
- PostgreSQL (37)
- pdu工具 (7)
- PostgreSQL恢复 (13)
- SQL Server (34)
- SQL Server恢复 (14)
- TimesTen (7)
- 达梦数据库 (5)
- 达梦恢复 (3)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (51)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (34)
- MongoDB (1)
-
最近发表
- 由于con$.con#值达到极限,触发数据库增加约束报ORA-600 12807错误
- MongoDB 离线提取工具—mongoext
- .bres勒索病毒加密数据库dmp文件可恢复
- ORA-600 krsm_mrp_rebuild_lf_list.lno_mismatch
- 记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复
- 不当数据库恢复操作导致一个月数据丢失
- obet快速修复oracle 位图损坏块
- 不太常见的10.2.0.1的oracle redo损坏恢复
- obet forcecopy功能抢救硬件故障中的数据文件
- kcratr_nab_less_than_odr和system坏块故障处理
- 通过obet 恢复system坏块,打开数据库
- obet dbv功能完整说明
- 分享一例运行在aix上的sap系统数据库恢复过程
- OBET-Oracle Block Editor Tool使用说明
- 几乎动用了所有手段的Oracle故障恢复
- Oracle Block Edit Tool (obet) 功能增强–2026.07
- Oracle 19c 202607补丁(RUs+OJVM)-19.32
- Patch_SCN快速修复ORA-01555数据库open故障
- 快速处理 ORA-01210: data file header is media corrupt 故障
- ORA-00314: log 3 of thread 1, expected sequence# N doesn’t match 0
分类目录归档:Oracle
记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复
由于服务器断电导致数据库启动报错
Mon Sep 07 12:47:52 2026 ALTER DATABASE OPEN Beginning crash recovery of 1 threads parallel recovery started with 32 processes Started redo scan ORA-00354: 损坏重做日志块标头 ORA-00353: 日志损坏接近块 41735 更改 2385313823 时间 09/07/2026 10:35:04 ORA-00312: 联机日志 5 线程 1: 'D:\APP\LIMSADMIN\ORADATA\ORCL\REDO05.LOG' Mon Sep 07 12:47:58 2026 Trace dumping is performing id=[cdmp_20260907124758] Errors in file d:\app\limsadmin\diag\rdbms\primary\orcl\trace\orcl_ora_3040.trc: ORA-00354: 损坏重做日志块标头 ORA-00353: 日志损坏接近块 41735 更改 2385313823 时间 09/07/2026 10:35:04 ORA-00312: 联机日志 5 线程 1: 'D:\APP\LIMSADMIN\ORADATA\ORCL\REDO05.LOG' ORA-354 signalled during: ALTER DATABASE OPEN...
从这里看,数据库在启动的时候实例恢复需要读取REDO05.LOG日志,但是发现该日志中有block损坏,而且损坏日志的时间点为09/07/2026 10:35:04,scn为2385313823(ORA-00353: 日志损坏接近块 41735 更改 2385313823 时间 09/07/2026 10:35:04),导致实例恢复无法完成,从而数据库无法正常启动.通过Oracle Recovery Check脚本检查数据库当前状态,数据库的checkpoint time为:09/07/2026 10:37:37,checkpoint scn为:2385314357


这个就比较明显,数据库文件正在需要的日志是sequence 19001 REDO01.LOG(而不是报错的sequence 19000 REDO05.LOG),基于这样的情况,出现这种问题,是由于control中记录的Thread Checkpoint RBA不正确导致.解决这个问题相对比较简单,重建ctl即可

由于redo05.log有损坏,该库为归档模式,需要先clear redo05.log(不然会导致redo无法归档,数据库hang住),然后对全库发起备份
不当数据库恢复操作导致一个月数据丢失
今天分享一个本不该发生的故障,结果由于现场人员没有合适的判断导致客户丢失近一个月数据,事故经过大概是这样的
1. 客户数据库由于断电,启动之后报ORA-600 kcratr_scan_lastbwr错误
2026-09-03T11:22:58.998379+08:00 Beginning crash recovery of 2 threads parallel recovery started with 31 processes Thread 1: Recovery starting at checkpoint rba (logseq 37738 block 7724), scn 0 Thread 2: Recovery starting at checkpoint rba (logseq 43821 block 37937), scn 0 2026-09-03T11:22:59.158232+08:00 Started redo scan Hex dump of (file 20, block 2720) in trace file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_34049.trc Reading datafile '+DATA/ORCL/DATAFILE/undotbs01.dbf' for corrupt data at rdba: 0x05000aa0 (file 20, block 2720) Reread Not Encrypted (file 20, block 2720) found same data physically corrupt:No, logically corrupt:No, and is not expected version by upper layer. Write verification failed for File 20 Block 2720 (rdba 0x5000aa0) ***************************************************************** An internal routine has requested a dump of selected redo. This usually happens following a specific internal error, when analysis of the redo logs will help Oracle Support with the diagnosis. It is recommended that you retain all the redo logs generated (by all the instances) during the past 12 hours, in case additional redo dumps are required to help with the diagnosis. ***************************************************************** Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_34049.trc (incident=430645): ORA-00600: internal error code, arguments: [kcratr_scan_lastbwr], [], [], [], [], [], [], [], [], [], [], [] Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl1/incident/incdir_430645/orcl1_ora_34049_i430645.trc 2026-09-03T11:23:00.484486+08:00 Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. 2026-09-03T11:23:00.510512+08:00 Slave encountered ORA-10388 exception during crash recovery
这个是一个比较常见的错误一般是由于redo写丢失导致(数据库open报ORA-600 kcratr_scan_lastbwr故障处理)
2. 现场操作的技术人员看了下这个错误,觉得数据库有备份,直接决定使用备份进行恢复

结果发现读取的是20260719的备份,而且原始的数据文件在asm里面,已经被覆盖。这个时候如果归档或者增量备份完整,还能够最大限度抢救数据,检查备份发现只有8月7日的增量备份,没有任何归档的备份(使用crontab 直接清理3天之前的归档)

基于这样的情况,应用到最后一个增量备份(也就是8月7日),后面的数据由于归档已经被清理(而且没有备份)

出现这个问题的原因是由于备份脚本本身备份归档,导致备份无法按照策略清理历史备份,导致磁盘空间满,从而后续备份无法继续(直接清理归档了)

恢复只能到此为止,查询最终的文件头恢复时间点

3. 基于这种情况只能尝试强制打开数据库,结果报ORA-600 kcbzibmlt_kcrsds_1错误
SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-00603: ORACLE server session terminated by fatal error ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [kcbzibmlt_kcrsds_1], [], [], [] Process ID: 30365 Session ID: 2180 Serial number: 43414
4. 这种错误类似ORA-600 kcbzib_kcrsds_1的处理思路,使用obet的patch_scn功能直接进行处理
OBET> patch_scn 89103 0x60017e98 3182707622 === Oracle SCN Patch === PID: 89103 Address: 0x60017e98 New Value: 0xbdb443a6 (3182707622) Original SCN: 0x0 Are you sure you want to modify Oracle SCN? (yes/no): y SCN modified: 0x0 -> 0xbdb443a6 Oracle SCN successfully modified.
然后打开数据库
SQL> alter database open; Database altered.
导出数据,导入新库完成本次恢复任务,可惜没有办法帮客户找回来丢失的那一个月数据.
案例总结:
1. rman备份脚本尽量不要有直接删除归档的操作,尽可能是先备份然后再删除(确认备份成功之后删除)
2. 备份还原操作之前,需要看备份文件和日志,大概评估下备份的可用性
3. 尽可能不要在损坏的现场环境上直接做rman还原操作(万一备份无法正常还原,比如中途有备份文件异常呢?)
4. 这个故障,如果不做还原操作,直接异常恢复,基本上也就丢失了当前redo中的数据,损失是最小的
obet快速修复oracle 位图损坏块
近期有客户由于虚拟化平台系统负载过高,重启之后导致数据库出现一些坏块

其中被框起来的坏块比较好处理,属于数据库中间某个对象的block,对异常对象进行处理即可,但是有一个block 2,block 10 这种都属于数据文件中位图块(用来记录哪些block被使用,哪些block是没有使用),这种block如果损坏会导致该文件无法分配新的空间(也不能回收空间,无法统计表空间使用情况等)


alert日志有大量报错

对于这种情况,直接使用obet的坏块修复功能
OBET> set file 116 filename set to: /oradata/NNC_DATA207.dbf (file# 116) endian auto-detected: little OBET> set block 10 block set to: 10 OBET> backup Backing up file #116, block 10 Successfully backed up block 10 from /oradata/NNC_DATA207.dbf to backup_blk/NNC_DATA207.dbf.10_20260902200547.blk OBET> repair block Warning: Missing value for 'block', using global setting: 10 Repairing block 10 in file /oradata/NNC_DATA207.dbf... Repair analysis for block 10: 1. seq_kcbh check: 0xFF -> needs repair (0x01) 2. Tailchk check: 0x00001EFF -> needs repair (0x00001E01) 3. Checksum check: 0xCBC7 -> OK Confirm repair operations: File: /oradata/NNC_DATA207.dbf Block: 10 Operations needed: fix offset14, fix tailchk Confirm? (Y/YES to proceed): y Verification after repair: 1. seq_kcbh: 0x01 OK 2. Tailchk: 0x00001E01 OK 3. Checksum: 0xCBC7 OK Block 10 repair completed successfully. OBET> OBET> set file 119 filename set to: /oradata/NNC_DATA210.dbf (file# 119) endian auto-detected: little OBET> set block 2 block set to: 2 OBET> backup Backing up file #119, block 2 Successfully backed up block 2 from /oradata/NNC_DATA210.dbf to backup_blk/NNC_DATA210.dbf.2_20260902200645.blk OBET> repair block Warning: Missing value for 'block', using global setting: 2 Repairing block 2 in file /oradata/NNC_DATA210.dbf... Repair analysis for block 2: 1. seq_kcbh check: 0xFF -> needs repair (0x01) 2. Tailchk check: 0x00001DFF -> needs repair (0x00001D01) 3. Checksum check: 0x80EC -> OK Confirm repair operations: File: /oradata/NNC_DATA210.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: 0x00001D01 OK 3. Checksum: 0x80EC OK Block 2 repair completed successfully. OBET> exit Exiting OBET.
使用dbv检测,位图坏块全部修复
[oracle@nccdb ~]$ dbv file=/oradata/NNC_DATA210.dbf DBVERIFY: Release 11.2.0.4.0 - Production on Wed Sep 2 20:07:15 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = /oradata/NNC_DATA210.dbf DBVERIFY - Verification complete Total Pages Examined : 4194302 Total Pages Processed (Data) : 3472440 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 205988 Total Pages Failing (Index): 0 Total Pages Processed (Other): 515867 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 7 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 751241252 (22.751241252) [oracle@nccdb ~]$ dbv file=/oradata/NNC_DATA207.dbf DBVERIFY: Release 11.2.0.4.0 - Production on Wed Sep 2 20:08:23 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = /oradata/NNC_DATA207.dbf DBVERIFY - Verification complete Total Pages Examined : 4194302 Total Pages Processed (Data) : 3471468 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 204185 Total Pages Failing (Index): 0 Total Pages Processed (Other): 518642 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 7 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 751241266 (22.751241266)


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

