8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | 기타 | PL / SQL | SQL | RAC | WebLogic | Linux
홈 “기사”8i “여기
Oracle 8i는 테이블에서 열을 삭제하는 기능을 도입했습니다. 이전에는 전체 테이블을 삭제해야했습니다. 이제 열을 미사용 (논리적 삭제)으로 표시하거나 완전히 삭제 (물리적 삭제) 할 수 있습니다.
- 논리적 삭제
- 물리적 삭제
- 고려 사항
논리적 삭제
대형 테이블에서 열을 물리적으로 제거하는 과정은 많은 시간과 리소스를 소모 할 수 있습니다. 따라서 논리적으로 삭제하기로 결정할 수 있습니다.
alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);
이 작업이 완료되면 열이 더 이상 사용자에게 표시되지 않습니다. 나중에 열을 물리적으로 삭제할 시간이있는 경우 다음을 사용하여 수행 할 수 있습니다.
alter table table_name drop unused columns;
대형 테이블에서는 지정된 횟수 이후에 체크 포인트를 강제 실행하는 CHECKPOINT 옵션을 사용하여 누적 된 실행 취소 로그의 양을 줄일 수 있습니다. 행이 처리되었습니다.
DBA_UNUSED_COL_TABS
보기를 사용하여 테이블 당 사용되지 않은 열 수를 볼 수 있습니다.
물리적 삭제
열을 물리적으로 삭제하려면 단일 또는 다중 열 삭제 여부에 따라 다음 구문 중 하나를 사용할 수 있습니다.
alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);
테이블의 열을 사용하면 해당 테이블에서 사용되지 않는 모든 열이 동시에 삭제됩니다.
고려 사항
열을 삭제해도 블록에 사용 가능한 추가 공간이 생기지 않을 수 있습니다. 열이 작 으면 각 블록에 재사용 할 수없는 작은 공간 만 확보됩니다. 재사용 할 수있는 유일한 방법은 테이블을 다시 작성 / 이동하는 것입니다. 열을 사용할 수없는 것으로 표시 한 다음 테이블을 다시 작성하는 것이 더 효율적입니다. 기본적으로 이동은 온라인 작업이 아닙니다.
alter table table_name set unused (column_name);alter table table_name move;
이후 데이터베이스 버전에서는 이동 작업을 온라인으로 수행 할 수 있습니다.
alter table table_name set unused (column_name);alter table table_name move online;
도움이되기를 바랍니다. Tim에게 감사합니다 …
맨 위로 이동