개발자세상/Database관련
ORA-30557
headiron
2009. 12. 9. 16:27
오라클에서 Field 사이즈를 조정하려고 했더니
"ORA-30556: functional index is defined on the column to be modified"
메시지가 뜬다.
인터넷 뒤져 보니 functional index를 삭제한 후 조정하면 된다고 하는데
Enterprise Manager 나 다른 Tool에서 Functional index를 찾을 수 있는 방법이 없다.
결국 염대리님이
"select * from USER_IND_EXPRESSIONS;" 쿼리를 알려 주셔서 functional index를 찾을 수 있었고 해당 index를 drop 한 후 원래 나오던 column_expression대로 다시 생성을 하니 정상적으로 동작한다.
SQLPLUS>select * from USER_IND_EXPRESSIONS where table_name = '테이블명';
출력 결과 )
INDEX_NAME TABLE_NAME COLUMN_EXPRESSION COLUMN_POSITION
XXXX YYYY NLSSORT("ID",'nls_sort=''BINARY_CI''') 1
SQLPLUS>drop index XXXX;
SQLPLUS>ALTER TABLE XXXX MODIFY ( CCCC VARCHAR2(256));
SQLPLUS> create index XXXX on YYYY(NLSSORT("ID",'nls_sort=''BINARY_CI'''));
참조 : USER_IND_EXPRESSIONS Functional index expressions in user's indexes and indexes on user's tables
"ORA-30556: functional index is defined on the column to be modified"
메시지가 뜬다.
인터넷 뒤져 보니 functional index를 삭제한 후 조정하면 된다고 하는데
Enterprise Manager 나 다른 Tool에서 Functional index를 찾을 수 있는 방법이 없다.
결국 염대리님이
"select * from USER_IND_EXPRESSIONS;" 쿼리를 알려 주셔서 functional index를 찾을 수 있었고 해당 index를 drop 한 후 원래 나오던 column_expression대로 다시 생성을 하니 정상적으로 동작한다.
SQLPLUS>select * from USER_IND_EXPRESSIONS where table_name = '테이블명';
출력 결과 )
INDEX_NAME TABLE_NAME COLUMN_EXPRESSION COLUMN_POSITION
XXXX YYYY NLSSORT("ID",'nls_sort=''BINARY_CI''') 1
SQLPLUS>drop index XXXX;
SQLPLUS>ALTER TABLE XXXX MODIFY ( CCCC VARCHAR2(256));
SQLPLUS> create index XXXX on YYYY(NLSSORT("ID",'nls_sort=''BINARY_CI'''));
참조 : USER_IND_EXPRESSIONS Functional index expressions in user's indexes and indexes on user's tables