程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> ORA-01562 和 ORA-01628 問題解決

ORA-01562 和 ORA-01628 問題解決

編輯:關於Oracle數據庫

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved