1. ホーム
  2. oracle

[解決済み] ORA-30036: アンドゥ テーブルスペース 'UNDOTBS' でセグメントを 8 つ拡張できません。

2022-02-09 01:38:30

質問

私は、以下のPL/SQLブロックを持つcronジョブを実行しています。

declare  
  begin  
--insert into DB_LOGS_TEMP table from DB_LOGS table  
INSERT INTO DB_LOGS_TEMP SELECT * FROM DB_LOGS WHERE DB_LOG_ID NOT IN(SELECT DB_LOG_ID from DB_LOGS_TEMP );  
--keep the lat 10 records and delete other records  
DELETE DB_LOGS where rowid  in (  
select rid from (  
select t.rowid rid,  
       row_number() over(partition by T.DB_LOG_ID order by T.TIMESTAMP desc) as rn  
from DB_LOGS t)  
where rn > 10);  
end;  

DB_LOGSテーブルには10247302行があります。cronジョブが実行されると、次のようなエラーが発生します。 ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS' . この問題の唯一の解決策は、tablespce を増やすことでしょうか、またその方法は?UNDOTBSは、524288000バイトを持っています。

解決方法は?

テーブルスペースを増やし、自動拡張をオンにすると、うまくいきました。

 ALTER DATABASE DATAFILE '/vg01lv11/oracle//data/undotbs_d1_O2P00R11.dbf' AUTOEXTEND ON MAXSIZE 10g;

ALTER DATABASE DATAFILE '/vg01lv11/oracle//data/undotbs_d1_O2P00R11.dbf'
       RESIZE 1000M;