본문 바로가기
카테고리 없음

[OracleDB] 오라클DB INVISIBLE 기능을 활용한 테이블 컬럼 순서 조정

by 반월하 2024. 6. 14.
728x90

 

테이블에 새로운 칼럼을 추가할 때 컬럼의 순서를 조정하고 싶은 경우가 있습니다.
하지만 테이블 컬럼 사이에도 순서가 정해져 있어서 Dbeaver와 같은 DBMS에서 드래그 & 드랍 과 같은 방식으로는
순서를 조정할 수가 없습니다.

오라클 12c에는 컬럼을 보이지 않도록 하는 INVISIBLE 기능이 있습니다. 이를 통해 테이블의 컬럼을 마치 없는 것처럼 숨길 수 있습니다. ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE; 명령어를 실행하면 해당 컬럼은 테이블의 DESCRIPTION에서 사라지게 됩니다.

INVISIBLE 기능의 용도

이 기능의 주된 용도는 명확하지 않지만, 활용 방법 중 하나로 테이블 컬럼 순서를 조정하는 데 사용할 수 있습니다. 기존에는 오라클 테이블의 컬럼 순서를 조정하려면 테이블을 DROP하고 다시 CREATE하는 방법밖에 없었습니다. 하지만 12c 버전부터는 INVISIBLE 및 VISIBLE 기능을 이용하여 테이블을 DROP하지 않고도 컬럼 순서를 조정할 수 있습니다.

컬럼 순서 조정 방법

컬럼 순서를 조정하는 방법은 다음과 같습니다:

  1. ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;
  2. ALTER TABLE 테이블명 MODIFY 컬럼명 VISIBLE;

이렇게 하면 '컬럼명' 컬럼은 맨 끝으로 이동하게 됩니다. 중간에 위치한 컬럼도 동일한 방법으로 INVISIBLE, VISIBLE 처리하면 맨 끝으로 이동합니다.

예제 스크립트

모든 컬럼을 INVISIBLE로 설정한 후 원하는 순서대로 VISIBLE 처리하면 컬럼 순서 조정이 완료됩니다. 아래 SQL을 약간 수정하여 활용하면 편리하게 INVISIBLE, VISIBLE 스크립트를 생성할 수 있습니다. DBA 권한이 없는 사용자는 DBA_TAB_COLUMNS 대신 USER_TAB_COLUMNS를 사용하면 됩니다.

SELECT SQL
FROM (
    SELECT TABLE_NAME, 1 NO, COLUMN_ID, 
        'ALTER TABLE '|| OWNER ||'.'|| TABLE_NAME||' MODIFY '|| COLUMN_NAME ||'  INVISIBLE ;' SQL
    FROM DBA_TAB_COLUMNS
    WHERE TABLE_NAME = '테이블명'
    UNION ALL
    SELECT TABLE_NAME, 1 NO, COLUMN_ID, 
        'ALTER TABLE '|| OWNER ||'.'|| TABLE_NAME||' MODIFY '|| COLUMN_NAME ||'  VISIBLE ;' SQL
    FROM DBA_TAB_COLUMNS
    WHERE TABLE_NAME = '테이블명'
)
WHERE TABLE_NAME = '테이블명'
ORDER BY NO, COLUMN_ID, SQL;

이 스크립트를 사용하여 테이블의 컬럼 순서를 자유롭게 조정할 수 있습니다. 이를 통해 더 편리하게 데이터베이스를 관리할 수 있습니다.

 

728x90

댓글