大量 DML 導致回滾段表空間耗盡,無法分配新區塊。
ALTER TABLESPACE ts_name ADD DATAFILE '/path/file.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
SELECT tablespace_name, SUM(bytes)/1024/1024 MB_FREE FROM dba_free_space GROUP BY tablespace_name;
SELECT class, count FROM v$waitstat WHERE class IN ('system undo header','system undo block','undo header','undo block');
SELECT SUM(value) FROM v$sysstat WHERE name IN ('db block gets','consistent gets');
-- 若 class_count / sum_value > 1% 應增加回滾段
臨時表空間不足(排序、哈希連接、建索引等操作使用),且 Oracle 要求連續空間,碎片化導致無法分配。
SELECT file_id, block_id, blocks, bytes FROM dba_free_space WHERE tablespace_name = 'TEMP';
ALTER TABLESPACE temp DEFAULT STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0);
ALTER TABLESPACE temp ADD TEMPFILE '/path/temp02.dbf' SIZE 2G AUTOEXTEND ON;
V$TEMPSEG_USAGE。