我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用ROWNUM解决 ORA-00600:内部错误代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用ROWNUM解决 ORA-00600:内部错误代码

开发人员在执行语句执行是报ORA-00600:内部错误代码

语句如下

create   tablesytab01   as
select    a.*  from tab1 c,
( select b.*  from tab2 s,
select a.*,row_number()over( partition  by cl  order by cl_name ) rn
     from tab3 a  wherea.area_no= 'aa'
    ) a
where  trim(s.home_cl)= trim(a.cl)  and rn= '1'   and
   month= '201703'
and s.area = 'aa'
)b
where c.user_no = b.user_no

数据库版本如下:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bitProduction

With the Partitioning, Real Application Clusters, Automatic StorageManagement, OLAP,

Data Mining and Real Application Testing options

数据库日志报如下错误:

*** 2017-03-23 17:59:14.729

*** SESSION ID:(2191.15425) 2018-04-23 17:59:14.729

*** CLIENT ID:() 2018-04-23 17:59:14.729

*** SERVICE NAME:(hbdw) 2018-04-23 17:59:14.729

*** MODULE NAME:(PL/SQL Developer) 2018-04-23 17:59:14.729

*** ACTION NAME:(SQL  窗口 - 新建) 2018-04-23 17:59:14.729

Incident 258636 created, dump file:/u01/app/oracle/diag/rdbms/hbdw/hbdw1/incident/incdir_258636/orcl1_ora_11899_i258636.trc

ORA-00600:  内部错误代码, 参数: [rwoirw: check ret val], [], [], [], [], [], [], [], [], [], [],[]

此incdir_258636/orcl1_ora_11899_i258636.trc日志报错如下:

----- Call Stack Trace -----

calling              call     entry                argument values in hex     

location             type     point               (? means dubiousvalue)    

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

skdstdst()+41        call     kgdsdst()            000000000 ? 000000000 ?

                                                  7FFFFFFEBC30 ? 7FFFFFFEBD08 ?

                                                  7FFFFFFF07B0 ? 000000002 ?

ksedst1()+103        call     skdstdst()           000000000 ? 000000000 ?

                                                  7FFFFFFEBC30 ? 7FFFFFFEBD08 ?

                                                  7FFFFFFF07B0 ? 000000002 ?

ksedst()+39          call     ksedst1()            000000000 ? 000000001 ?

                                                  7FFFFFFEBC30 ? 7FFFFFFEBD08 ?

                                                   7FFFFFFF07B0 ?000000002 ?

dbkedDefDump()+2746  call     ksedst()             000000000 ? 000000001 ?

                                                  7FFFFFFEBC30 ? 7FFFFFFEBD08 ?

                                                  7FFFFFFF07B0 ? 000000002 ?

ksedmp()+41          call     dbkedDefDump()       000000003 ? 000000002 ?

                                                  7FFFFFFEBC30 ? 7FFFFFFEBD08 ?

                                                  7FFFFFFF07B0 ? 000000002 ?

因为由于是语句引起的,分析思路如下:

1. 看看只做查询有没有此问题。

select    a.* from tab1 c,

(select b.* from tab2 s,

( select a.*,row_number()over(partition by cl order by cl_name ) rn

    from tab3 a where a.area_no='aa'

    ) a

where trim(s.home_cl)=trim(a.cl) and rn='1' and

   month='201703'

and s.area ='aa'

)b

where c.user_no = b.user_no

有结果输出,查询正常

2. 从上边的结果可知,应该不是查询引起的问题。

突然想到难道是临时表的数量太多了导致的?然后尝试后面添加rownum< 1000; 手动执行create sql语句结果成功了。

3. 用rownum 解决此问题

