컬럼명을 rename 또는 drop 하고자 할 때 아래와 같이 오류가 발생하는 경우가 있음


"ORA-54032: 이름을 바꿀 열이 가상 열 표현식에서 사용되었습니다."


1. 원인 : 해당 컬럼이 virtual column으로 만들어져 있음. 사용자가 명시적으로 안만들었더라도 12c 버전부터 새로 생긴 기능인 extended statistics 기능 중에 하나가 다수의 column에 대한 SQL optimizer statistics를 (자동으로) 생성 수집하는 것으로 이 기능 때문에 virtual column이 자동으로 생성됨.


2. 확인방법

select table_name, column_name, data_type, hidden_column,data_default

from user_tab_cols

where table_name ='TABLE_NAME' and virtual_column = 'YES';


3. 처리방법

① extended statistics drop

BEGIN
dbms_stats.drop_extended_stats( ownname => 'OWNER', tabname => 'TABLE_NAME', extension => '(COL1,COL2)' ) ;
END;
/


② 2번의 확인 쿼리로 drop된 걸 확인한 후에 rename, drop이 가능함


③ extended statistics는 아래 쿼리로 다시 추가해도 되고, 아니면 db에서 알아서 생성하므로 그냥 놔둬도 됨

DECLARE
l_cg_name VARCHAR2(30);
BEGIN
l_cg_name := DBMS_STATS.create_extended_stats( ownname => 'OWNER', tabname => 'TABLE_NAME', extension => '(COL1,COL2)' );
END;

/



Posted by 하이안
,