TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-08-29 |
제목 | COLUMN 을 DROP하는 방법 | ||
---|---|---|---|
COLUMN 을 DROP하는 방법
================================== PURPOSE ------- Oracle8i 부터는 Table에서 필요없는 컬럼을 삭제할 수 있는 기능이 추가되었다. 그 사용방법에 대해 알아보자. Explanation ----------- Oracle8i 이상에서 column을 drop하려면 DROP COLUMN 구문을 이용하여 실행할 수 있다. column을 drop하는 방법에는 실제로 column이 drop되는 시점에 따라 다음의 두 가지로 나눌 수 있다. 1. drop column command를 실행할 때 즉시 drop하는 방법. SYNTAX : ALTER TABLE table_name DROP COLUMN column_name; -> 해당 table의 모든 data block의 모든 row에서 그 column의 값을 삭제한다. 그러므로 large table인 경우 굉장히 오랜 시간이 걸릴 수 있으며 동시에 실행되는 dml 문장 등이 hang될 수 있으므로 주의해야 한다. 2. drop column command를 실행할 때 먼저 unused로 설정하고 나중에 다시 unused column들을 drop시키는 방법. SYNTAX : ALTER TABLE table_name SET UNUSED COLUMN column_name; -> drop하기 전에 column을 unused로 만들 수 있다. 실제로 data block에서 data를 삭제하지 않고 unused로만 설정하기 때문에 오래 걸리지는 않는다. Table에 unused로 설정된 column의 갯수를 확인하기 위해서는 USER/ALL/DBA_UNUSED_COL_TABS view를 조회하면 가능하다. 위의 어떤 작업을 실행하든지 해당 column의 정보는 data dictionary에서 나오지 않으며 desc 등에서도 확인할 수 없다. column을 drop하게 되면 그 table에 기존에 unused로 설정된 것까지 한꺼번에 drop한다. [주의사항] - column을 drop하면 해당 column이 포함된 모든 index와 constraint에서도 삭제되므로 주의해야 한다. - drop된 column은 rollback할 수 없으므로 필요하다면 export 등의 backup 을 받아두는 것이 좋다. - drop column operation은 parallel 로 실행할 수 없다. - object table에서는 drop column을 실행할 수 없다. - column을 drop한 후에는 analyze를 다시 해 주는 것이 좋다. Examples -------- 1. column을 drop하는 예제 o ALTER TABLE EMP DROP COLUMN ENAME; -> EMP table에서 ENAME column을 삭제한다. o ALTER TABLE EMP DROP (ENAME, SAL); -> EMP table에서 ENAME과 SAL column을 한꺼번에 삭제한다. 2. column을 unused로 설정하는 방법 o ALTER TABLE EMP SET UNUSED COLUMN ENAME; -> EMP table의 ENAME column을 unused로 만든다. o ALTER TABLE EMP DROP UNUSED COLUMNS; -> EMP table에서 unused로 설정된 column을 drop할 때에는 실행한다. Reference Documents |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |