专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

ORA-00600 「25027」 「x」报错(抱错孩子电视剧 爸爸是武术 另一个爸爸是画家)

ins518 2025-07-24 18:22:06 技术文章 11 ℃ 0 评论

问题现象:
在用到LOB大对象的业务中,进行数据的插入,失败了,在报警文件中报错:
ORA-00600: 内部错误代码, 参数: [25027], [10], [0], [], [], [], [], [], [], [], [], [] at
System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) at
System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) at
System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor) at
System.Data.OracleClient.OracleCommand.ExecuteNonQuery()

环境:
ORACLE 11.2.0.4+REDHAT LINUX 6.4

问题原因:

该问题是由于Oracle的一个bug导致(参考文档 ID 1608861.1),是由于含有LOB字段的表在插入数据时,一个块(Block)在ASSM metadata L1 bitmap block中被标示为格式化的,但是在LOB段中被标识为未格式化的。

ORA-00600[25027][x][0] 中的x表示的是该LOB字段所在的表空间的ts#,即表空间号,第三个参数[0]可能并不总是0 (zero).

可以使用
DBMS_SPACE_ADMIN.ASSM_SEGMENT_VERIFY 存储过程,使用verify_option=>
DBMS_SPACE_ADMIN.SEGMENT_VERIFY_SPECIFIC and attrib=>
DBMS_SPACE_ADMIN.BITMAPS_CHECK来验证。

解决方法:

1.将表export导出,drop表,再imp进去

2.对lob段做move到新的表空间

Alter table tbName move lob(&lob_column) store as (tablespace &tbsp);

3.patch 18024115 & alter system set "_fix_control"='18024115:ON';


由于表太大,上100G以上,通过打补丁18024115解决。


参考 :ORA-00600 [25027] [x] [0] Raised by Insert into LOB (Doc ID 1608861.1)


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表