'ALL_TAB_COLUMNS와 ALL_TAB_COLS 테이블의 차이'에 해당되는 글 1건

  1. 2017.06.30 :: 오라클 Hidden Column - SYS_로 시작하는 컬럼 1
데이터베이스 2017. 6. 30. 08:00


Function Based Index 또는 Descending Index로 인덱스 생성 시 Dictionary 테이블(ALL_IND_COLUMNS)의 인덱스 컬럼이 SYS_로 시작하는 알 수 없는 컬럼으로 조회가 됩니다.  또는 ALL_TAB_COLS 테이블에는 생성하지 않는 컬럼(SYS_로 시작하는)이 조회됩니다. 테이블 정의서 작성을 위해 위의 Dictionary 테이블을 사용할 때 주의하세요!



Descending Index 생성 및 Dictionary 테이블 조회


1. 테스트 테이블 생성 및 Descending Index 생성


1
2
3
4
5
6
7
8
9
10
/* 테이블 생성 */
CREATE TABLE TB_IND_TEST(
COL1            VARCHAR2(10),
COL2            VARCHAR2(20),
COL3            VARCHAR2(30) GENERATED ALWAYS AS ( COL1 || COL2 ) VIRTUAL
);
 
/* Descending Index 생성 */
CREATE INDEX IDX_TB_IND_TEST_01 
ON TB_IND_TEST (COL1 DESC, COL2 DESC);
cs


ALL_TAB_COLS 테이블의 HIDDEN_COLUMN항목과 VIRTUAL_COLUMN의 차이를 알기 위해 테이블을 생성 시 COL3 컬럼을 가상컬럼으로 생성하였습니다.


가상컬럼 SYNTAX

COLUMN_NAME [DATA_TYPE] [GENERATED ALWAYS] AS ( expression ) [VIRTUAL]


2. Dictionary 테이블 조회


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* 인덱스 컬럼 조회 */
SELECT T.INDEX_NAME
     , T.TABLE_NAME
     , T.COLUMN_NAME
  FROM ALL_IND_COLUMNS T
 WHERE 1=1
   AND T.TABLE_NAME = 'TB_IND_TEST'
;
 
/* ALL_TAB_COLUMNS 테이블 조회 */
SELECT T.TABLE_NAME
     , T.COLUMN_NAME
     , T.DATA_TYPE
  FROM ALL_TAB_COLUMNS T
 WHERE 1=1
   AND T.TABLE_NAME = 'TB_IND_TEST'
 ORDER BY T.COLUMN_ID
;
 
/* ALL_TAB_COLS 테이블 조회 */
SELECT T.TABLE_NAME
     , T.COLUMN_NAME
     , T.DATA_TYPE
     , T.HIDDEN_COLUMN
     , T.VIRTUAL_COLUMN
  FROM ALL_TAB_COLS T
 WHERE 1=1
   AND T.TABLE_NAME = 'TB_IND_TEST'
 ORDER BY T.COLUMN_ID
;
cs


- ALL_TAB_COLS 조회 결과



ALL_TAB_COLUMNS 테이블에서는 조회되는 않는 SYS_로 시작되는 컬럼이 조회가 되었습니다. Descending Index의 가상컬럼이자 히든컬럼으로 생성되었습니다.

그리고 가상컬럼으로 생성한 COL3 컬럼은 가상컬럼이지만, HIDDEN COLUMN은 아닙니다.


'데이터베이스' 카테고리의 다른 글

오라클 권한 조회  (0) 2017.06.28
오라클 계정과 권한  (0) 2017.06.23
오라클 TABLESPACE와 DATAFILE  (0) 2017.06.16
TIMESTAMP 연산  (0) 2017.05.11
오라클 - PIVOT과 UNPIVOT  (0) 2017.02.02
posted by 생각퍼즐
: