Drop tablespace işleminde alınan ORA-14404 hatasının çözümü

2 May by Ahmet Duruöz

Drop tablespace işleminde alınan ORA-14404 hatasının çözümü

Drop tablespace işleminde , eğer drop edilen tablo alanı , boş olmasına rağmen, herhangi bir partition için varsayılan depolama alanı ise , drop işlemi  ORA-14404 hatasına sebep olacaktır ve drop edilmeyecektir.

İşlem sırasında aşağıdaki gibi hata oluşacaktır.

SQL> drop tablespace TABLO_ALANI including contents ;
drop tablespace TABLO_ALANI including contents
*
ERROR at line 1:
ORA-14404: partitioned table contains partitions in a different tablespace

Bu durumda ilgili partition’ı tespit edip, tablo alan bilgisini değiştirmek gerekmektedir.

Tablo alanını kullanan partition’ı tespit etmek için aşağıdaki sorguyu kullanabilirsiniz.

  SELECT table_owner,
         table_name,
         partition_name,
         tablespace_name
    FROM dba_tab_partitions
   WHERE (table_owner, table_name) IN (  SELECT table_owner, table_name
                                           FROM dba_tab_partitions X
                                          WHERE     x.tablespace_name =
                                                       UPPER ('TABLO_ALANI')
                                                AND EXISTS
                                                       (SELECT *
                                                          FROM dba_tab_partitions Y
                                                         WHERE     x.table_owner =
                                                                      y.table_owner
                                                               AND x.table_name =
                                                                      y.table_name
                                                               AND y.tablespace_name <>
                                                                      UPPER (
                                                                         'TABLO_ALANI'))
                                       GROUP BY table_owner, table_name)
ORDER BY 1, 2, partition_position;

Sorgudaki TABLO_ALANI yerine ilgili tablo alanının adı büyük harflerle olacak şekilde gelmelidir.

Partition tespitinden sonra aşağıdaki komut ile ilgili partittion’ın kullandığı tablo alanını değiştirebilirsiniz.

ALTER TABLE KULLANICI.TABLO MOVE PARTITION PARTITION_ADI TABLESPACE YENI_TABLO_ALANI NOLOGGING;

Sonrasında ilgili tablo alanı sorunsuz şekilde drop edilebilecektir.

SQL> DROP TABLESPACE TABLO_ALANI INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir