개요
테이블이 null 컬럼을 포함하고 있을 경우 null 컬럼의 위치에 따라 테이블 크기가 변경됩니다.
특히 마지막 컬럼이 NULL인 경우 테이블 공간을 더 효율적으로 사용할 수 있습니다.
본 문서에서는 마지막 컬럼이 Null인 테이블 크기 산정하는 방법에 대해 안내합니다.
방법
마지막 컬럼이 Null인 테이블 크기 조회
1. 테스트 테이블 생성
마지막 컬럼이 NULL인 테이블을 생성합니다.
CREATE TABLE TEST_END_NULL
(COL1 VARCHAR2(3) NOT NULL,
COL2 VARCHAR2(4000) NOT NULL,
COL3 VARCHAR2(4000) NULL,
COL4 VARCHAR2(4000) NULL,
COL5 VARCHAR2(4000) NULL,
COL6 VARCHAR2(4000) NULL,
COL7 VARCHAR2(4000) NULL,
COL8 VARCHAR2(4000) NULL,
COL9 VARCHAR2(4000) NULL,
COL10 VARCHAR2(4000) NULL);
SQL
복사
2. 데이터 적재
INSERT INTO TEST_END_NULL
SELECT LPAD(LEVEL,3,'0'),'A',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM DUAL
CONNECT BY LEVEL < 1000;
SQL
복사
3. Block Dump 대상 정보 조회
SELECT COUNT(*),
DBMS_ROWID.ROWID_TO_RELATIVE_FNO(ROWID) FILE_NO,
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) BLOCK_NO
FROM TEST_END_NULL
GROUP BY
DBMS_ROWID.ROWID_TO_RELATIVE_FNO(ROWID),
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID);
SQL
복사
4. Block Dump 수행
ALTER SYSTEM DUMP DATAFILE 0 BLOCK 69135;
SQL
복사
•
조회되는 ROWID 정보는 환경마다 다르므로, 실제 환경에 맞게 블록 번호를 지정해야 합니다.
•
생성된 블록 덤프 파일은 다음 경로에서 확인할 수 있습니다.
$TB_HOME/instance/$TB_SID/dump/tracedump
SQL
복사
5. Dump 확인
생성된 덤프 파일을 열어 테이블 크기 및 NULL 컬럼 처리 방식을 확인합니다.
**Dump start at 2017-04-02 10:16:56
DUMP of BLOCK file #0 block #69135
**Dump start at 2017-04-02 10:16:56
data block Dump[dba=00_00069135(69135),tsn=0000.00e441b4,type=13,seqno =1]
--------------------------------------------------------------
sgmt_id=33067 cleanout_tsn=0000.00e441b4 btxcnt=2
l1dba=00_00069127(69127), offset_in_l1=8
btx xid undo fl tsn/credit
00 0003.32.1549 01_00037288.00021.00015 E 0000.00e441b0
01 0000.00.0000 00_00000000.00000.00000 I 0000.00000000
--------------------------------------------------------------
Data block dump:
dlhdr_size=1330 freespace=825 freepos=2239 symtab_offset=0 rowcnt=661
Row piece dump:
rp 0 2239: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 30 30 31 .001
col 1: [2]
0000: 01 41 .A
rp 1 2248: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 30 30 32 .002
col 1: [2]
0000: 01 41 .A
rp 2 2257: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 30 30 33 .003
col 1: [2]
0000: 01 41
rp 3 2266: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 30 30 34 .004
col 1: [2]
0000: 01 41 .A
rp 4 2275: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 30 30 35 .005
col 1: [2]
0000: 01 41 .A
rp 5 2284: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 30 30 36 .006
.
.
.
//중략
.
.
.
//null 컬럼들에 대한 정보가 생략
SQL
복사