广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    ORA-01562 和 ORA-01628 问题解决

    2018-04-16 10:57:51 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布

         执行一对帐程序,老执行到一半的时候就出错,作者还没有把Oracle的error打印出来,只是打印了他自己能看得懂的错误提示,经过修改代码,把oracle错误,put_line出来后,发现是 ORA-01562: failed to extend rollback segment number 12
    ORA-01628: max # extents (505) reached for rollback segment RBS12

         看来是回滚段的maxtxtents太小了,系统有20多个回滚段,为了减少类似错误的发生,设置一下:

         给回滚段表空间增加数据文件,并设置大回滚段apprbs的maxextents值为无限大:

    $ sqlplus '/as sysdba'
    SQL> alter tablespace rbs add datafile '/opt/oracle/db02/oradata/ORCL/rbs02.dbf' size 8192m autoextend on next 10m maxsize unlimited;
    SQL> alter rollback segment apprbs storage (maxextents unlimited);

         单独执行大sql前,先设置交易使用此大回滚段:
    SQL> set transaction use rollback segment apprbs;

         在存储过程中执行大sql前,设置交易使用此大回滚段:
    begin
        dbms_transaction.use_rollback_segment('apprbs');
        <big sql;>
        commit;
    end;

         再执行对帐程序,成功结束,就是时间有点长。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告