내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
OS환경 : Oracle Linux 7.6 (64bit)
DB 환경 : Oracle Database 12.2.0.1
방법 : 오라클 12c 테이블 컬럼 순서 변경(invisible 컬럼 속성)
오라클 12c 부터 테이블 컬럼의 순서를 변경하는 방법이 생김
정확히는 컬럼을 invisible (숨김처리) 시킨 후 다시 visible (보임처리) 하면 제일 뒤로 가는 방식을 이용하는것
col1, col2, col3 컬럼을 가진 invisible_tab 테이블 생성 후 col1을 invisible 처리 한 뒤 다시 visible하는 시나리오
DB 버전 조회
1
2
3
4
5
|
SQL> select version from v$instance;
VERSION
-----------------
12.2.0.1.0
|
테스트 유저 생성 및 권한 부여
1
2
3
4
5
6
7
8
9
10
11
|
SQL> create user test identified by test account unlock;
User created.
SQL> grant resource, connect to test;
Grant succeeded.
SQL> alter user test quota unlimited on users;
User altered.
|
테스트 테이블 생성
1
2
3
4
|
SQL> conn test/test
SQL> create table invisible_tab (col1 number, col2 varchar2(5), col3 number);
Table created.
|
테스트 데이터 삽입
1
2
3
4
5
6
7
|
SQL>
insert into invisible_tab values (1, 'A', 1);
insert into invisible_tab values (2, 'B', 2);
insert into invisible_tab values (3, 'C', 3);
insert into invisible_tab values (4, 'D', 4);
insert into invisible_tab values (5, 'E', 5);
commit;
|
테이블 구조 조회(COL1, COL2, COL3 순서)
1
2
3
4
5
6
|
SQL> desc invisible_tab
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NUMBER
COL2 VARCHAR2(5)
COL3 NUMBER
|
테이블 내용 조회
1
2
3
4
5
6
7
8
9
|
SQL> select * from invisible_tab;
COL1 COL2 COL3
---------- ----- ----------
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
|
COL1 컬럼 invisible 로 변경(숨김처리)
1
2
3
|
SQL> alter table invisible_tab modify (col1 invisible);
Table altered.
|
테이블 구조 조회
1
2
3
4
5
6
|
SQL> desc invisible_tab;
Name Null? Type
----------------------------------------- -------- ----------------------------
COL2 VARCHAR2(5)
COL3 NUMBER
|
테이블 내용 조회
1
2
3
4
5
6
7
8
9
|
SQL> select * from invisible_tab;
COL2 COL3
----- ----------
A 1
B 2
C 3
D 4
E 5
|
COL1 컬럼만 조회
1
2
3
4
5
6
7
8
9
|
SQL> select col1 from invisible_tab;
COL1
----------
1
2
3
4
5
|
desc, select * from 에는 나오지 않지만 컬럼만 개별 조회는 가능
딕셔너리에서 조회
1
2
3
4
5
6
7
8
9
10
11
|
SQL>
SELECT name,col#,intcol#,segcol#,
TO_CHAR (property,'XXXXXXXXXXXX') property
FROM sys.col$
WHERE obj# = (SELECT obj# FROM sys.obj$ WHERE name = 'INVISIBLE_TAB');
NAME COL# INTCOL# SEGCOL# PROPERTY
---------- ---------- ---------- ---------- -------------
COL1 0 1 1 400000020
COL2 1 2 2 0
COL3 2 3 3 0
|
COL#이 0으로 변경되고 PROPERTY 값이 생김
COL1 컬럼 visible 로 변경(보임처리)
1
2
3
|
SQL> alter table invisible_tab modify (col1 visible);
Table altered.
|
테이블 구조 조회
1
2
3
4
5
6
7
|
SQL> desc invisible_tab
Name Null? Type
----------------------------------------- -------- ----------------------------
COL2 VARCHAR2(5)
COL3 NUMBER
COL1 NUMBER
|
테이블 내용 조회
1
2
3
4
5
6
7
8
9
|
SQL> select * from invisible_tab;
COL2 COL3 COL1
----- ---------- ----------
A 1 1
B 2 2
C 3 3
D 4 4
E 5 5
|
컬럼의 순서가 변경되었음을 확인 가능함
딕셔너리에서 조회
1
2
3
4
5
6
7
8
9
10
11
|
SQL>
SELECT name,col#,intcol#,segcol#,
TO_CHAR (property,'XXXXXXXXXXXX') property
FROM sys.col$
WHERE obj# = (SELECT obj# FROM sys.obj$ WHERE name = 'INVISIBLE_TAB');
NAME COL# INTCOL# SEGCOL# PROPERTY
---------- ---------- ---------- ---------- -------------
COL1 3 1 1 0
COL2 1 2 2 0
COL3 2 3 3 0
|
COL#이 3으로 변경되고 PROPERTY 값이 없어짐
위 방법으로 컬럼 순서 변경이 가능하지만
특정 버전에서 해당 방법으로 변경한 뒤 시스템뷰에서 제대로 반영이 안되서 문제가 되었던 경우를 본적있음
운영DB에 적용할 경우 충분한 테스트를 거친 뒤 적용하기를 권고함
참조 : http://www.oracle.com/technetwork/articles/database/invisible-columns-odb12c-2331522.html
'ORACLE > Admin' 카테고리의 다른 글
(스크랩)COMPRESS를 이용한 자원의 효과적 활용 (0) | 2018.08.01 |
---|---|
오라클 11gR2 아카이브 로그 정리 방법(archive log) (0) | 2018.07.04 |
11g AutoTask 와 자동통계 ( Automatic Optimizer Statistics ) (0) | 2018.06.21 |
export messages(EXP) 익스포트 메세지 (0) | 2018.05.30 |
오라클 11g R2 리스너 로그 관리 정리 방법 (4) | 2018.05.15 |