ORA-12988: cannot drop column from table owned by SYS

6 May by Ahmet Duruöz

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)

 

 

Loading

Bir yanıt yazın

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