标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 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-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)
- 操作系统 (103)
- 数据库 (1,767)
- DB2 (22)
- MySQL (77)
- Oracle (1,608)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- 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备份恢复 (590)
- Oracle安装升级 (97)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- ORA-00756 ORA-10567故障数据0丢失恢复
- 数据库文件变成32k故障恢复
- tcp连接过多导致监听TNS-12532 TNS-12560 TNS-00502错误
- 文件系统格式化MySQL数据库恢复
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
- 达梦数据库dm.ctl文件异常恢复
- Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
- 可能是 tempdb 空间用尽或某个系统表不一致故障处理
- 11.2.0.4库中遇到ORA-600 kcratr_nab_less_than_odr报错
- [MY-013183] [InnoDB] Assertion failure故障处理
标签归档:ORA-600 4194
ORA-604 ORA-607 ORA-600
有客户数据库经过一系列恢复之后,出现ORA-604 ORA-607 ORA-600的错误,尝试各种方法无法打开,希望我们介入处理
Sat May 12 21:18:56 2018 SMON: enabling cache recovery Sat May 12 21:18:57 2018 Errors in file d:\oracle\admin\xifenfei\udump\xifenfei_ora_3448.trc: ORA-00600: 内部错误代码,参数: [4194], [34], [28], [], [], [], [], [] Sat May 12 21:19:00 2018 Recovery of Online Redo Log: Thread 1 Group 1 Seq 644 Reading mem 0 Mem# 0 errs 0: D:\ORACLE\ORADATA\xifenfei\REDO01.LOG Recovery of Online Redo Log: Thread 1 Group 1 Seq 644 Reading mem 0 Mem# 0 errs 0: D:\ORACLE\ORADATA\xifenfei\REDO01.LOG Sat May 12 21:19:01 2018 Errors in file d:\oracle\admin\xifenfei\udump\xifenfei_ora_3448.trc: ORA-00604: 递归 SQL 层 1 出现错误 ORA-00607: 当更改数据块时出现内部错误 ORA-00600: 内部错误代码,参数: [4194], [34], [28], [], [], [], [], [] Error 604 happened during db open, shutting down database USER: terminating instance due to error 604 Sat May 12 21:19:02 2018 Errors in file d:\oracle\admin\xifenfei\bdump\xifenfei_pmon_1840.trc: ORA-00604: error occurred at recursive SQL level Instance terminated by USER, pid = 3448 ORA-1092 signalled during: alter database open...
ORA-600 4194 trace文件
分析trace文件,确定ORA-600 4194对应的sql语句为update undo$ set name=:2……
*** 2018-05-12 21:18:57.000 ksedmp: internal or fatal error ORA-00600: 内部错误代码,参数: [4194], [34], [28], [], [], [], [], [] Current SQL statement for this session: update undo$ set name=:2,file#=:3,block#=:4,status$=:5,user#=:6,undosqn=:7, xactsqn=:8,scnbas=:9,scnwrp=:10,inst#=:11,ts#=:12,spare1=:13 where us#=:1 ----- Call Stack Trace ----- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- _ksedmp+147 CALLrel _ksedst+0 _ksfdmp.108+e CALLrel _ksedmp+0 3 _kgeriv+89 CALLreg 00000000 212778 3 _kseipre.107+3f CALLrel _kgeriv+0 _ksesic2+24 CALLrel _kseipre.107+0 __VInfreq__kturdb+8 CALLrel _ksesic2+0 1062 0 22 0 1C b _kcoapl+1df CALLreg 00000000 30A0F94 30A100A 11 6BB7E014 _kcbapl+71 CALLrel _kcoapl+0 30A0F90 6BB7E000 1 0 2000 _kcrfwr+734 CALLrel _kcbapl+0 30A0F90 6BBFC844 3014F9C _kcbchg1+7ec CALLrel _kcrfwr+0 _ktuchg+630 CALLrel _kcbchg1+0 0 4 3015224 301523C 0 0 _ktbchg2+75 CALLrel _ktuchg+0 2 672D50F4 1 310DCD8 310DCE0 30A0F90 310D2F0 30A0ED0 0 0 _kddchg+18f CALLrel _ktbchg2+0 0 672D50F4 310DCD8 310DCE0 30A0F90 310D2E8 30A0ED0 0 0 _kduovw.53+6e3 CALLrel _kddchg+0 310D2AC 310DCD8 310DCE0 30A0F90 30A0ED0 0 0 _kduurp.53+61a CALLrel _kduovw.53+0 310D2AC _kdusru+aa5 CALLrel _kduurp.53+0 310D2AC 672D514C _kauupd+12e CALLrel _kdusru+0 310D6E0 672D514C 310D2AC 0 _updrow+729 CALLrel _kauupd+0 310D6DC 672D514C 310D2AC 0 672D539C E F 672E4E48 12 301BBA0 301BBA4 _qerupFetch+107 CALLrel _updrow+0 _updaul+202 CALL??? 00000000 672DE9C4 0 672EC040 7FFF _updThreePhaseExe+b CALLrel _updaul+0 672EBDD4 301BD30 0 6 _updexe+105 CALLrel _updThreePhaseExe+0 672EBDD4 0 310D2AC 301BE0C 672EBDD4 1 301BE0C 0 _opiexe+f97 CALLrel _updexe+0 672EBDD4 301BF48 _opiodr+4cd CALLreg 00000000 4 3 301C894 _rpidrus.43+99 CALLrel _opiodr+0 4 3 301C894 B _skgmstack+71 CALLreg 00000000 301C484 _rpidru+6d CALLrel _skgmstack+0 301C49C 212600 F618 778198 301C484 _rpiswu2+17e CALLreg 00000000 301C7BC _rpidrv+109 CALLrel _rpiswu2+0 _rpiexe+33 CALLrel _rpidrv+0 B 4 301C894 8 _ktuscu+2a8 CALLrel _rpiexe+0 B _kqrcmt+2c2 CALL??? 00000000 672EA898 3 ..1.18_2.filter.95+ CALLrel _kqrcmt+0 67B9C5F4 1 0 212778 212778 FF 159 0 0 0 ..1.23_5.filter.99+ CALLrel _ktcrcm+0 67B9C5F4 0 0 0 0 1 0 0 14d _ktuini+64 CALLrel _ktuiup.99+0 301D990 _adbdrv+2665 CALLrel _ktuini+0 301D990 ..1.5_1.filter.29+2 CALLrel _adbdrv+0 9d _opiosq0+9a4 CALLrel _opiexe+0 4 0 301DDD8 _kpooprx+c6 CALLrel _opiosq0+0 3 E 301DE70 24 _kpoal8+225 CALLrel _kpooprx+0 301E738 301E680 13 1 0 24 _opiodr+4cd CALLreg 00000000 5E 14 301E734 _ttcpip+a86 CALLreg 00000000 5E 14 301E734 0 _opitsk+2f4 CALLrel _ttcpip+0 _opiino+5fc CALLrel _opitsk+0 0 0 2188C8 30CF020 E6 0 _opiodr+4cd CALLreg 00000000 3C 4 301FBD4 _opidrv+233 CALLrel _opiodr+0 3C 4 301FBD4 0 _sou2o+19 CALLrel _opidrv+0 _opimai+10a CALLrel _sou2o+0 _OracleThreadStart@ CALLrel _opimai+0 4+35c 7C80B726 CALLreg 00000000 --------------------- Binary Stack Dump ---------------------
进一步分析确定为system rollback segment header 异常
Block image after block recovery: buffer tsn: 0 rdba: 0x00400009 (1/9) scn: 0x0000.d794070f seq: 0x01 flg: 0x04 tail: 0x070f0e01 frmt: 0x02 chkval: 0x2320 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS Extent Control Header ----------------------------------------------------------------- Extent Header:: spare1: 0 spare2: 0 #extents: 6 #blocks: 47 last map 0x00000000 #maps: 0 offset: 4128 Highwater:: 0x00400183 ext#: 2 blk#: 2 ext size: 8 #blocks in seg. hdr's freelists: 0 #blocks below: 0 mapblk 0x00000000 offset: 2 Unlocked Map Header:: next 0x00000000 #extents: 6 obj#: 0 flag: 0x40000000 Extent Map ----------------------------------------------------------------- 0x0040000a length: 7 0x00400011 length: 8 0x00400181 length: 8 0x00400189 length: 8 0x00400191 length: 8 0x00400199 length: 8 TRN CTL:: seq: 0x0056 chd: 0x0054 ctl: 0x0052 inc: 0x00000000 nfb: 0x0001 mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x00400183.0056.1b scn: 0x0000.d77996ab Version: 0x01 FREE BLOCK POOL:: uba: 0x00400183.0056.1b ext: 0x2 spc: 0x794 uba: 0x00000000.002f.21 ext: 0x5 spc: 0x1334 uba: 0x00000000.002e.37 ext: 0x4 spc: 0x788 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 ………… ORA-00604: 递归 SQL 层 1 出现错误 ORA-00607: 当更改数据块时出现内部错误 ORA-00600: 内部错误代码,参数: [4194], [34], [28], [], [], [], [], []
这种问题需要通过通过bbed/ue修改ktuxc的相关内容,实现数据库open成功,可以参考另外几篇文章:
使用bbed解决ORA-00607/ORA-00600[4194]故障
通过bbed模拟ORA-00607/ORA-00600 4194 故障
ORA-607/ORA-600[4194]不一定是重大灾难
数据库报ORA-00607/ORA-00600[4194]错误
ORA-600 4194/ORA-600 4193/ORA-600 4137故障解决
对于常见的undo异常错误,ORA-600 4193,ORA-600 4194,ORA-600 4137等错误的处理一般步骤.
适用版本
Oracle Database - Enterprise Edition - Version 9.2.0.1 to 11.2.0.4 [Release 9.2 to 11.2] Information in this document applies to any platform.
报错现象
The following error is occurring in the alert.log right before the database crashes. ORA-00600: internal error code, arguments: [4194], [#], [#], [], [], [], [], [] This error indicates that a mismatch has been detected between redo records and rollback (undo) records. ARGUMENTS: Arg [a] - Maximum Undo record number in Undo block Arg [b] - Undo record number from Redo block Since we are adding a new undo record to our undo block, we would expect that the new record number is equal to the maximum record number in the undo block plus one. Before Oracle can add a new undo record to the undo block it validates that this is correct. If this validation fails, then an ORA-600 [4194] will be triggered.
报错原因
This also can be cause by the following defect Bug 8240762 Abstract: Undo corruptions with ORA-600 [4193]/ORA-600 [4194] or ORA-600 [4137] after SHRINK Details: Undo corruption may be caused after a shrink and the same undo block may be used for two different transactions causing several internal errors like: ORA-600 [4193] / ORA-600 [4194] for new transactions ORA-600 [4137] for a transaction rollback
处理步骤
Best practice to create a new undo tablespace. This method includes segment check. Create pfile from spfile to edit >create pfile from spfile; 1. Shutdown the instance 2. set the following parameters in the pfile undo_management = manual event = '10513 trace name context forever, level 2' 3. >startup restrict pfile=<initsid.ora> 4. >select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE'; This is critical - we are looking for all undo segments to be offline - System will always be online. If any are 'PARTLY AVAILABLE' or 'NEEDS RECOVERY' - Please open an issue with Oracle Support or update the current SR. If all offline then continue to the next step 5. Create new undo tablespace - example >create undo tablespace <new undo tablespace> datafile <datafile> size 2000M; 6. Drop old undo tablespace >drop tablespace <old undo tablespace> including contents and datafiles; 7. >shutdown immediate; 8 >startup nomount; --> Using your Original spfile 9 modify the spfile with the new undo tablespace name Alter system set undo_tablespace = '<new tablespace created in step 5>' scope=spfile; 10. >shutdown immediate; 11. >startup; --> Using spfile The reason we create a new undo tablespace first is to use new undo segment numbers that are higher then the current segments being used. This way when a transaction goes to do block clean-out the reference to that undo segment does not exist and continues with the block clean-out.
参考:tep by step to resolve ORA-600 4194 4193 4197 on database crash (Doc ID 1428786.1)
How to resolve ORA-600 [4194] errors
在oracle恢复中ORA-600 4194是一个非常常见的错误,该错误的主要原因是由于redo记录和undo(rollback)记录不匹配.
ORA 600 4194错误原因以及含义
ERROR: Format: ORA-600 [4194] [a] [b] VERSIONS: versions 6.0 to 12.1 DESCRIPTION: A mismatch has been detected between Redo records and rollback (Undo) records. We are validating the Undo record number relating to the change being applied against the maximum undo record number recorded in the undo block. This error is reported when the validation fails. ARGUMENTS: Arg [a] Maximum Undo record number in Undo block Arg [b] Undo record number from Redo block
ORA 600 4194 错误处理思路
第一步
Confirm whether the database is up and running or not. If the database fails to start or crashes shortly after startup due to this error occurring, then try setting event 10513 at level 2 in the init.ora/spfile to disable transaction recovery and restart the instance, e.g.: event = "10513 trace name context forever, level 2" This may allow the database to successfully open and stay up so that the required diagnostics/actions can be performed.
第二步
In the trace file there should be an undo segment header dump, and so check to see if the undo segment header shows an active transaction after recovery, e.g.: TRN TBL <---- Represents the Transaction table for the particular undo segment index state cflags wrap# uel scn dba --------------------------------------------------------------------------------------------- 0x41 9 0x80 0x35ab6 0xffff 0x0695.38f6b959 0x1081e796 0x42 9 0x80 0x35bb1 0x000e 0x0695.38f6b028 0x1081e793 0x43 9 0x80 0x35b11 0x005d 0x0695.38f6b7ae 0x1081e795 0x44 9 0x80 0x359f0 0x0036 0x0695.38f69a91 0x1081e78e 0x45 10 0x80 0x35b1b 0x0000 0x0695.3a0aba4d 0x1081e796 0x46 9 0x80 0x35bb7 0x001c 0x0695.38f69bde 0x1081e78f =================================== State ---> This column specifies the status of the transaction 9 -----> represents a commited transaction 10 ---> Represents a active transaction Dba -----> Undo block containing the undo records Strictly speaking this is the block at the end of the undo chain. You can see from the transaction table that there is an active transaction for this particular rollback/undo segment after recovery. Therefore this rollback/undo segment and/or undo tablespace cannot be dropped without corrupting the database! Therefore recreating the UNDO tablespace is not an option.
第三步
From the trace file determine the affected undo segment, e.g.: Block image after block recovery: UNDO BLK: xid: 0x0015.02b.0001544b seq: 0x163e cnt: 0x12 irb: 0x12 icl: 0x0 flg: 0x0000 XID ==> Undo segment no + Slot no + Sequence no Therefore, in this case the Undo Segment is: USN# 0x15 (Hex) ==> 21 (Dec) ==> _SYSSMU21$ So if and ONLY IF the transaction table shows no active transaction can the rollback/undo segment be offlined and dropped.Note however, that before you can confirm if the entire UNDO tablespace can be dropped, you would need to check the transaction tables of ALL active rollback/undo segments in the same wasy as the above. The steps required to drop the rollback/undo segment are fully detailed in Note:179952.1, but are briefly listed here for completeness: If using Automatic Undo Management Offline the undo segment using the _OFFLINE_ROLLBACK_SEGMENTS parameter and bounce the database as follows: 1. Create and edit the init.ora file for the instance to set the following parameters: UNDO_MANAGEMENT=MANUAL _OFFLINE_ROLLBACK_SEGMENTS=(_SYSSMU21$) 2. Open the database in restricted mode to prevent user access, e.g.: connect / as sysdba startup restrict pfile = '<Full path to init.ora file>'; 3. Drop the rollback/undo segment, e.g.: drop rollback segment "_SYSSMU21"; 4. Shutdown the instance, and remove the init.ora parameters added in point 1 and restart the instance, e.g.: shutdown immediate startup If SMON was recovering the transaction then this may not work as we cannot open the database if it is determined to be in an inconsistent state. I have reviewed a number of SRs where this approach was successful, so it is important to try it first but understand that it may fail and you will have to resort to a point in time recovery or forcing open the DB and recreating it.
第四步
Now we need to dump the undo block to see which object was affected. We noted in Step 2 that this is the active transaction (from the trace file): TRN TBL index state cflags wrap# uel scn dba 0x45 10 0x80 0x35b1b 0x0000 0x0695.3a0aba4d 0x1081e796 Dba----------------> Undo block containing the undo records dba--->0x1081e796 is the block containing the active transaction . Use the WebIV tools to convert this RDBA to block number (block#) and file number (file#), e.g.: V SPLIT ==> DBA (Hex) = File#,Block# (Hex File#,Block#) = ===== === ===== ============ V8 10,10 ==> 276948886 (0x1081e796) = 66,124822 (0x42 0x1e796) So the file# is 66 and the block# is 124822, so dump the block by issuing: SQL> Alter system dump datafile 66 block 124822; This will generate a trace file in the user_dump_dest. The following is a sample of the information in the undo block: UNDO BLK: xid: 0x000c.045.00035b1b seq: 0x1e14 cnt: 0x17 irb: 0x17 icl: 0x0 flg: 0x0000 Rec Offset Rec Offset Rec Offset Rec Offset Rec Offset --------------------------------------------------------------------------- 0x01 0x1f8c 0x02 0x1f30 0x03 0x1ed4 0x04 0x1e78 0x05 0x1e1c 0x06 0x1dc0 0x07 0x1d64 0x08 0x1d08 0x09 0x1cac 0x0a 0x1c50 0x0b 0x1bf4 0x0c 0x1b98 0x0d 0x1b3c 0x0e 0x1ae0 0x0f 0x1a74 0x10 0x1a18 0x11 0x19bc 0x12 0x1960 0x13 0x1904 0x14 0x187c 0x15 0x181c 0x16 0x1798 0x17 0x173c * Rec #0x16 slt: 0x45 objn: 1485619(0x0016ab33) objd: 1485619 tblspc: 71(0x00000047) * Layer: 11 (Row) opc: 1 rci 0x00 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No rdba: 0x00000000 *----------------------------- uba: 0x1081e796.1e14.14 ctl max scn: 0x0695.38f69853 prv tx scn: 0x0695.38f698a1 KDO undo record: KTB Redo op: 0x04 ver: 0x01 op: L itl: scn: 0x0019.009.00034237 uba: 0x36c0cce4.1d2f.19 flg: C--- lkc: 0 scn: 0x0695.38f6b96b KDO Op code: URP xtype: XA bdba: 0x35406893 hdba: 0x35406892 itli: 1 ispac: 0 maxfr: 4863 tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0 ncol: 1 nnew: 1 size: -1 col 0: [ 4] c3 0e 36 2e *----------------------------- * Rec #0x17 slt: 0x45 objn: 1485619(0x0016ab33) objd: 1485619 tblspc: 71(0x00000047) * Layer: 11 (Row) opc: 1 rci 0x16 Undo type: Regular undo Last buffer split: No Temp Object: No Tablespace Undo: No rdba: 0x00000000 *----------------------------- From the trace file above: UNDO BLK: xid: 0x000c.045.00035b1b seq: 0x1e14 cnt: 0x17 irb: 0x17 icl: 0x0 flg: 0x0000 The undo segment with the active transaction is segment is 0x000c (Hex) which is 12 (Dec) as the XID is: Undo segment no + Slot no + Sequence no This step is often skipped because it was performed earlier in step 3, however it is a good idea to do this again now to make sure that the XID from the UNDO block matches the UNDO SEGMENT HEADER, this way you have followed all the chain, from the UNDO SEGMENT to UNDO BLOCK, back and forth. If there is a conflict here please check and make sure that the customer dumped the correct undo block. Check for the value of irb which is an index which points you to the latest change done to the undo block. This is the point from which a rollback would begin if one was issued. From the trace file we see: 'irb: 0x17' so this points to record 0x17, so search for this particular string i.e 0x17 and it will take you to undo record 'REC #0x17', e.g.: * Rec #0x17 slt: 0x45 objn: 1485619(0x0016ab33) objd: 1485619 tblspc: 71(0x00000047) * Layer: 11 (Row) opc: 1 rci 0x16 Undo type: Regular undo Last buffer split: No Temp Object: No Tablespace Undo: No rdba: 0x00000000 *----------------------------- Note the slot number (slt) is 0x45, the object number (objn) is the OBJECT_ID from dba_objects and data object number (objd) is the DATA_OBJECT_ID from dba_objects. These numbers may be the same but not necessarily, and so if the database is open then identify this object, e.g.: select object_name, owner, object_type, data_object_id from dba_objects where object_id = <objn>; This is the object, which has an active transaction. Note in the above trace file extract that rci has a value of 0x16 which means that this record is at the end of an undo chain. This means that the chain continues in another UNDO BLOCK. Please refer to unpublished Note:281504.1 for information on Undo chains. So the next record that needs to be rolled back is present in REC #X016. If rci is 0x00 then it means that this is the first record present in the undo chain and so you can check to see if there is rdba info, e.g.: * Rec #0x16 slt: 0x45 objn: 1485619(0x0016ab33) objd: 1485619 tblspc: 71(0x00000047) * Layer: 11 (Row) opc: 1 rci 0x00 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No rdba: 0x00000000 *----------------------------- uba: 0x1081e796.1e14.14 ctl max scn: 0x0695.38f69853 prv tx scn: 0x0695.38f698a1 KDO undo record: KTB Redo op: 0x04 ver: 0x01 op: L itl: scn: 0x0019.009.00034237 uba: 0x36c0cce4.1d2f.19 flg: C--- lkc: 0 scn: 0x0695.38f6b96b KDO Op code: URP xtype: XA bdba: 0x35406893 hdba: 0x35406892 itli: 1 ispac: 0 maxfr: 4863 tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0 ncol: 1 nnew: 1 size: -1 col 0: [ 4] c3 0e 36 2e *----------------------------- If the object is an Index, drop and recreate it. If it is a table, then again the table would need to be dropped and recreated (or truncated) so that its object number changes and hence the rollback/undo is no longer required. If this isn't possible, then you have two options: First take a backup of the database in its current state. This is critical in case anything goes wrong and you lose the opportunity to salvage the data! Option 1 - Restore the undo segment datafile and the datafile containing the object and perform a full recovery. This can only be done if you have all the archived redo as you will need to do full recovery on these files. OR Option 2 If option 1 is not possible, you can use the unsupported method, e.g.: Specify the undo segment in the _OFFLINE_ROLLBACK_SEGMENTS parameter and try to drop the rollback segment. If there is an active transaction then this is not likely to work and you will probably need to set the _CORRUPTED_ROLLBACK_SEGMENTS parameter as well
温馨提示:
1.隐含参数_OFFLINE_ROLLBACK_SEGMENTS/_CORRUPTED_ROLLBACK_SEGMENTS属于Oracle内部隐含参数,建议在Oracle support认可的情况下使用,因为使用之后可能导致数据库事务完整性彻底损坏
2.进行屏蔽事务之前,如果条件允许建议使用txchecker检查
2.使用上述方法恢复数据库之后,建议通过逻辑方式导出导入重建数据库