WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院数据库Oracle oracle的ORA-01562和ORA-01628问题解决 阅读

oracle的ORA-01562和ORA-01628问题解决

 2007-06-02 16:05:44 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示:执行一对帐程序,老执行到一半的时候就出错,oracle的ORA-01562和ORA-01628问题解决,作者还没有把oracle的error打印出来,只是打印了他自己能看得懂的错误提示,设置交易使用此大回滚段:begindbms_transaction.use_rollback_segment('apprbs&

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

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

Tags:oracle ORA ORA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接