Pages

8 Temmuz 2011 Cuma

TEMP tablespace büyüme sorunu

TEMP tablespace büyüme sorunu pek çok DBA tarafından karşılaşılan ve sıkıntı yaratan bir sorundur. Temporary(geçici) tablespace aşırı büyüdüğünde veritabanında geçici tablespace alanı tükenebilmektedir. Bu yazıda, bu gibi durumlarda geçici tablespace alanını arzu edilen boyuta kavuşturulacağı ile ilgili bir takım ipuçları yer alacaktır.

Geçici tablespace hakkında bilgi almak:
Aşağıdaki komutu kullanarak geçici tablespace hakkında bilgi alınabilir.

SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_TEMP_FILES;

TABLESPACE_NAME   FILE_NAME
---------------   -----------
TEMP              /u01/oracle/oradata/arda/TEMP01.DBF

Tempfile dosyasının yeniden boyutlandırılması:
Pek çok durumda ALTER DATABASE TEMPFILE komutu ile geçici tablespace’in alanını artırmak metodu seçilebilmektedir.

Ancak, geçici tablespace dosyalarının(tempfile) yeniden boyutlandırılması sıklıkla ORA-03297 hata mesajının alınması ile sonuçlanmaktadır. Bu gibi durumda TEMP veri dosyasının oto genişleyebilir(auto-extensible) olması gerekmekte ve maxbytes/maxblocks değerinin çok düşük olmadığından emin olunması gerekmektedir. Benzer olarak TEMP tablespace’in büyük yığınlarını tahsis etmekten sorumlu olan SQL sorgularının belirlenmesi ve iyileştirilmeside gerekmektedir.

ALTER DATABASE TEMPFILE ‘/u01/oracle/oradata/arda/TEMP01.DBF' RESIZE RESIZE 250M
*
ERROR AT LINE 1:
ORA-03297: FILE CONTAINS USED DATA BEYOND REQUESTED RESIZE VALUE

Eğer ALTER DATABASE TEMPFILE komutu sonunda ORA-032297 hata mesajı ile karşılaşılırsa aşağıdaki adımları izleyerek temp dosyasının boyutu sorunsuzca arzu edilen boyuta kavuşturulur.

  1. Geçici bir tablespace oluşturulur;
CREATE TEMPORARY TABLESPACE TEMP2
TEMPFILE ‘/u01/oracle/oradata/arda/TEMP02.DBF’
SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 2000M;

  1. Ardından bu oluşturulan geçici tablespace varsayılan olarak ayarlanır;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP2;

  1. Eski geçici tablespace’in temp dosyaları düşürülür;
ALTER DATABASE TEMPFILE ‘/u01/oracle/oradata/arda/TEMP01.DBF' DROP INCLUDING DATAFILES;

  1. Eski tablespace’e istediğimiz büyüklükte temp dosyası eklenir;
ALTER TABLESPACE TEMP
ADD TEMPFILE ‘/u01/oracle/oradata/arda/TEMP01.DBF' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 20000M;

  1. Eski tablespace yeniden varsayılan geçici tablespace olarak ayarlanır;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

  1.  İlk adımda oluşturulan tablespace artık gerekmediğinden sistemden düşürülür;
DROP TABLESPACE TENP2 INCLUDING CONTENTS AND DATAFILES;

0 yorum:

Yorum Gönder