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], [], [], [], [], [], [], [], [], [], [], []
ORA-600(qerltcInsertSelectRop_bad_state)错误的更多相关文章
- ORA 各种oraclesql错误
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
- 记录一则ORA-600 [13011]错误
环境:Solaris 10 + Oracle 11.2.0.1 现象:alert告警日志定期出现ORA-600 [13011]错误 1.故障现象 2.初步分析 3.匹配MOS 4.定位解决 1.故障现 ...
- <转>ORA-06413 连接未打开错误
ORA-06413 Connection not open.Cause: Unable to establish connection.Action: Use diagnostic procedure ...
- Oracle的常见错误及解决办法
ORA-12528: TNS:listener: all appropriate instances are blocking new connections ORA-12528问题是因为监听中的服务 ...
- 【Oracle错误集锦】:ORA-00119 & ORA-00132
有时候老天就是爱和你开玩笑,昨天好不easy配置好Oracle.可以用PL/SQL正常登录使用,今天突然就不行了.而且错误十分诡异,没有提示什么错误代码.输入usernamepassword,点击登录 ...
- 数据库报ORA-00600: 内部错误代码, 参数: [17059],并产生大量trace日志文件
用户反馈数据库服务器磁盘空间使用耗尽. 登录服务器后查看,发现数据库产生大量的trace日志,并在alert日志中发现ora-600错误 alert日志信息: Fri Jul :: Errors ): ...
- ORA-00600: 内部错误代码, 参数: [kqlnrc_1]
如以下的错误: Mon Mar 31 18:45:59 2014 Errors in file /oracle/app/oracle/diag/rdbms/zscims/zscims2/trace/z ...
- OCA读书笔记(18) - 使用Support工具
调查和解决问题 问题:数据库中的任一严重的错误定义为一个问题,一般来说,这些错误包括大家熟悉的ORA-600错误和ORA-04031(共享池超出)错误,涉及数据库问题的所有元数据都存储在ADR中,每个 ...
- ORA-00600 [kollasg:client-side tmp lob]
今天在查看一个库的日志时,发现被ORA-00600 [kollasg:client-side tmp lob] 错误刷屏了. 发生该错误的原因是由于应用那边lob的问题.lob没有被初始化,建议使用E ...
随机推荐
- KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- VS2010最常用快捷键
1.选择类 F8 当前位置变成选定区域的头/尾(再移动光标或者点鼠标就会选定) Ctrl + F8 当前行变成选定区域的头/尾(再移动上下光标或者点鼠标就会选定多行) CTRL + W 选择当前单词 ...
- 使用Bootstrap v3.3.4注意细节box-sizing
一.bootstrap样式 在Bootstrap v3.3.4中有下面一条重置样式: * { -webkit-box-sizing: border-box; -moz-box-sizing: bord ...
- Caffe CNN特征可视化
转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 以下部分代码是根据caffe的python接口,从一次forwo ...
- 08章 分组查询、子查询、原生SQL
一.分组查询 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...
- 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作
作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...
- cache缓存
缓存分为:数据缓存,页面缓存,内存缓存(memcache,redis) ob,输出缓冲区,是output buffering的简称 FileCache.php <?php //本文件用来存储和读 ...
- MySQL注射的过滤绕过技巧[1]
SQL注射的绕过技巧较多,此文仅做一些简单的总结. 前文已经提到,最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可 ...
- git删除文件需要注意的事项
当commit提交一个文件a到本地仓库中,然后又git rm a 删除这个文件(),再执行git push后,同样会把a文件push到远程仓库.并且这个时候执行git pull并不会从远程仓库拉取a文 ...
- 阿里云日志api创建logStore
, shardCount = }); string date = FormatRfc822Date(time); string con ...