一次ORA-03113错误解决

----------------------------------------------------------------------------
-----------------ORA错误处理系列 By Cryking---------------------
------------------------转载请注明出处,谢谢!------------------------- 

原始SQL:

执行出现ORA-03113错误,网络正常,执行其他SQL也正常.

13:04:26 CRY@CRY> select operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsn
ame,' ' 期初数量,sum(irealnumber) irealnumber,DECODE(sum(irealnumber),0,0,round(sum(imoney)/sum(irea
lnumber),2)) iprice,sum(imoney) imoney,sum(orealnumber) orealnumber,DECODE(sum(orealnumber),0,0,roun
d(sum(omoney)/sum(orealnumber),2)) oprice,sum(omoney) omoney,' ' 结存数量 from( select to_char(x.ope
ratetime, 'YYYY-MM-DD') operatetime,x.billtype,
13:04:28   2         fun_getname('BILLTYPEALL',x.billtype) billtypename,
13:04:28   3         x.billid,x.remark,x.originbillid,
13:04:28   4         fun_getname('OPERATIONTYPE',x.otherinouttype) otherinouttypename,
13:04:28   5         x.shopcode,
13:04:28   6         f_getOrganiseName(x.shopcode) shopname,
13:04:28   7         x.storecode,
13:04:28   8         f_getStoreName(x.storecode) storename,
13:04:28   9          FUN_GETTOUNIT(x.billtype,x.billid) unitname,
13:04:28  10         x.goodscode,
13:04:28  11         X.goodsname,
13:04:28  12         x.ShortCode,x.brandcode,x.model,
13:04:28  13         x.irealnumber,
13:04:28  14         abs(DECODE(x.irealnumber,0,0,round(x.imoney/x.irealnumber,4))) iprice,
13:04:28  15         x.imoney,x.orealnumber,
13:04:28  16         abs(DECODE(x.orealnumber,0,0,round(x.omoney/x.orealnumber,4))) oprice,
13:04:28  17         x.omoney
13:04:28  18  from (
13:04:28  19  select a.operatetime,
13:04:28  20                 a.billtype,
13:04:28  21                 a.billid,fun_getbillremark(a.billid) remark,fun_getbilloriginbillid(a.b
illid) originbillid,
13:04:28  22                 a.otherinouttype,
13:04:28  23                 a.shopcode,
13:04:28  24                 a.storecode,
13:04:28  25                 a.goodscode,
13:04:28  26                 c.shortcode,c.brandcode,c.model,
13:04:28  27                 c.goodsname,
13:04:28  28                 sum(DECODE(b.ruleid,1,a.realnumber,2,-a.realnumber,0)) irealnumber,
13:04:28  29                 sum(DECODE(b.ruleid,1,
13:04:28  30                        round(a.realnumber * a.price,2),
13:04:28  31                       2,
13:04:28  32                        round(-1 * a.realnumber *a.price,2),
13:04:28  33                     0)) imoney,
13:04:28  34                 sum(DECODE(b.ruleid,2,a.realnumber,1,-a.realnumber,0)) orealnumber,
13:04:28  35                 sum(decode(b.ruleid,2,
13:04:28  36                        round(a.realnumber * a.price,2),
13:04:28  37                       1,
13:04:28  38                        round(-1 * a.realnumber * a.price,2),
13:04:28  39                     0)) omoney
13:04:28  40            from TAB_A a, TAB_B b,TAB_C c
13:04:28  41           where a.billtype = b.billtype
13:04:28  42               and a.goodscode=c.goodscode  and (a.shopcode = '0603')
13:04:28  43           group by a.operatetime,
13:04:28  44                    a.billtype,
13:04:28  45                    a.billid,
13:04:28  46                    remark,
13:04:28  47                    a.otherinouttype,
13:04:28  48                    a.shopcode,
13:04:28  49                    a.storecode,
13:04:28  50                    a.goodscode,
13:04:28  51                    c.shortcode,
13:04:28  52                    c.goodsname,c.brandcode,c.model
13:04:28  53  ) x
13:04:28  54  where x.billtype in (select billtype from t_billlist where ruleid>0) and
13:04:28  55     x.operatetime >= to_date('2013-6-17','YYYY-MM-DD')
13:04:28  56     and x.operatetime < to_date('2013-6-18','YYYY-MM-DD')
13:04:28  57  ) a  group by operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsname or
der by operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsname;
select operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsname,' ' 期初数量,sum(irealn
umber) irealnumber,DECODE(sum(irealnumber),0,0,round(sum(imoney)/sum(irealnumber),2)) iprice,sum(imo
ney) imoney,sum(orealnumber) orealnumber,DECODE(sum(orealnumber),0,0,round(sum(omoney)/sum(orealnumb
er),2)) oprice,sum(omoney) omoney,' ' 结存数量 from( select to_char(x.operatetime, 'YYYY-MM-DD') ope
ratetime,x.billtype,
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾
进程 ID: 20027
会话 ID: 201 序列号: 149


ERROR:
ORA-03114: 未连接到 ORACLE


已用时间:  00: 00: 02.01


 精简改SQL如下后报ORA-600错误:

13:07:18 CRY@CRY> SELECT operatetime
13:07:19   2    FROM (SELECT to_char(x.operatetime, 'YYYY-MM-DD') operatetime
13:07:19   3            FROM (SELECT operatetime FROM t_storeout GROUP BY operatetime) x
13:07:19   4           WHERE x.operatetime > to_date('2012-01-01', 'YYYY-MM-DD')) a
13:07:19   5   GROUP BY operatetime;
          FROM (SELECT operatetime FROM t_storeout GROUP BY operatetime) x
                                        *
第 3 行出现错误:
ORA-00600: 内部错误代码, 参数: [rwoirw: check ret val], [], [], [], [], [], [], [], [], [], [], []


已用时间:  00: 00: 01.68


分析此ORA-00600错误,发现是参数"_complex_view_merging"的影响,将此参数值设为FALSE后正常.

如是解决此ORA-00600错误后,此ORA-03113错误也就解决了,如下:

13:07:23 CRY@CRY> ALTER SESSION SET "_complex_view_merging"=false;

会话已更改。

已用时间:  00: 00: 00.01
13:08:43 CRY@CRY> select operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsn
ame,' ' 期初数量,sum(irealnumber) irealnumber,DECODE(sum(irealnumber),0,0,round(sum(imoney)/sum(irea
lnumber),2)) iprice,sum(imoney) imoney,sum(orealnumber) orealnumber,DECODE(sum(orealnumber),0,0,roun
d(sum(omoney)/sum(orealnumber),2)) oprice,sum(omoney) omoney,' ' 结存数量 from( select to_char(x.ope
ratetime, 'YYYY-MM-DD') operatetime,x.billtype,
13:08:55   2         fun_getname('BILLTYPEALL',x.billtype) billtypename,
13:08:55   3         x.billid,x.remark,x.originbillid,
13:08:55   4         fun_getname('OPERATIONTYPE',x.otherinouttype) otherinouttypename,
13:08:55   5         x.shopcode,
13:08:55   6         f_getOrganiseName(x.shopcode) shopname,
13:08:55   7         x.storecode,
13:08:55   8         f_getStoreName(x.storecode) storename,
13:08:55   9          FUN_GETTOUNIT(x.billtype,x.billid) unitname,
13:08:55  10         x.goodscode,
13:08:55  11         X.goodsname,
13:08:55  12         x.ShortCode,x.brandcode,x.model,
13:08:55  13         x.irealnumber,
13:08:55  14         abs(DECODE(x.irealnumber,0,0,round(x.imoney/x.irealnumber,4))) iprice,
13:08:55  15         x.imoney,x.orealnumber,
13:08:55  16         abs(DECODE(x.orealnumber,0,0,round(x.omoney/x.orealnumber,4))) oprice,
13:08:55  17         x.omoney
13:08:55  18  from (
13:08:55  19  select a.operatetime,
13:08:55  20                 a.billtype,
13:08:55  21                 a.billid,fun_getbillremark(a.billid) remark,fun_getbilloriginbillid(a.b
illid) originbillid,
13:08:55  22                 a.otherinouttype,
13:08:55  23                 a.shopcode,
13:08:55  24                 a.storecode,
13:08:55  25                 a.goodscode,
13:08:55  26                 c.shortcode,c.brandcode,c.model,
13:08:55  27                 c.goodsname,
13:08:55  28                 sum(DECODE(b.ruleid,1,a.realnumber,2,-a.realnumber,0)) irealnumber,
13:08:55  29                 sum(DECODE(b.ruleid,1,
13:08:55  30                        round(a.realnumber * a.price,2),
13:08:55  31                       2,
13:08:55  32                        round(-1 * a.realnumber *a.price,2),
13:08:55  33                     0)) imoney,
13:08:55  34                 sum(DECODE(b.ruleid,2,a.realnumber,1,-a.realnumber,0)) orealnumber,
13:08:55  35                 sum(decode(b.ruleid,2,
13:08:55  36                        round(a.realnumber * a.price,2),
13:08:55  37                       1,
13:08:55  38                        round(-1 * a.realnumber * a.price,2),
13:08:55  39                     0)) omoney
13:08:55  40            from t_storeout a, t_billlist b,t_goods c
13:08:55  41           where a.billtype = b.billtype
13:08:55  42               and a.goodscode=c.goodscode  and (a.shopcode = '0603')
13:08:55  43           group by a.operatetime,
13:08:55  44                    a.billtype,
13:08:55  45                    a.billid,
13:08:55  46                    remark,
13:08:55  47                    a.otherinouttype,
13:08:55  48                    a.shopcode,
13:08:55  49                    a.storecode,
13:08:55  50                    a.goodscode,
13:08:55  51                    c.shortcode,
13:08:55  52                    c.goodsname,c.brandcode,c.model
13:08:55  53  ) x
13:08:55  54  where x.billtype in (select billtype from t_billlist where ruleid>0) and
13:08:55  55     x.operatetime >= to_date('2013-6-17','YYYY-MM-DD')
13:08:55  56     and x.operatetime < to_date('2013-6-18','YYYY-MM-DD')
13:08:55  57  ) a  group by operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsname or
der by operatetime,billtypename,billid,shopcode,shopname,goodscode,goodsname;

未选定行

已用时间:  00: 00: 00.04


 

原文地址:https://www.cnblogs.com/snake-hand/p/3141235.html