ORA-01562 和 ORA-01628 问题解决

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

执行一对帐程序,老执行到一半的时候就出错,作者还没有把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;

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航