ORA-30036: nicht verlängern-segment um 8 in der undo-tablespace 'UNDOTBS'

Mir läuft der cron-job die folgenden PL/SQL-block:

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;  

Den DB_LOGS Tisch hat 10247302 Zeilen. Wenn der cron-job ausgeführt, wird ein Fehler als ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'. Hat die Erhöhung der tablespce ist die einzige Lösung für dieses Problem und wie zu tun? Die UNDOTBS hat die 524288000 bytes.

  • Sie sind wohl dem löschen Weg, zu viele Datensätze, ohne eine zu Begehen. Vielleicht solltest du in einer Schleife durch die Tabelle Erteilung verpflichtet mehr oft. Können Sie das tun, oder es muss auf der gleichen Transaktion?
InformationsquelleAutor Andrew | 2016-07-27
Schreibe einen Kommentar