오라클 12c에는 컬럼을 보이지 않도록하는 invisible 기능이 있다.
ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;
을 실행하면 해당컬럼은 마치 없는것처럼 테이블 DESCRIPTION에서 사라진다.
용도는 뭘까?
주된 용도인지는 모르겠으나 활용방법의 하나로
테이블 컬럼 순서 조정이 가능하다.
원래 오라클의 테이블 컬럼 순서를 조정하려면 DROP & CREATE 밖엔 방법이 없었으나
12c 버전부터는 INVISIBLE, VISIBLE 기능을 이용하여 테이블 DROP 없이 컬럼 순서 조정을 할 수 있다.
ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;
ALTER TABLE 테이블명 MODIFY 컬럼명 VISIBLE;
하면 '컬럼명' 컬럼은 맨 끝에 붙게 된다.
중간에 위치한 컬럼도 INVISIBLE, VISIBLE 하면 맨 끝으로 컬럼 순서가 바뀐다.
PK를 제외한 모든 컬럼을 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