`

Oracle ORA-600[4193] 解决方法 说明

 
阅读更多

ORA-600[41XX] 这种错误基本都于UNDO 有关系。关于ORA-600参数的更多说明,参考我的Blog:

ORA-600 各个参数含义说明

http://blog.csdn.net/tianlesoftware/article/details/6645809

ORA-600[4193] 这个错误也是与UNDO 有关系,MOS 上有几篇相关的说明文章.

一.MOS说明

1.1 ORA-600 [4193] WhenTrying To Open The Database [ID 763566.1]

Symptoms

Copying databasefrom one server to another server and getting an ORA-600 [4193] error whentrying to open the database on the destination server.

--copy 数据库从一个server 到另一个server 后,尝试打开时报这个错误。

Cause

The online redologs were copied when the source database was open,online redo logsshould never be copied when the database is open.

--导致原因是因为在数据库open时把online redo logs 也一起copy 过去了。 在数据库open状态,online redo log 不应该copy。

Solution

In this instancethe datafiles were being copied properly after the tablespaces were put in tobackup mode, however, online redo logs should only be copied if the sourcedatabase is shutdown first before copying the online redo logs. Thesource database needed to remain open so, the datafiles were copied again (withthe tablespaces in backup mode) and then a number of archivelogs weretransferred over to the new server and after the last archivelog was appliedthe database could be opened with resetlogs and new online redo logs werecreated on the destination server.

--当表空间被设置为backup 模式之后,可以copy 数据文件,但是onlineredo log 只能是在数据库shutdown 之后才能copy,如果数据库一直是open 状态,那么只能把datafile copy 过去,然后把归档文件传送过去,最后用openresetlogs的方式打开数据库,在open时online redo log 会自动重建。

1.2 Ora-600 [4193] WhenOpening Or Shutting Down A Database [ID 452662.1]

1.2.1 Symptoms

Errors in alert.log:

TueJul1713:38:132007
Errorsinfile/home/oracle/oracle/product/10.2.0/yms/rdbms/log/yms_smon_8337.trc:
ORA-00607:Internalerroroccurredwhilemakingachangetoadatablock
ORA-00600:internalerrorcode,arguments:[4193],[3552],[3554],[],[],[]


yms_smon_8337.trc:

SO:0xdfaec728,type:24,owner:0xdf266580,flag:INIT/-/-/0x00

(buffer)PR:0xdf1f1338FLG:0x1000
classbit:0x80000
kcbbfbp:[BH:0xded4bf40,LINK:0xdfaec768]
kcbbfbx[0]:[BH:0xdece41d8,LINK:0xdfaec788]
where:ktuwh01:ktugus,why:0
buffertsn:2rdba:0x00c00002(3/2)
scn:0x0000.03c95628seq:0x01flg:0x00tail:0x56280e01
frmt:0x02chkval:0x0000type:0x0e=KTUUNDOHEADERW/UNLIMITEDEXTENTS
BH(0xdece41d8)file#:3rdba:0x00c003b6(3/950)class:20ba:0x11d6ba000
set:6blksize:8192bsi:0set-flg:0pwbcnt:0
dbwrid:0obj:-1objn:0tsn:2afn:3
hash:[df870f70,df870f70]lru:[dece4488,dece4028]
obj-flags:object_ckpt_list
ckptq:[dedac4a0,ded47cb8]fileq:[dedac500,ded47cc8]objq:[ded47d78,db7bfd78]
use:[dfaec788,dfaec788]wait:[NULL]
st:XCURRENTmd:EXCLtch:0
flags:mod_startedgotten_in_current_modeblock_written_once
changestate:ACTIVE
changecount:1
LRBA:[0xac3.4de07.0]HSCN:[0xffff.ffffffff]HSUB:[65535]
UsingStateObjects
----------------------------------------
SO:0xdfaec728,type:24,owner:0xdf266580,flag:INIT/-/-/0x00
(buffer)PR:0xdf1f1338FLG:0x1000
classbit:0x80000
kcbbfbp:[BH:0xded4bf40,LINK:0xdfaec768]
kcbbfbx[0]:[BH:0xdece41d8,LINK:0xdfaec788]
where:ktuwh01:ktugus,why:0
buffertsn:2rdba:0x00c003b6(3/950)
scn:0x0000.03be3c7dseq:0x5aflg:0x04tail:0x3c7d025a
frmt:0x02chkval:0x0868type:0x02=KTUUNDOBLOCK
----------------------------------------
Error607inredoapplicationcallback
TYP:0CLS:20AFN:3DBA:0x00c003b6OBJ:4294967295SCN:0x0000.03be3c7dSEQ:90OP:5.1
ktudbredo:siz:132spc:4462flg:0x0012seq:0x0de2rec:0x09

UNDO BLK:
xid: 0x0002.045.00006c61seq:0xde0cnt: 0x60 irb: 0x60 icl: 0x0 flg: 0x0000

1.2.2 Cause

When we try toapply redo to an undo block (forward changes are made by the applicationof redo to a block) we check that the seq# in the undo record matches theseq# in the redo record.

--数据库在启动时需要进行一个前滚的操作,在前滚时会应用redo 到undo block上,操作时会检查undorecord里的seq#和 redo record里的seq#.

These seq#should be the same because when we apply a redo record we must apply itto thecorrect version of the block.

--正常情况下,这2者的seq# 应该是一致的。

We can onlyapply a redo record to a block that contains the same seq# as in the redorecord.

--在一致的情况下,我们才应用redo record 到undo record。

If the seq# do not match then ORA-600[4193][a].[b] is raised. .

Arg [a] Undorecord seq number --> seq: 0xde0 = 3552
Arg [b] Redo record seq number --> seq:0x0de2 = 3554

--如果不一致就会出现ORA-600[4193][a][b]的错误。其中a 是undo 里的seq#记录,b是redo 里的seq# 值。 这里的值都是十六进程,我们可以通过to_number() 这个函数来转换一下:

SYS@anqing1(rac1)> Select to_number('de0','xxxx') from dual;

TO_NUMBER('DE0','XXXX')

-----------------------

3552

This implies some kind of block corruptionin either the redo or the undo block.

--当redo record 和 undo record 不一致时,就会抛出ORA-600[4193]的错误。

相关的文章参考:

Oracledatafile block 格式 说明

http://blog.csdn.net/tianlesoftware/article/details/6654786

Oracle 实例恢复时 前滚(roll forward) 后滚(roll back) 问题

http://blog.csdn.net/tianlesoftware/article/details/6286330

1.2.3 Solution

1.2.3.1 If Database is opened:

--在db open 状态下,解决的方法如下:

1) Find out the rollback segment, based onthe first part of the xid: 0x0002.045.00006c61

usn=2 is the segment_id

selectsegment_name,status from dba_rollback_segs where segment_id=2;

RS_DATA1ONLINE

2) Dump the transaction table of the rollbacksegment to see if all TX are commited:

alter system dump undoheader RS_DATA1;

Oracle dumpundo 说明

http://blog.csdn.net/tianlesoftware/article/details/6672417

3) check the trace file created underuser_dump_dest

In the trace filesearch for the Keyword "TRN TBL"

TRNTBL::

indexstatecflagswrap# uelscndba
-----------------------------------------------------------------------------
0x00 9 0x000x21eb10x00230x0000.d28c43e90x00000000......

state=9 means transaction is committed

4) offline the rollback segment:

alter rollbacksegment rs_data1 offline;
select status from dba_rollback_segs wheresegment_id=2;

5) if STATUS=OFFLINE

droprollback segment RS_DATA1;

1.2.3.2 If Database doesn't open:

--如果数据库不是open状态,处理方法如下:

1. a) If using rollbacksegments, remove the rollback_segments line from init.ora, and open database

b) If usingundo segments set undo_management = manual in init.ora/spfile, and try to opendatabase.

2. If database opens means all transactionsare committed, and you can drop the rollback segment or the undo tablespace

1.3 bug 导致的ORA-600[4193]

MOS:

ORA-600 [4193] "seq# mismatch whileadding undo record" [ID 39282.1]

Bug 8240762 - Undo corruptions with ORA-600[4193]/ORA-600 [4194] or ORA-600 [4137] [ID 8240762.8]

Undo corruptionmay 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 newtransactions

ORA-600 [4137] for a transaction rollback

Undo segment shrink is internally done by Oracle.

--undo shrink 导致的undo corruptions

Workaround

Drop the undo segment.

Affects:

Product (Component)

Oracle Server (Rdbms)

Range of versionsbelievedto be affected

Versions >= 10.2 but BELOW 11.2

Versionsconfirmedas being affected

Platforms affected

Generic (all / most platforms affected)

Fixed:

This issue is fixed in

在Oracle 10.2 以上到11.2 的DB 会受Bug 8240762的影响导致undo 的corruption。在10.2.0.5 中已经修复了这个bug。如果出现这种问题,drop 对应的undo segment 即可。

二. 小结

在第一部分列出了官方的一些解释,这里总结一下。

在启动数据库时会先进行一个forward 的操作,这时候会应用一些redo record 到undo block里,在apply 之前会先检查这2个block里面的seq#值,如果一致则ok,不一致,就会出现ORA-600[4193]的错误。

ORA-600[4193]的格式是:ORA-600[4193] [a].[b] :

Arg [a] Undorecord seq number --> seq: 0xde0 = 3552
Arg [b] Redo record seq number --> seq:0x0de2 = 3554

参数A 是undo 里的seq#, 参数B是redo 里的seq#值,这个值可以从trace里也查看,也可以直接dump 对应的块:

Oracle DumpRedo Log File 说明

http://blog.csdn.net/tianlesoftware/article/details/6670962

Oracle dumpundo 说明

http://blog.csdn.net/tianlesoftware/article/details/6672417

Oracledatafile block 格式 说明

http://blog.csdn.net/tianlesoftware/article/details/6654786

dump 出来的seq值是十六进制的,可以使用to_number 函数转换:

SYS@anqing1(rac1)> Select to_number('de0','xxxx') from dual;

TO_NUMBER('DE0','XXXX')

-----------------------

3552

导致ORA-600[4193]的错误原因,MOS 上提到了2个:

1.在DB open状态下复制了online redo log。

在open 状态下的复制,不能复制onlien redo log,而应复制归档,然后用open resetlogs,这样onlineredo log 会自动重建。

2.BUG 8240762 --shrink undo

ORA-600 [4193] /ORA-600 [4194] for new transactions

ORA-600 [4137] for a transaction rollback

这个bug 存在于Oracle 10.2.0.3,10.2.0.4 以及11gR1的版本里。

出现这种问题的解决方法是重建UNDO 表空间,现在使用SYSTEM下rollbacksegment 的系统基本是没有了。

在下面的Blog里列举了2种重建UNDO 的方法,这里列一种:

Currentonline Redo 和 Undo 损坏的处理方法

http://blog.csdn.net/tianlesoftware/article/details/6261475

(1)用spfile创建pfile,然后修改参数:

#*.undo_tablespace='UNDOTBS1'

#*.undo_management='AUTO'

#*.undo_tablespace

#*.undo_retention

undo_management='MANUAL'

rollback_segments='SYSTEM'

(2)用修改之后的pfile,重启DB

SQL> STARTUP MOUNTpfile='F:/initorcl.ora' ;

(3)删除原来的表空间,创建新的UNDO表空间

SQL> drop tablespace undotbs;

SQL> create undo tablespace undotbs1datafile '/u01/oradata/undotbs1.dbf' size 10M;

(4)关闭数据库,修改pfile参数,然后用新的pfile创建spfile,在正常启动数据库。

*.undo_tablespace='UNDOTBS1'

*.undo_management='AUTO'

#undo_management='MANUAL'

#rollback_segments='SYSTEM'

有关UNDO 表空间的更多说明,参考:

Oracle undo 管理

http://blog.csdn.net/tianlesoftware/article/details/4901666

Oracle undo 表空间管理

http://blog.csdn.net/tianlesoftware/article/details/5689558

-------------------------------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Email: tianlesoftware@gmail.com

Skype: tianlesoftware

Blog: http://www.tianlesoftware.com

Weibo: http://weibo.com/tianlesoftware

Twitter: http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

-------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)

DBA 超级群:63306533(满); DBA4 群:83829929 DBA5群: 142216823

DBA6 群:158654907 DBA7 群:172855474 DBA总群:104207940

分享到:
评论

相关推荐

    关于WIN10系统配置了环境变量后oracle instant client后依然提示ORA-01019错误的解决方案

    关于WIN10系统使用oracle instant client 时候提示ORA-01019错误的解决方案,本方案是配置好环境变量后依然提示ORA-01019错误的解决方案,内附本人制作测试的全过程说明

    oracle错误及解决方法

    oracle错误及解决方法 所有ORA错误说明 及 解决方案 大全啊大全

    Oracle Database Error Messages 11g Release 2 11 2

    我们操作oracle数据时经常会报一些错误,如ora-00001,imp-00000等。那么这些错误信息是什么意思,又有什么解决办法呢。本文档可查询这些错误的简单原因(Cause),及建议我们能做些什么(Action)。 注:本文档是纯...

    plsql连接oracle数据库报ora 12154错误解决方法

    plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错”ORA-12154: TNS: 无法解析指定的连接标识符” 解决方法如下: 1.先检查服务器端的...

    oracle patch scn--修改oracle scn工具(oracle异常恢复利器)

    oracle scn修改工具,可以直接修改oracle scn,在极端情况下恢复使用,比如解决ORA-600 2662等类似错误,使用说明:https://www.xifenfei.com/2022/06/win-oracle-scn-patch.html

    Oracle常见错误诊断

    ORACLE的这类错误在ORALCE的文档中有详细说明,但原因及措施说明不详细,本文当着重说明如何解决这类错误。  1、ORA-12571、ORA-03113、ORA-03114、ORA-01041  特征:客户端(代理或应用服务器)有时报这类断连错误 ...

    解决[Navicat] 连接Oracle报错

    解决[Navicat] 连接Oracle报错_Cannot load OCI DLL 87,解压到你的电脑后,根据附带的说明文档配置.

    instantclient-basic-windows.x64-19.6.0.0.0dbru.rar

    但是12C以下的客户端访问ORACLE时报错:ora-24920列大小对于客户机过大,说明字段VARCHAR2超过4000,或者NVARCHAR2长度超过2000,替换nstantclient-basic-windows.x64-19.6.0.0.0dbru即可解决该问题,无需安装解压...

    Oracle ORA-22908(NULL表值的参考)异常分析与解决方法

    场景如下:–创建类型(type)create or replace type list_obj is table of number;–创建表结构create table test( name varchar2(30) primary key ...场景说明:类型 list_obj 相当一个元素为数字的列表。表 test 有三

    Oracle数据库异构服务原理及实例说明

    异构服务是集成在Oracle 8i数据库软件中的功能,它提供了从Oracle数据库访问其他非...异构服务扩展了Oracle数据库连接异种数据源的能力,加强了企业数据的整合,是一个快速有效经济地整合企业内部异构数据的解决方案。

    oracle errors (oracle 错误)

    介绍了Oracle错误的基础知识、各种错误出现的原因、连接数据库时可能出现的错误信息以及识别和解决错误的方法多方面的内容

    Oracle与Mysql表相互转化工具及问题说明

    其中有个文档简单描述了在Oracle为64位情况下,工具连接oracle时会出现oci.dll找不到或者ora-12514的错误。 这需要oracle客户端支持。 但是工具并不能完全解决问题,有些数据类型会转化为我们不期望的类型,比如: ...

    oracle恢复工具-FY_Recover_Data

    最近至少看到二次错误地截断(Truncate)表的例子, 并在网上询问如何恢复, 在这儿我给出AUL/MyDUL的解决方案, 下面是我用的一个测试表: ASQL> DESC TRUNCDEMO NO# NAME NULLABLE TYPE --- ----------------- ----...

    Oracle DBA 手册

    5、 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决 3 6、 完全卸载oracle的过程 4 7、 数据库服务的启动 4 8、 配置oracle内存 5 9、 查看Oracle版本号 5 10、 数据导入、导出 5 ...

    linux系统oracle数据库出现ora12505问题的解决方法

    说明: (1)Linux版本 Linux version 2.6.32.12-0.7-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP 2010-05-20 11:14:20 +0200 1.查看数据库是否已经启动...

    [手工整理]208个Oracle安装文档,包含各个平台各个版本的单实例RAC以及DataGuard(1).xlsx

    97 Oracle 迁移至 PostgreSQL 在华为 ARM 上的解决方案 98 Oracle 数据库隐含参数设置 99 Oracle 隐含参数 100 Oracle 诊断事件及深入解析10053事件 101 OS deploying-odg-with-oda-1615029 102 OS IBM AIX ...

    Navicat连接Oracle数据库,版本不一致到导致错误问题解决,附带有使用说明,操作简单

    Navicat连接Oracle数据库,出现错误,例如:“ORA-28547: connection to server failed, probable Oracle Net admin error”,采用资源instantclient_12_1中的oci.dll文件替换可解决,附带有使用说明,操作简单

    delphi与ORACLE数据库连接控件odac

    delphi与ORACLE数据库连接控件odac 安装说明 1.找到ODAC_5.70.0.30_FS\Source\Delphi7. 2.Make.bat右键编辑,填入delphi7安装路径. 3.然后运行Make.bat生成bpl文件. 注意: 在安装的时候会出现一个错误: [Fatal ...

    oracle物化视图_循序渐进学习笔记

    物化视图学习笔记 错误问题分析总结 详细讲解了物化视图的内部构造,从零基础开始学习 重点说明ORA-12034的错误解决方案

Global site tag (gtag.js) - Google Analytics