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.
![]()
