我这里有个sql,里面有个条件包含一个方法,sql只要执行,连接就会断开。
如果把带函数的条件删除了,可以正常执行。
这是一个老系统,这种带函数的写法很多,不能替换。
这个sql再oracle10g里面正常执行,好像12c也可以。
正式环境的数据库是10g,所以对客户也没有影响,只不过公司测试库安装的11g,所以有没有办法解决一下。

系统:window 64位
数据库:32位
日志文件地址:http://pan.baidu.com/s/1kU6Szor

解决方案 »

  1.   

    你单独执行函数会异常中断不
    select F('410000000') from dual
      

  2.   

    大概执行这个语句要多久,看下服务器CPU和内存情况
      

  3.   

    BAFWY.T_GAD_ZXFZBJYYFWQYBAXX 这个表,看看是否有人在长时间改表结构,或者看看等待时间
      

  4.   

    执行sql时间不定,有时一秒就结束,有时要十几秒。
    cpu【0%-5%】T_GAD_ZXFZBJYYFWQYBAXX 这个表现在没有人动,现在只有我自己登录这个账号,我只有在用plsql测试查询语句。
      

  5.   

    我的项目也遇到过该情况.数据库11G,当时也查了很多资料.有人说是oracle bug.后面解决方法就是修改了函数中的一些语句.有时候错误执行一次是不会出现的,执行久了才出现.
      

  6.   


    刚才又发现一种情况,ROWNUM去掉或者带方法的条件去掉,都可以执行成功,两个不能共存。执行失败:SELECT A.*, ROWNUM
              FROM (SELECT T.ID
                      FROM T_GAD_ZXFZBJYYFWQYBAXX T
                     WHERE T.SJGSDWDM LIKE (F('410000000000') || '%')
                     ORDER BY T.LRSJ DESC) A执行成功:SELECT A.*
              FROM (SELECT T.ID
                      FROM T_GAD_ZXFZBJYYFWQYBAXX T
                     WHERE T.SJGSDWDM LIKE (F('410000000000') || '%')
                     ORDER BY T.LRSJ DESC) A执行成功:SELECT A.*, ROWNUM
              FROM (SELECT T.ID
                      FROM T_GAD_ZXFZBJYYFWQYBAXX T
                     ORDER BY T.LRSJ DESC) A
      

  7.   

    可能是BUG,如果可以的话,重启下数据库试试。
      

  8.   

    你把F('410000000000') 的查询放在with as 里,看看这种还会报错不
      

  9.   


    这样写,可以执行成功:WITH M AS (SELECT F('410000000000') AS ORGCODE FROM DUAL)
    SELECT A.*, ROWNUM
              FROM (SELECT T.ID
                      FROM T_GAD_ZXFZBJYYFWQYBAXX T,M
                     WHERE T.SJGSDWDM LIKE (M.ORGCODE || '%')
                     ORDER BY T.LRSJ DESC) A
      

  10.   


    这样写,可以执行成功:WITH M AS (SELECT F('410000000000') AS ORGCODE FROM DUAL)
    SELECT A.*, ROWNUM
              FROM (SELECT T.ID
                      FROM T_GAD_ZXFZBJYYFWQYBAXX T,M
                     WHERE T.SJGSDWDM LIKE (M.ORGCODE || '%')
                     ORDER BY T.LRSJ DESC) A
    搞不清了,可能存在BUG,只能先这样了。或者日志文件找哪个大神看下
      

  11.   

    11.2.0.1有很多BUG的,建议升到11.2.0.4看看是否还有这个问题