Bu hatayı açıklamaya çalışacağım.
Önce örnek bir tablo oluşturalım.
create table sil_sutun (adi varchar2(100),soyadi varchar(122));
Bugün bir tablodaki sütünü (column) silmem gerekti. Bu işlem için
alter table sil_sutun drop column soyadi;
komutunu kullandim. Ve bana
ORA-39726: unsupported add/drop column operation on compressed tables
Hatasını üretti. Hata kodunu googlede araştırmadan önce compressed i görünce dedim bu tablo sıkıştırılmış, normal haline getirirsem düzelir diye düşündüm ama işe yaramadı.
alter table sil_sutun NOCOMPRESS
ufak bir google aramasından sonra çözum yolunu buldum, Drop etmeden önce column u unused konumuna çekiyoruz. Daha sonra drop işlemi gerçekleştiriyoruz.
alter table sil_sutun set unused (soyadi);
işlem tamam komut çalışmaya hazır.
alter table sil_sutun drop column soyadi;
eğer bu da işe yaramaz ise tablomuzun scriptini alıyoruz. Ve tablonun scriptinde ufak bir değişiklik yapıyoruz.
CREATE TABLE SIL_SUTUN
(
ADI VARCHAR2(100 BYTE),
SOYADI VARCHAR2(122 BYTE)
)
TABLESPACE TBS_DATA_TEMP
PCTUSED 0
PCTFREE 0
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 160K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOLOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
Bu şekilde yeniden oluşturduktan sonra drop column işlemlerini yapabiliyoruz. Şimdi diyeceksiniz arkadaşım tabloyu yeniden oluşturken o column u yazmam olur biter bana tablo yeniden oluşturmadan lazım. İşte bu durumda benim buldugum çözum saçma, ama ne faydası tabloda column u değiştirme ihtimali var ise nocompress ile yaratmak gerekebilir ama bununda zaafları vardir. Araştırmak lazım bilen varsa yorumlar kısmına yazabilir.
No comments:
Post a Comment