Oracle Tablespace Full (ORA-01653 / ORA-01654): Freeing and Adding Space
When segment extension fails, computes real usage (including autoextend), finds top consumers and safely adds or resizes datafiles.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- `ORA-01653: unable to extend table OWNER.TABLO by 128 in tablespace TS_ADI` (tablo), `ORA-01654` (indeks), `ORA-01652` (temp).
- İlgili şemadaki INSERT/UPDATE/DDL işlemleri başarısız. M38 > %95.
2. Business & Technical Impact
Yeni alan gerektiren yazmalar hata verir; uygulamanın ilgili modülü çalışmaz. Okumalar etkilenmez.
3. Diagnosis & Root-Cause Analysis
SELECT tablespace_name, ROUND(used_space*8192/1048576) AS used_mb,
ROUND(tablespace_size*8192/1048576) AS max_mb, ROUND(used_percent,1) AS used_pct
FROM dba_tablespace_usage_metrics ORDER BY used_percent DESC;SELECT file_name, ROUND(bytes/1048576) AS size_mb, autoextensible,
ROUND(maxbytes/1048576) AS max_mb, ROUND(increment_by*8192/1048576) AS next_mb
FROM dba_data_files WHERE tablespace_name = 'TS_ADI';SELECT * FROM (
SELECT owner, segment_name, segment_type, ROUND(bytes/1048576) AS mb
FROM dba_segments WHERE tablespace_name = 'TS_ADI' ORDER BY bytes DESC
) WHERE ROWNUM <= 15;4. Remediation & Action Plan
ALTER DATABASE DATAFILE '/u02/oradata/ORCL/ts_adi01.dbf' RESIZE 20G;ALTER DATABASE DATAFILE '/u02/oradata/ORCL/ts_adi01.dbf'
AUTOEXTEND ON NEXT 512M MAXSIZE 32G;ALTER TABLESPACE TS_ADI ADD DATAFILE '/u02/oradata/ORCL/ts_adi02.dbf'
SIZE 10G AUTOEXTEND ON NEXT 512M MAXSIZE 32G;
-- ASM ile: ALTER TABLESPACE TS_ADI ADD DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON NEXT 512M MAXSIZE 32G;ALTER TABLE owner.tablo ENABLE ROW MOVEMENT;
ALTER TABLE owner.tablo SHRINK SPACE CASCADE;`SHRINK` yoğun yazma altında kilitlenmelere yol açabilir; düşük trafikte yapın. `TRUNCATE` ve `DROP` geri alınamaz.
5. **Kalıcı çözüm:** Büyüme trendiyle (haftalık/aylık) kapasite tahmini yapın, M38 için %85 uyarı alarmı kurun, büyük tablolara bölümleme ve arşiv/purge politikası ekleyin.
5. Verification & Health Checks
- Başarısız olan işlem yeniden çalıştırıldığında ORA-01653 vermiyor.
- M38 %85'in altında; datafile'larda yeterli büyüme payı var.
- Disk/ASM grubunda boş alan güvenli seviyede.
6. Rollback & Contingency Plan
- `RESIZE` ile büyütme geri alınabilir (küçültme yalnızca kullanılmamış alan kadar mümkündür).
- `AUTOEXTEND` ayarlarını önceki değerlere çevirin. Eklenen datafile genellikle kaldırılamaz (tablespace boşaltılıp yeniden oluşturulmadıkça), ekleme kararını buna göre verin.
- `TRUNCATE` / `DROP` geri alınamaz; önce yedeği doğrulayın.