ORA-12988: cannot drop column from table owned by SYS
SYS kullanıcının sahip olduğu bir tabloda kolon silmeye çalışıldığında “ORA-12988: cannot drop column from table owned by SYS” hatası alınmaktadır. Bunun sebebi SYS kullanıcının sahip olduğu bir tabloda kolon silme işlemine izin verilmez.
Bu işlemi yapabilmenin yöntemi , aynı tabloyu farklı bir şema altında CTAS ile oluşturup , ilgili kolonu silip , SYS şemasındaki tabloyu drop ettikten sonra yine CTAS ile diğer şemadaki tablodan SYS şeması altında yeni tablo oluşturmaktır.
[oracle@orcldb ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 6 12:13:20 2020
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> CREATE TABLE TEST
(
AD VARCHAR2(10 BYTE),
SOYAD VARCHAR2(10 BYTE),
KURUM VARCHAR2(10 BYTE)
);
Table created.
SQL> insert into TEST values ('AHMET','DURUÖZ','İNTERİVA');
1 row created.
SQL> commit;
Commit complete.
SQL> ALTER TABLE TEST DROP COLUMN KURUM;
ALTER TABLE TEST DROP COLUMN KURUM
*
ERROR at line 1:
ORA-12988: cannot drop column from table owned by SYS
Bu durumda aşağıdaki gibi ilgili kolonu silebilirsiniz.
SQL> create table ADURUOZ.TEST as select * from TEST;
Table created.
SQL> ALTER TABLE ADURUOZ.TEST DROP COLUMN KURUM;
Table altered.
SQL> drop table TEST purge;
Table dropped.
SQL> create table TEST as select * from ADURUOZ.TEST;
Table created.
SQL> desc TEST;
Name Null? Type
----------------------------------------- -------- ----------------------------
AD VARCHAR2(10)
SOYAD VARCHAR2(10)