Make a Real DBA 오라클 저장 영역 구조 ㈜ 신한시스템즈 김 종 근김 종 근 김 종 근김 종 근
ORACLE DBMS Storage Architecture Make a Real DBA 2 오라클 DBMS 저장 영역 구조 테이블스페이스와 데이터 파일 세그먼트와 익스텐트 데이터 블럭 구조 Q & A
ORACLE DBMS Storage Architecture Make a Real DBA 3 저장 영역 설정 옵션 Storage Architecture CATEATE TABLE emp ( empno NUMBER(4) …, ename VARCHAR2(10) …, ………… ) TABLESPACE company STORAGE ( INITIAL 200K NEXT 200K PCTINCREASE 50 MINEXTENTS 5 MAXEXTENTS 20 FREELISTS 2 FREELIST GROUPS 2 ) PCTFREE 20 PCTUSED 50 INITRANS 5 MAXTRANS 10;
ORACLE DBMS Storage Architecture Make a Real DBA 4 오라클 DB 의 구성요소 Database 구성 파일 Tablespace & Data files Data file Control file Redo log files Database
ORACLE DBMS Storage Architecture Make a Real DBA 5 데이터 파일 데이터파일란 ? Tablespace & Data files 데이터의 물리적 저장소 하나 이상의 물리적 블록 (OS 블록 ) 으로 구성 Company Database a.dbfb.dbf c.dbf d.dbf
ORACLE DBMS Storage Architecture Make a Real DBA 6 테이블스페이스 테이블스페이스란 ? Tablespace & Data files 데이터의 논리적 저장소 하나 이상의 물리적 파일들로 구성 SALES T.SSystem T.SPRODUCT T.S Company Database a.dbfb.dbf c.dbf d.dbf
ORACLE DBMS Storage Architecture Make a Real DBA 7 세그먼트 세그먼트란 ? Segment & Extent 저장영역을 필요로 하는 오브젝트 예 ) 테이블, 인덱스 SALES T.SSystem T.SPRODUCT T.S Company Database a.dbfb.dbf c.dbf d.dbf
ORACLE DBMS Storage Architecture Make a Real DBA 8 익스텐트 익스텐트란 ? Segment & Extent 세그먼트에 저장영역을 할당하는 단위 하나 이상의 연속된 데이터 블록으로 구성 SALES T.SSystem T.SPRODUCT T.S Company Database a.dbfb.dbf c.dbf d.dbf
ORACLE DBMS Storage Architecture Make a Real DBA 9 데이터 블록 데이터 블럭이란 ? Data Block Structure 데이터를 저장하고 관리하기 위한 논리적 최소 단위 오라클의 최소 I/O 단위 SALES T.SSystem T.SPRODUCT T.S Company Database a.dbfb.dbf c.dbf d.dbf
ORACLE DBMS Storage Architecture Make a Real DBA 10 스토리지 계층 Data Block Structure LogicalPhysical Database Tablespace Segment Extent DB_Block OS Block Data File
ORACLE DBMS Storage Architecture Make a Real DBA 11 로 데이터 저장 Data Block Structure 테이블 및 인덱스의 데이터는 행 단위로 데이터 블록에 저장 블록 및 행의 사이즈에 의해 블록 내 행의 수가 결정 SALES T.SSystem T.SPRODUCT T.S Company Database a.dbfb.dbf c.dbf d.dbf 10 김종근부산시 동구 초량 … 40 최경식부산시 남구 대연 … 20 김동현부산시 동래구 … 30 신성식부산시 사하구 장림 Block Header
ORACLE DBMS Storage Architecture Make a Real DBA 12 로의 구조 Data Block Structure Row Header: 컬럼의 개수, 체인정보, 잠금 상태 Size: 3Bytes Column Data: 컬럼의 실제 값 Column Length: 컬럼 값이 길이 Size: 1Byte (Data<=250Bytes) 3Bytes (Data>250Bytes) HeaderLengthDataLengthData
ORACLE DBMS Storage Architecture Make a Real DBA 13 데이터 블록 헤더 Data Block Structure Fixed Header: 블록 주소, 세그먼트 종류 정보 Size: 57Bytes Size: 4Bytes * 테이블 수 Table Directory: 블록에 포함된 테이블에 대한 정보 Size: 2Bytes * 로 수 Row Directory: 블록 내 생성된 로에 대한 정보 Fixed + Variable HeaderTable DirectoryRow Directory Variable Header: 트랜잭션 슬롯 영역 Size: 23Bytes * 슬롯 수
ORACLE DBMS Storage Architecture Make a Real DBA 14 블록 내부에서 데이터 증감 Data Block Structure 데이터삽입가능데이터삽입불가데이터삽입가능 데이터삽입불가 Insert Delete Insert Data Increase Header Increase
ORACLE DBMS Storage Architecture Make a Real DBA 15 행 이전 Data Block Structure 40 최경식부산시 남구 대연 … 60 김진명 70 홍민우 50 이동원 80 김일동 부산시 중구 중앙동 90 이정현 부산시 해운대구 우 70 홍민우 부산시 중구 중앙동 UPDATE table SET addr= ‘ 부산시 중구 중앙동 …’ WHERE empno=70; addr 40 최경식부산시 남구 대연 … 60 김진명 50 이동원 80 김일동 부산시 중구 중앙동 90 이정현 부산시 해운대구 우
ORACLE DBMS Storage Architecture Make a Real DBA 16 PCTFREE, PCTUSED Data Block Structure PCTFREE PCTUSED 기본값 : 10% 차후 데이터 변경에 따른 Row 사이즈 증가시 사용 영역 UPDATE 구문에 의한 Row 사이즈 변화에 따라 적절한 값 사용 일정 영역 이상 사용가능 상태를 확보 기본값 : 40% 데이터 삭제 및 삽입, 조회 작업의 성격에 따라 적절한 값 사용 PCTFREE 와 PCTUSED 값의 의해 공간 활용도와 성능에 영향을 미친다. 공간 활용 자체가 성능에 밀접한 관계를 가지므로 신중히 고려하여야 할 것이다.
ORACLE DBMS Storage Architecture Make a Real DBA 17 INITRANS, MAXTRANS Data Block Structure Transaction Slot 트랜잭션 정보 ( 세션, 언두 ) 를 기록하는 공간 사이즈 : 23Bytes TX Slot 의 동적 할당 회피하기 위해 INITRANS 값을 사용하고, 공간 활용을 위해 MAXTRANS 를 사용한다. INITRANS 블록 내 TX Slot 의 최초 개수 기본값 : 1( 테이블 ), 2( 인덱스 ) 블럭내 로의 수와 동시 트랜잭션 량에 따라 적절한 값 사용 MAXTRANS 블록 내 TX Slot 의 최대 개수 기본값 : 255 Rollback Segment
ORACLE DBMS Storage Architecture Make a Real DBA 18 세그먼트 생성과 블록 활용 Data Block Structure CRATE TABLE a ( num NUMBER(4) …….. ) INITRANS 5 MAXTRANS 10 PCTFREE 20 PCTUSED 60;
ORACLE DBMS Storage Architecture Make a Real DBA 19 저장 영역의 할당 Data Block Structure A01.dbf CRATE TABLE a ( num NUMBER(4) …….. ); Segment Header Block: 익스텐트 테이블, 프리 리스트, 고수위 정보 Data Block: 사용자 테이블의 데이터 Extent
ORACLE DBMS Storage Architecture Make a Real DBA 20 PCTFREE 와 FREELIST Data Block Structure B1B3B4B5B2 FreeList search B3B4B5 search
ORACLE DBMS Storage Architecture Make a Real DBA 21 FREELISTS, FREELIST GROUPS Data Block Structure B1B3B4B5B2 search B1B3B4B2 search Free List: 삽입 가능한 블록의 목록 Free List Group: OPS 환경에서 세그먼트 헤더 블록에 대한 경합을 줄이기 위해 사용 Free List 블럭의 개수
ORACLE DBMS Storage Architecture Make a Real DBA 22 저장 영역 할당 단위 Data Block Structure A01.dbf CRATE TABLE a ( num NUMBER(4) …….. ) STORAGE ( INITIAL 200K NEXT 300K PCTINCREASE 50 MINEXTENTS 1 MAXEXTENTS 121); Initial(200k)next(300k) Minextents(1) Next=next*(1+pctincrease/100) Maxextents(121)
ORACLE DBMS Storage Architecture Make a Real DBA 23 저장 영역의 사용 Data Block Structure A01.dbf CRATE TABLE a ( num NUMBER(4) ……..); CRATE TABLE b ( num NUMBER(4) ……..); CRATE TABLE c ( num NUMBER(4) ……..); CRATE TABLE d ( num NUMBER(4) …….. ); A1 A2 A3 A4 A0B1 B2B3 B0 C2 C0 D0 C1
ORACLE DBMS Storage Architecture Make a Real DBA 24 세그먼트 삭제와 단편화 Data Block Structure A01.dbf A1 A2 A3 A4 A0 C2 C0 D0 C1 DROP TABLE b; A01.dbf A1 A2 A3 A4 A0B1 B2B3 B0 C2 C0 D0 C1
ORACLE DBMS Storage Architecture Make a Real DBA 25 세그먼트 삭제와 단편화 Data Block Structure A01.dbf A1 A2 A3 A4 A0 C2 C0 D0 C1 DROP TABLE b; DROP TABLE c;
ORACLE DBMS Storage Architecture Make a Real DBA 26 세그먼트 삭제와 단편화 Data Block Structure A01.dbf A1 A2 A3 A4 A0 D0 DROP TABLE b; DROP TABLE c;
ORACLE DBMS Storage Architecture Make a Real DBA 27 세그먼트 삭제와 단편화 Data Block Structure A01.dbf DROP TABLE b; A1 A2 A3 A4 A0 D0 DROP TABLE c; CREATE TABLE f ( num NUMBER(4) …… ) STORAGE( INITIAL 500k …. ); F0
ORACLE DBMS Storage Architecture Make a Real DBA 28 저장영역 설정시 고려사항 Data Block Structure 단편화를 없애자. 익스텐트 할당은 응답 속도에 영향을 준다. 저장영역의 낭비를 없애자. A01.dbf A1 A2 A3 A4 A0 D0F0
ORACLE DBMS Storage Architecture Make a Real DBA 29 세그먼트와 테이블스페이스 Data Block Structure CRATE TABLE a ( num NUMBER(4) …….. ) TABLESPACE sales STORAGE ( …….. ); SALES T.S PRODUCT T.S Company Database a.dbfb.dbf c.dbf CRATE TABLE b ( num NUMBER(4) …….. ) TABLESPACE product STORAGE ( …….. );
ORACLE DBMS Storage Architecture Make a Real DBA 30 주요 시스템 테이블스페이스 Tablespace & Data files 시스템 테이블스페이스. 데이터딕셔너리 저장 데이터베이스 생성시 생성 임시 테이블스페이스 정렬 작업을 위한 임시 데이터 저장 언두 ( 롤백 ) 테이블스페이스 트랜잭션을 위한 언두 정보 저장 System T.S s.dbf Temp T.S t.dbf RBS T.S r.dbf
ORACLE DBMS Storage Architecture Make a Real DBA 31 사용자 테이블스페이스 생성 Tablespace & Data files CREATE TABLESPACE product DATAFILE ‘ / …./p1.dbf ’ SIZE 1000M; System T.S SALES T.S s1.dbfs2.dbf PRODUCT T.S p1.dbf s.dbf Temp T.S t.dbf RBS T.S r.dbf CREATE TABLESPACE sales DATAFILE ‘ / …./s1.dbf ’ SIZE 500M, ‘ / …./s2.dbf ’ SIZE 500M DEFAULT STORAGE( INITIAL 200K NEXT 200K PCTINCREASE 50 MINEXTENTS 5 MAXEXTENTS 20 FREELISTS 2 FREELIST GROUPS 2 );
ORACLE DBMS Storage Architecture Make a Real DBA 32 지역 관리 테이블스페이스 (8i) Tablespace & Data files CREATE TABLESPACE product DATAFILE ‘ / …./p1.dbf ’ SIZE 1000M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K DEFAULT STORAGE( INITIAL 200K NEXT 200K PCTINCREASE 50 MINEXTENTS 5 MAXEXTENTS 20 FREELISTS 2 FREELIST GROUPS 2 ); p1.dbf PRODUCT T.S ※ next, pctincrease 값은 무시됨 익스텐트 할당 정보를 각 데이터 파일에서 비트맵으로 관리
ORACLE DBMS Storage Architecture Make a Real DBA 33 지역 관리 테이블스페이스의 장점 Tablespace & Data files 성능과는 무관하게 많은 익스텐트 사용 단편화가 없다. 동시성, 속도 향상. 비트맵 이용 동일 익스텐트 사이즈 딕셔너리 의존도 제거 딕셔너리 경합 제거 딕셔너리에 대한 작업 제거 p1.dbf PRODUCT T.S
ORACLE DBMS Storage Architecture Make a Real DBA 34 테이블스페이스 생성시 고려사항 Tablespace & Data files SALES T.S System T.S PRODUCT T.S s1.dbfs2.dbf p1.dbf s.dbf Temp T.S t.dbf RBS T.S r.dbf 데이터의 확장성 물리적 I/O 성능 데이터의 성격 실패시 영향
ORACLE DBMS Storage Architecture Make a Real DBA 35 저장 영역 설정 옵션 Storage Architecture CATEATE TABLE emp ( empno NUMBER(4) …, ename VARCHAR2(10) …, ………… ) PCTFREE 20 PCTUSED 50 INITRANS 5 MAXTRANS 10; STORAGE ( INITIAL 200K NEXT 200K PCTINCREASE 50 MINEXTENTS 5 MAXEXTENTS 121 FREELISTS 2 FREELIST GROUPS 2 ) TABLESPACE company
ORACLE DBMS Storage Architecture Make a Real DBA 36 감사합니다
ORACLE DBMS Storage Architecture Make a Real DBA 37 Q & A