萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> oracle的ORA-01562和ORA-01628問題解決

oracle的ORA-01562和ORA-01628問題解決

執行一對帳程序,老執行到一半的時候就出錯,作者還沒有把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;

再執行對帳程序,成功結束,就是時間有點長。

copyright © 萬盛學電腦網 all rights reserved