想了一下,可能11.2.0.4里面对create tablexxx as select …. From …的限制比较严格(没有经过论证,也可能是个bug),意味着在不知道后面的select … from …的总体数量的情况下或者数量已经超过了oracle的默认值比如1000这样,会提示ORA-00600的错误。按照这个思路我查询出来select … from ..的总数量,在后面加上and rownum<6000;再次执行居然成功了。

  想了想按照测试的边界值理论,一个最大值能有结果,那就尝试下最小值,在条件上加and rownum>-1;(因为有可能select 出来空记录)呢?执行了一下居然成功,语句修改如下:

create  table sytab01  as
select    a.* fromtab1 c,
(select b.* from tab2 s,
( select a.*,row_number()over(partition by cl order by cl_name ) rn
    from tab3 a wherea.area_no= 'aa'
    ) a
where trim(s.home_cl)=trim(a.cl)and rn= '1'  and
   month= '201703'
and s.area = 'aa'
)b
where c.user_no = b.user_no

and rownum>-1 ;

4. 关于官方文档对ora-600的描述如下:

Bug 14275161 - ORA-600[rwoirw: check ret val] on CTAS with predicate move around ( 文档  ID 14275161.8)

使用ROWNUM解决 ORA-00600:内部错误代码

修改隐性参数:

在语句遇到600错误是,一般个人建议对语句进行改造,避免问题,

除非有比较多的语句影响到数据库。一般不建议对数据库做手术。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用ROWNUM解决 ORA-00600:内部错误代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

windows内部错误代码2502、2503无法安装或卸载软件怎么解决

这篇文章主要介绍了windows内部错误代码2502、2503无法安装或卸载软件怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows内部错误代码2502、2503无法安装或卸载软件怎么解决文章都
2023-04-14

怎么利用Debug调试代码解决0xC0000005错误

本篇内容介绍了“怎么利用Debug调试代码解决0xC0000005错误”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!VS2019利用Debu
2023-07-05

使用win7过程中出现错误1079代码故障的解决方法

在使用系统的时候难免会遇到各种故障,最近win7系统的用户在使用系统的时候,会出现错误1079的代码故障,win7系统1079代码故障是怎么回事呢? 原因分析: 该故障通常在由svchost服务宿主进程所启动的服务上发生。Windows X
2023-06-02

Ubuntu使用国内源出现Hash Sum mismatch错误的解决

我们在更新Ubuntu软件源为国内源(比如163)之后,update出现下面这样的错误:W: Failed to fetch bzip2:/var/lib/apt/lists/partial/mirrors.163.com_ubuntu_d
2022-06-04

win10应用商店提示错误代码0x80070422怎么解决

这篇文章主要介绍“win10应用商店提示错误代码0x80070422怎么解决”,在日常操作中,相信很多人在win10应用商店提示错误代码0x80070422怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-06-27

Ubuntu使用国内源出现Hash Sum mismatch错误如何解决

出现Hash Sum mismatch错误可能是由于软件包在下载过程中被修改或损坏引起的。解决该问题的方法如下:1. 清除软件包缓存:打开终端,运行以下命令: ```shell sudo apt clean ```2. 更新软件
2023-08-11

Win8应用程序下载错误代码0x80200024解释及解决方法

之前好多朋友提到过Windows 8下面使用应用的时候商店总会出现问题,最大的问题就是应用装不上,笔者一直没有遇到过这种情况,所以具体的信息不太了解,但最近自己也遇到了这种情况,最终解决了无法更新应用的问题。 首先是安装应用上面,如图,我要
2022-06-04

Win8.1无法安装应用显示错误代码0x80070005的解决方法

在使用Win8.1商店应用的过程中,有时会遇到应用提示“出现了问题,此应用无法安装。请再试一次。错误代码:0x80070005”,即使重新安装也无法安装的情况。出现这种情况一般是许可证未同步更新、SoftwareDi
2022-06-04

C++错误使用迭代器超出引用范围问题如何解决

这篇文章主要介绍“C++错误使用迭代器超出引用范围问题如何解决”,在日常操作中,相信很多人在C++错误使用迭代器超出引用范围问题如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++错误使用迭代器超出引
2023-07-05

编程热搜

目录