ORA-00600_内部错误代码_参数 [4193]Error 600 in redo application callback

做冷备恢复时 报ORA-00600错误:
ORA-00600: 内部错误代码, 参数: [4193][ Error 600 in redo application callback
(trace 部分信息如下)
*** 2020-02-07 20:02:35.755
Incident 6165 created, dump file: E:\APP\WOLIHAITO\diag\rdbms\orcl\orcl\incident\incdir_6165\orcl_ora_3084_i6165.trc
ORA-00600: 内部错误代码, 参数: [4193], [
Error 600 in redo application callback
Dump of change vector:
TYP:0 CLS:34 AFN:3 DBA:0x00c02bad OBJ:4294967295 SCN:0x0000.000ecab7 SEQ:2 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 80 spc: 3128 flg: 0x0010 seq: 0x00c2 rec: 0x26
xid: 0x0009.01e.000003b4
ktubl redo: slt: 30 rci: 0 opc: 5.7 [objn: 0 objd: 0 tsn: 0]
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
0x00000000 prev ctl uba: 0x00c02bad.00c2.1c
prev ctl max cmt scn: 0x0000.000f0e2a prev tx cmt scn: 0x0000.000f0e3b
txn start scn: 0xffff.ffffffff logon user: 0 prev brb: 12594092 prev bcl: 0 BuExt idx: 0 flg2: 0
Block after image is corrupt:
buffer rdba: 0x00c02bad
scn: 0x0000.000ecab7 seq: 0x02 flg: 0x04 tail: 0xcab70202
frmt: 0x02 chkval: 0x465e type: 0x02=KTU UNDO BLOCK
Hex dump of block: st=0, typ_found=1
查看trace文件:E:\APP\WOLIHAITO\diag\rdbms\orcl\orcl\incident\incdir_6165\orcl_ora_3084_i6165.trc 部分信息如下
*** MODULE NAME:(sqlplus.exe) 2020-02-07 20:02:35.771
*** ACTION NAME:() 2020-02-07 20:02:35.771

Dump continued from file: E:\APP\WOLIHAITO\diag\rdbms\orcl\orcl\trace\orcl_ora_3084.trc
ORA-00600: 内部错误代码, 参数: [4193], [
========= Dump for incident 6165 (ORA 600 [4193]) ========
----- Beginning of Customized Incident Dump(s) -----
*** ktuc_diag_dmp: dump of current change vector
ktudb redo: siz: 80 spc: 3128 flg: 0x0010 seq: 0x00c2 rec: 0x26
xid: 0x0009.01e.000003b4
ktubl redo: slt: 30 rci: 0 opc: 5.7 [objn: 0 objd: 0 tsn: 0]
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
0x00000000 prev ctl uba: 0x00c02bad.00c2.1c
prev ctl max cmt scn: 0x0000.000f0e2a prev tx cmt scn: 0x0000.000f0e3b
txn start scn: 0xffff.ffffffff logon user: 0 prev brb: 12594092 prev bcl: 0 BuExt idx: 0 flg2: 0
*** ktuc_diag_dmp: dump of block after image in hex
Dump of memory from 0x000007FF2513A000 to 0x000007FF2513C000

参考文章:
Oracle 启动故障案例之–ORA-600 [4193]错误

解决方法:
pfile.ora:
*.remote_login_passwordfile=‘EXCLUSIVE’
*.undo_tablespace=‘UNDOTBS1’
undo_management = ‘MANUAL’
rollback_segments = ‘SYSTEM’

SQL> conn / as sysdba;
已连接到空闲例程。
SQL> startup mount pfile=‘E:\recover_\pfile.ora’;
ORACLE 例程已经启动。

Total System Global Area 855982080 bytes
Fixed Size 2286032 bytes
Variable Size 549457456 bytes
Database Buffers 297795584 bytes
Redo Buffers 6443008 bytes
数据库装载完毕。
SQL> show parameter undo

NAME TYPE VALUE


undo_management string MANUAL
undo_retention integer 900
undo_tablespace string UNDOTBS1
SQL> alter database open;

数据库已更改。

SQL> drop tablespace undotbs1 including contents and datafiles;

表空间已删除。

SQL> create undo tablespace undotbs1 datafile ‘E:\APP\WOLIHAITO\ORADATA\ORCL\UND
OTBS01.DBF’ size 100m
2 autoextend on;

表空间已创建。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

删除pfile中添加的参数

SQL> startup mount pfile=‘E:\recover_\pfile.ora’;
ORACLE 例程已经启动。

Total System Global Area 855982080 bytes
Fixed Size 2286032 bytes
Variable Size 549457456 bytes
Database Buffers 297795584 bytes
Redo Buffers 6443008 bytes
数据库装载完毕。
SQL> alter database open;

数据库已更改。

关于:
undo_management = ‘MANUAL’
rollback_segments = ‘SYSTEM’

查看数据库中的回滚段:
sql>select segment_name,owner,tablespace_name,segment_id,file_id from dba_rollback_segs;
在这里插入图片描述

如果我们要指定事务使用某个回滚段,如下
SQL> set transaction use rollback segment SYSTEM;

SYSTEM Undo Segment
SYSTEM 回滚段是创建在系统表空间中,主要是用于系统级的事务和分配普通事务于其他回滚段上。当手工创建数据库后需要创建普通回滚段之前必须首先创建系统回滚段。按照oracle文档说明,当普通事务异常多的事情可能会出现使用系统回滚段的情况。但正常情况下,系统回滚段主要用于两个方面。一是系统事务,比如针对数据字典的操作的truncate table 和 drop table 。如果truncate table or drop table 的过程中没有成功,则系统会根据系统回滚段中的数据字典操作信息对该DDL操作进行回退。另一个方面,就是延迟回滚段(Deferred Rollback Segment)。延迟回滚段表示的是,当我们使一个表空间OFFLINE(exeample: alter tablespace users offline)之后,由于表空间不可用(不能进行读写),这个时候若有事务数据位于该表空间并且执行了回滚命令,回滚完成将显示给client,对于client看起来该事务已经回滚,但是对于数据库来说该回滚并没有真正完成,这个时候数据库将该回滚信息写入系统回滚段(这就是延迟回滚段),等表空间重新ONLINE的时候,数据库从系统回滚段中将回滚信息写入表空间。

NON SYSTEM Undo Segment
据库拥有多个表空间时需要至少一个非系统的手工模式重做段或者自动模式的重做表空间.

undo_management设置为auto与manaul的区别

欢迎关注我的公众号
这是一个专注写Oracle,mysql,python,shell,cloud 的小公号。欢迎交流沟通
在这里插入图片描述


版权声明:本文为wolihaito原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。