ORA-01013: user requested cancel of current operation_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > ORA-01013: user requested cancel of current operation

ORA-01013: user requested cancel of current operation

 2013/8/19 18:37:04  listen-raining  程序员俱乐部  我要评论(0)
  • 摘要:2013年8月19日星期一16时16分04秒在做一个界面导出功能时,报以下错误:java.sql.SQLException:ORA-01013:userrequestedcancelofcurrentoperationatoracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)atoracle.jdbc.driver.DatabaseError.newSQLException
  • 标签:

        2013年8月19日 星期一 16时16分04秒
       
        在做一个界面导出功能时,报以下错误

        java.sql.SQLException: ORA-01013: user requested cancel of current operation

        at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
        at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183)
        at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:774)
        at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:849)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1178)
        at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1377)
        at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:386)
        at weblogic.jdbc.wrapper.Statement.executeQuery(Statement.java:480)
        at com.poson.db.DBConnection.getResultSet(DBConnection.java:82)
        at com.poson.cb.ext.export.FileClassCountError.doExport(FileClassCountError.java:52)
        at com.poson.cb.ext.export.FileClassCountError.main(FileClassCountError.java:163)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jcrontab.CronTask.runTask(CronTask.java:162)
        at org.jcrontab.CronTask.run(CronTask.java:239)

        执行的原脚本如下:
                          select count(*) from file_reg_mobile
                              where to_char(create_time, 'yyyymm') = '201307'
                                        and billing_flag = 'S'  and file_name like 'LIST%';

                    表file_reg_mobile中的总记录数为17187021条。

        刚开始以为是由于数据量过大,时间过长,导致jsp页面响应失败。所以想利用定时器jcrontab先进行后台生成Excel,然后用户可以直接在前面界面上进行导出。

        但是在配置了定时器后,后台执行该脚本时依然报这个错误,最后就在群里面咨询同学。该脚本做如下的优化后速度提升很高。
       
        优化后的结果如下:
                        select count(0) from file_reg_mobile
                              where  bil_billing_cycle_id = 201307
                        and billing_flag = 'S' and file_name like 'LIST%';
       
                  首先,将count(*)改为count(0)。
                  其次,用bil_billing_cycle_id字段作为账期的查询条件进行查询。
                  最后,要建bil_billing_cycle_id字段的索引。

                       create index IDX_FILE_REG_BILLING_CYCLE on FILE_REG_MOBILE (BIL_BILLING_CYCLE_ID)
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 30M
    minextents 1
    maxextents unlimited
  );

                  经过以上几步的处理,查询速度得到了很大的提升。




          ===============================================
          经测试发现count(*), count(0),count(1)在查询时间上没有任何区别,查询了相关资料,也没发现这个几种写法有什么区别。。。。。。
               ---区别
   
    select count(*)
       from file_reg_mobile
      where to_char(create_time, 'yyyymm') = '201307'
        and billing_flag = 'S'
        and file_name like 'LIST%';      ---- 耗时    2:04s
       
       
            select count(0)
       from file_reg_mobile
      where to_char(create_time, 'yyyymm') = '201307'
        and billing_flag = 'S'
        and file_name like 'LIST%';      ---- 耗时   2:10s
       
       
       
            select count(1)
       from file_reg_mobile
      where to_char(create_time, 'yyyymm') = '201307'
        and billing_flag = 'S'
        and file_name like 'LIST%';       ---- 耗时 2:09s




                                                                                 2013-08-19 16:59 记 @jinrongdajie31.xichengqu.beijing
  • 相关文章
发表评论
用户名: 匿名