ORA-600(qerltcInsertSelectRop_bad_state)错误
来源于: http://blog.itpub.net/22458783/viewspace-615501/
这是碰到的第一个11.2上的bug,在利用IGNORE_ROW_ON_DUPKEY_INDEX提示执行插入时,很可能碰到这个错误。
测试版本11.2.0.1 for Linux X86-64:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
建立一个测试表:
SQL> CREATE TABLE T
2 (ID NUMBER,
3 NAME VARCHAR2(30),
4 CONSTRAINT PK_T PRIMARY KEY (ID));
表已创建。
SQL> INSERT INTO T
2 VALUES (100, 'TEST');
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> INSERT INTO T
2 SELECT ROWNUM, OBJECT_NAME
3 FROM DBA_OBJECTS
4 ;
INSERT INTO T
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (YANGTK.PK_T)
SQL> INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T(ID)) */
2 INTO T
3 SELECT ROWNUM, OBJECT_NAME
4 FROM DBA_OBJECTS
5 ;
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T(ID)) */
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []
显然是由于使用IGNORE_ROW_ON_DUPKEY_INDEX提示引起了错误的产生。查询METALINK没有找到任何关于这个错误的描述。这也难怪,比较11.2才出来的时间不长,估计还没有什么人碰到这个bug。不过Oracle的测试人员没有测试到这个新特性的bug不太应该。
在alert文件中,这个错误信息如下:
Errors in file /data/oracle/diag/rdbms/test112/test112/trace/test112_ora_23223.trc (incident=2401):
ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []
Incident details in: /data/oracle/diag/rdbms/test112/test112/incident/incdir_2401/test112_ora_23223_i2401.trc
对应的trace信息:
*** 2009-09-24 19:05:35.981
*** SESSION ID:(130.13965) 2009-09-24 19:05:35.981
*** CLIENT ID:() 2009-09-24 19:05:35.981
*** SERVICE NAME:(SYS$USERS) 2009-09-24 19:05:35.981
*** MODULE NAME:(SQL*Plus) 2009-09-24 19:05:35.981
*** ACTION NAME:() 2009-09-24 19:05:35.981
Incident 2401 created, dump file: /data/oracle/diag/rdbms/test112/test112/incident/incdir_2401/test112_ora_23223_i2401.trc
ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []
详细错误信息为:
*** 2009-09-24 19:05:35.982
*** SESSION ID:(130.13965) 2009-09-24 19:05:35.982
*** CLIENT ID:() 2009-09-24 19:05:35.982
*** SERVICE NAME:(SYS$USERS) 2009-09-24 19:05:35.982
*** MODULE NAME:(SQL*Plus) 2009-09-24 19:05:35.982
*** ACTION NAME:() 2009-09-24 19:05:35.982
Dump continued from file: /data/oracle/diag/rdbms/test112/test112/trace/test112_ora_23223.trc
ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []
========= Dump for incident 2401 (ORA 600 [qerltcInsertSelectRop_bad_state]) ========
*** 2009-09-24 19:05:35.984
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=81hhzbq7z7skv) -----
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T(ID)) */
INTO T
SELECT ROWNUM, OBJECT_NAME
FROM DBA_OBJECTS
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skdstdst()+36 call kgdsdst() 000000000 ? 000000000 ?
7FFFF5EB1E08 ? 000000001 ?
7FFFF5EB6308 ? 000000000 ?
ksedst1()+98 call skdstdst() 000000000 ? 000000000 ?
7FFFF5EB1E08 ? 000000001 ?
000000000 ? 000000000 ?
ksedst()+34 call ksedst1() 000000000 ? 000000001 ?
7FFFF5EB1E08 ? 000000001 ?
000000000 ? 000000000 ?
dbkedDefDump()+2736 call ksedst() 000000000 ? 000000001 ?
7FFFF5EB1E08 ? 000000001 ?
000000000 ? 000000000 ?
ksedmp()+36 call dbkedDefDump() 000000003 ? 000000002 ?
7FFFF5EB1E08 ? 000000001 ?
000000000 ? 000000000 ?
ksfdmp()+64 call ksedmp() 000000003 ? 000000002 ?
7FFFF5EB1E08 ? 000000001 ?
000000000 ? 000000000 ?
dbgexPhaseII()+1764 call ksfdmp() 000000003 ? 000000002 ?
7FFFF5EB1E08 ? 000000001 ?
000000000 ? 000000000 ?
dbgexProcessError() call dbgexPhaseII() 2AAAAC2EF6F0 ? 2AAAAC2F03F0 ?
+2279 7FFFF5EBE0F8 ? 000000001 ?
000000000 ? 000000000 ?
测试发现,不管IGNORE_ROW_ON_DUPKEY_INDEX的哪种写法,都会引发这个600错误,但是如果插入数据量小的话,可能并不会引发错误:
SQL> INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T(ID)) */
2 INTO T
3 SELECT ROWNUM, OBJECT_NAME
4 FROM DBA_OBJECTS
5 WHERE ROWNUM <= 200;
已创建199行。
SQL> ROLLBACK;
回退已完成。
SQL> INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T(ID)) */
2 INTO T
3 SELECT ROWNUM, OBJECT_NAME
4 FROM DBA_OBJECTS
5 WHERE ROWNUM <= 1000;
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T(ID)) */
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []
可以看到,如果插入200条记录,则不会报错。如果插入的数据量达到1000,则会引发ORA-600错误。
进一步测试发现,如果插入行数超过255,就会报错,看来应该是某个变量超过了上限导致的错误。
SQL> INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T, PK_T) */
2 INTO T
3 SELECT *
4 FROM T1
5 WHERE ROWNUM <= 250;
已创建249行。
SQL> INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T, PK_T) */
2 INTO T
3 SELECT *
4 FROM T1
5 WHERE ROWNUM <= 255;
已创建5行。
SQL> INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T, PK_T) */
2 INTO T
3 SELECT *
4 FROM T1
5 WHERE ROWNUM <= 256;
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(T, PK_T) */
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []
转载于:https://www.cnblogs.com/ys-wuhan/p/5983786.html
ORA-600(qerltcInsertSelectRop_bad_state)错误相关推荐
- oracle创建orcl失败,prcr-1079:failed to start resource ora.orcl.db错误的解决办法
使用DBCA创建数据库,到90%多的时候就报错 prcr-1079:failed to start resource ora.orcl.db CRS-2674:start of 'ora.orcl.d ...
- ORA 各种oraclesql错误
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020 ...
- 2011年2月15日到福州
2011年2月15日到福州,到今天为止已经两天的时间了,问题整理下: 1.广西datastage安装,由于服务器中/ETC/HOST文件,主机名和IP地址对应错误问题,导致datastage无法编译, ...
- ORACLE全部ORA错误收集整理
有时数据库出现问题,不是每次都有网络可查,所以把所有的ora系列的错误整理出来, 在最没有办法的时候,需要自己来解决,有了这些根据,问题会好办的.虽说对于数据库方面, DBA很强大,他们在遇到错误时, ...
- oracle错误15260,【案例】Oracle报错ORA-00600 2663 产生的原因和解决办法
天萃荷净 运维DBA反映Oracle数据库恢复时遇到ORA-00600 2663,通过结合MOS分析该ora 600错误,分析原因为SCN异常导致. 联系:手机(+86 13429648788) QQ ...
- 错误诊断:索引数据错误导致ORA-00600 [kdsgrp1]处理
墨墨导读:客户反应一套数据库alert日志报ORA-00600 [kdsgrp1],需要定位问题原因. 问题分析 alert日志报错如下: Errors in file /home/app/oracl ...
- ORA-00600错误一例
ORA-00600错误一例,一个SQL运行时报ORA-00600的错误. 英文错误信息: ORA-00600: internal error code, arguments: [qkeAddDepen ...
- 新员工培训环境准备中,碰见的两个ORA-600错误
下周要为新员工介绍Oracle数据库,为了让课程更接地气,准备了虚拟机环境,用于实验和练习,在此过程中出现了两个ORA-600的错误,偶然中又有必然,记录于此. 操作过程: 1. 我在MAC上创建完成 ...
- 关系型数据库Oracle之RMAN备份ORA-19625等错误解决办法
事情是这样的,上周六中午刚要出去吃饭,便看到微信群里备份工程师的微信消息,说某套环境备份失败,让 DBA 检查下环境,我猜想这不是什么大问题,便不慌不忙的登陆到服务器上,打开备份的日志查看,果然不是什 ...
最新文章
- linux服务器之LVS、Nginx和HAProxy负载均衡器的对比
- 不支持图形化界面的Linux系统如何显示图像化界面?飞腾服务器显示图像化界面方法,DISPLAY environment variable is undefined问题解决方法
- 关于ES6的10个最佳特性
- python 课堂笔记-for语句
- 創建oracle用戶及表空間,window,linux下創建oracle用戶及表空間 對比 易於學習
- BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
- 又拍云 php,GitHub - NoDurex/php-sdk: 又拍云存储PHP SDK
- 微软斥资 260 亿美元收购了 LinkedIn 后却无所作为?
- [转] 英文写作中分号和冒号的使用
- 遥感影像公开数据集:deepglobe-road-dataset
- ORA-20011: Approximate NDV failed: ORA-06564: object EXPDDDP does not exist
- 计算机文件丢失不能正常启动,电脑说文件丢失或损坏开不了机怎么办?
- Android 网页无法打开 net:ERR_UNKNOWN_URL_SCHEME
- 恶趣味程序之《徒有其表》
- python图片切割以及识别图片中的文字
- 搜索中常见数据结构与算法探究(二)
- c# 实现WebSocket
- 【WC2010】重建计划(分数规划+长链剖分)
- 通过梦网科技平台接口实现网页验证码校验功能
- Sui Builder House香港站|闭幕式晚宴现开放报名!