기술 정보
home
채널 소개
home

마지막 컬럼이 Null인 테이블 크기 산정 (Block Dump)

문서 유형
기술 정보
분야
튜닝
키워드
Null
1 more property

개요

테이블이 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
복사