Microsoft PowerPoint - Tech-iSeminar_Managing_Tablespace.ppt

Similar documents
Tablespace On-Offline 테이블스페이스 온라인/오프라인

목 차

62

PowerPoint Presentation

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

오라클 데이터베이스 10g 핵심 요약 노트

Simplify your Job Automatic Storage Management DB TSC

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Oracle Database 10g: Self-Managing Database DB TSC

MS-SQL SERVER 대비 기능

Microsoft Word - 10g RAC on Win2k.doc

PowerPoint 프레젠테이션

Document Server Information Items Description Test Date 2011 / 05 / 31 CPU Intel(R) Xeon(R) CPU 2.40GHz X 8 Main Memory 1GB O/S version OEL 5.

Advanced Product Service

슬라이드 1

세미나(장애와복구-수강생용).ppt

The Self-Managing Database : Automatic Health Monitoring and Alerting

Microsoft Word - dataguard_세미나_v1.8.doc

CD-RW_Advanced.PDF

PowerPoint Presentation

Jerry Held

슬라이드 1

最即時的Sybase ASE Server資料庫診斷工具

단계

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft PowerPoint - Linux_10gRAC_3Node


PowerPoint Presentation

Contents Data Mart 1. 개요 실습방향 테스트위한사전설정 본격실습시작 ) 데이터파일 dd 명령어로 백업수행및유실시키기 ) 장애복구수행 결론...7 페이지 2 / 7

Orcad Capture 9.x

Tina Admin

Data Guard 기본개념.doc

휠세미나3 ver0.4

삼성955_965_09

FlashBackt.ppt

큰 제목은 18 bold

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

PowerPoint 프레젠테이션

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

<4D F736F F D205BB4EBBBF3C1A4BAB8B1E2BCFA5DB1E2BCFAB9AEBCAD2D524D414EBBE7BFEBBFB9C1A65F39695F313067>

BMP 파일 처리

untitled

제목을 입력하세요.

Tibero

PowerPoint Presentation

Microsoft PowerPoint - o8.pptx

슬라이드 1

OCP PL/SQL

MAX+plus II Getting Started - 무작정따라하기

USER GUIDE

PRO1_02E [읽기 전용]

Oracle Wait Interface Seminar

문서 제목

³»Áö¼öÁ¤

DBMS & SQL Server Installation Database Laboratory

PRO1_09E [읽기 전용]

DocsPin_Korean.pages


SRC PLUS 제어기 MANUAL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

DBPIA-NURIMEDIA

歯sql_tuning2

LCD Display

NoSQL

Microsoft PowerPoint - Tech-iSeminar_Flashback.ppt

APOGEE Insight_KR_Base_3P11

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

제품소개

chap 5: Trees

ODS-FM1

강의10

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

Oracle Regular Expression

DATA GUARD GUIDE

Microsoft PowerPoint - Tech-iSeminar_RollbackUndo.ppt

solution map_....

Remote UI Guide

untitled

Microsoft Word - Automap3

PowerPoint 프레젠테이션

Oracle9i Real Application Clusters

K7VT2_QIG_v3

슬라이드 1

MPLAB C18 C

Analyst Briefing

C# Programming Guide - Types

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

oracle9i_newfeatures.PDF

untitled

Oracle Database 12c High Availability

Microsoft PowerPoint - Tech-iSeminar_Logminer.ppt

2008

금오공대 컴퓨터공학전공 강의자료

Microsoft Word - FunctionCall

UNIST_교원 홈페이지 관리자_Manual_V1.0

6.24-9년 6월

13주-14주proc.PDF

Microsoft Word - Oracle10gDB ±âº»¿î¿µÁöħ¼�.doc

Smart Power Scope Release Informations.pages

Transcription:

Tablespace 의관리 Getting the most out of MetaLink 최창권, 김주연 제품지원실한국오라클 ( 주 ) 한국오라클에서주최하는 Technical iseminar DATABASE의 tablespace 이해 에참석해주신여러분께감사드립니다. 저는한국오라클제품지원실에근무하는최창권입니다. 오늘세미나에서는 ORACLE database의논리적인저장소역할을하는 TABLESPACE 에대해서설명하고자합니다. 질의응답시간이마지막에따로있으므로세미나를끝까지들어주셨다가질의응답시간을잘활용해주시길바랍니다. 또한세미나중궁금한사항은 chatting 창을통해서문의를해주시면세미나가끝난뒤응답하는순서로진행하도록하겠습니다. 그럼 DATABASE의 tablespace 이해 세미나를시작하도록하겠습니다.

목 차 Tablespace and Datafile Space Management of Tablespace Dictionary Managed Tablespace Locally Managed Tablespace DBMS_SPACE_ADMIN package Type of Tablespace Managing Tablespace using OMF 질의및응답 2 먼저논리적인개념의 tablespace 와물리적인개념의 datafile 간의관계를설명하도록하겠습니다. 이러한 tablespace 는 space management 방식에따라서 ORACLE 8i 까지주로사용되었던 dictionary managed tablespace 와 ORACLE 8i 에서소개되어 ORACLE 9i 에서주로사용되고있는 locally managed tablespace 방식으로나뉘게됩니다. 또한 dictionary-managed tablespace 를 locally-managed tablespace 방식으로변환을가능케하는 dbms_space_admin package 를소개하도록하겠습니다. 그리고 tablespace 의 type 에따라서 system tablespace, data tablespace, undo tablespace, temporary tablespace 등 tablespace 의 각 type 에 대해서간략하게 설명을 하도록 하겠습니다. 또한 Tablespace 내에서사용되는 datafile 을 ORACLE 에서 managing 할수있도록하는 OMF ( ORACLE managed File) 에대해서알아보도록하겠습니다.

DATABASE Storage Hierarchy Database Tablespace Data file Logical Segment Physical Extent Oracle block OS block ORACLE database 는다음과같은 hierarchy 구조를같습니다. Segment 는 extent 들의조합으로이루어져있으며각 extent 들은 DB_BLOCK_SIZE 에의한 ORACLE block 으로이루어져있습니다. 또한각 Segment 들은 Tablespace 에저장이됩니다. Tablespace 는 ORACLE database 가만들어놓은 logical storage 공간이며이며, 하나이상의 datafile 을포함하여 physical 하게저장하게됩니다. 따라서 datafile 을 physical storage 공간이라고합니다. tablespace, segment, extent, oracle block 을 ORACLE 에서정의하는 logical storage 라고하며, datafile, os block 을 physical storage 라고합니다. 그럼 hierarchy 구조에서 Tablespace 와 datafile 에대해서알아보도록하겠습니다.

Tablespace and Datafile Logical storage - Tablespace 하나이상의 Datafile 로구성 Physical storage Datafile, Tempfile 하나의 Tablespace 에저장 스키마객체 data의저장소 4 Database 와 Tablespace, datafile 은서로밀접하게연관되어있으며이들의차이점에대해서알아보고자합니다. 먼저 ORACLE database 는 tablespace 라는하나이상의 logical storage 영역단위로구성되어있으며 Tablespace 는 ORACLE database 의모든 data 를저장하게됩니다. 그리고각 Tablespace 는 Datafile 이라는하나이상의 file 로구성되어있으며이러한 datafile 은 ORACLE 을실행중인운영체제의 physical storage 영역입니다. 하나의 datafile 은하나의 tablespace 에포함되어있으며각 schema 의 object 를저장하는공간입니다. Tablespace 중 Temporary tablespace 의경우에는 tempfile 이라는 physical file 을생성하게됩니다.

Space Management of Tablespace Locally Managed Tablespace 사용가능한 extent 는 Tablespace 에서관리 bitmap 에서 free extent 를기록 bit 값은 free 와 used 상태를표시 Dictionary Managed Tablespace 사용가능한 extent 는 data dictionary 에서관리 extent 가할당되거나해제될때해당 base table 이갱신됨 5 Hierarchy 구조에서보았겠지만 Tablespace 는각각의 segment 에따라 extent 단위로공간을할당하게됩니다. Tablespace 를생성하여 free extent 와 used extent 를추적하는방법은다음과같은 2 가지방법이있습니다. Locally-managed tablespace는 free extent 가 tablespace 내의각 datafile에서 bitmap 을통해서관리가됩니다. bitmap block 의각 bit 는 extent 자체가 free 및 used 상태에대한정보를가지고있기때문에해당 bitmap 정보만을통해서 free 상태와 used 상태를파악할수있습니다. Dictionary-managed tablespace 의경우는 free extent가 base table 내에서관리가됩니다. 따라서 extent 정보가 allocation되거나 de-allocation 되는경우 base table 자체를 update 하는방식으로사용됩니다. 이때갱신되는 base table 은 sys 소유의 uet$, fet$ table입니다.

Locally Managed Tablespace 8i 에서소개됨 Data Dictionary Table 의경합을줄인다 공간할당이나해제시에 undo 정보를생성하지않으며 base table을건드리지않는다 Coalescing 작업이필요없음 6 Locally managed tablespace는 8i 에서소개가되었으며자신이보유하고관리하는각 extent들에대한 freed, used 여부를 bitmap형태로각구성 datafile들에저장합니다. Bitmap내의각 bit들은하나의 block 또는 block의묶음 (extent) 에대한 status를표시합니다. 만약이들 extent들을 free하거나할당받아서사용하게되면각각의 extent에해당하는 bitmap값들이변경되게됩니다. 이렇게변경된사항들은 data dictionay table에 update작업을수행하지않는관계로 undo 정보를생성하지않을뿐만아니라 data dictionary table 에대한contention을줄일수가있기때문에 performance 에효과를가지고있습니다. 또한이렇게 local로관리되는경우인접한각 free extent들에대한정보가자동적으로추적가능하기때문에 free extent를 coalesce할필요성이없어지게됩니다. Locally managed tablespace는동일한 size의 extent들을가지도록설정할수있으며, system이자동으로그 extent의 size를결정하도록하는방식이있습니다. 이는 Tablespace 생성시의 UNIFORM 또는 AUTOALLOCATE option 을이용하여결정할수있습니다.

Locally Managed Tablespace Autoallocate tablespace 내의각 extent size 를 system 이관리함 기본 extent 는 64k 로지정이됨 Uniform allocate tablespace 내의각 extent size 는 user 가지정한일정한 size 로만생성됨 default size 는 1MB 임 extent management 절을명시하지않는다면 AUTOALLOCATE 가 default 로이용됨. 7 Locally-managed tablespace 방식은 다음과 같이 Autoallocate 방식과 Uniform 방식이 있습니다. Autollocation 방식은 tablespace 내의각 extent size 를 system 이관리하며 user 가 extent 의 size 를지정할수가없습니다. Autoallocate 방식의기본적인 extent size 는 64k 이며 extent 가할당됨에따라서 system 이자동으로 extent size 를지정하게됩니다. LOCAL 절을사용하면서 AUTOALLOCATE 또는 UNIFORM 을명시하지않는다면 default 로 AUTOALLOCATE 가사용되게됩니다. UNIFORM allocate 는 tablespace 내의각 extent size 가 user 가지정한일정한 size 로만생성이됩니다. uniform size 를지정하지않는다면해당 extent size 는 default 로 1M 가설정되게됩니다. UNIFORM size 로사용하실경우에는생성후에 uniform size 를변경하지못하기때문에 size 를적절하게고려하여야합니다. 예를들어 100M 의 size 로 uniform size 를잡아놓았는데해당 Tablespace 에작은양의 object 가저장되고있다면이는 disk 의낭비를가져올수있기때문입니다.

Locally Managed Tablespace File Structure File header (1block) Bitmapped file space header (1block) Head portion of bitmap blocks (N block) Useful file blocks (U units) Tail portion of bitmap blocks (M block) 8 그럼 Locally-managed tablespace 의 datafile 의구조를다음과같이알아보도록하겠습니다. 전체적으로 FILE header 와 Bitmapped file space header 와 head portion of bitmap blocks 와 Useful file blocks 의 tail portion of bitmap blocks 의구조를가지고있습니다. File Header : 1 block Bitmapped File Space Header : 1 block Head portion of Bitmap Blocks : N blocks Useful file blocks : U units (A unit is a number of blocks.) Tail portion of Bitmap Blocks : M blocks If a Unit = B blocks, then the total file size = 1 + 1 + N + U*B +M. The OS file allocated will in some cases be file size + 1 block for the os header.

File Space Header Block ***************************************************************** Start Start dump dump data data blocks blocks tsn: tsn: file#: file#: minblk minblk 2 maxblk maxblk 2 buffer buffer tsn: tsn: rdba: rdba: 0x00c00002 (/2) (/2) scn: scn: 0x05f.28afd1d seq: seq: 0x02 0x02 flg: flg: 0x00 0x00 tail: tail: 0xfd1d1d02 frmt: frmt: 0x02 0x02 chkval: chkval: 0x0000 0x0000 type: type: 0x1d=KTFB Bitmapped File File Space Space Header Header File File Space Space Header Header Block: Block: Header Header Control: Control: RelFno: RelFno:,, Unit: Unit: 16, 16, Size: Size: 1024, 1024, Flag: Flag: 1 AutoExtend: NO, NO, Increment: 0, 0, MaxSize: MaxSize: 0 Initial Initial Area: Area: 7, 7, Tail: Tail: 1016, 1016, First: First: 2, 2, Free: Free: 61 61 Header Header Opcode: Opcode: Save: Save: No No Pending Pending Op Op End End dump dump data data blocks blocks tsn: tsn: file#: file#: minblk minblk 2 maxblk maxblk 2 ******************************************************************* 9 다음은하나의 block으로구성되는bitmapped file space header block 입니다. 이내용에서는 RelFno : relative file number Unit : Number of blocks in one unit 예를들어 db_block_size 가 8K 이고 uniform size 가 128k 라면 Unit 은 16 이됩니다. Size : file size 를의미합니다. ( 예를들어 1024 라면 db_block_size 가 8k 일경우에 1024 * 8192 = 8M 가됩니다. ) Flag : initial control 의위치라파일의시작부분에위치하는내용을의미한다. AUTOEXTEND : autoextend option INCREMENT : autoextention시 extend 되는 size MAXSIZE : datafile 의 MAXSIZE INITIAL AREA : SPACE HEADER BLOCK 을포함한 bitmap block 의개수 TAIL : useful block 의가장마지막 block 이때 tail 이 1018 번째의 block 을가르키고있으며 datafile header 를포함하여 bitmap block 의수는 8 block 이기때문에 datafile 은 6 개의 extent 를가지게됩니다. FIRST : free extent 를찾는처음 extent 를의미합니다. 따라서현재사용된 extent 를의미하게됩니다. FREE : 사용가능한 extent 을의미한다.

File Space Bitmap Block (Free Block) ******************************************************************* ******************************************************************* Start Start dump dump data data blocks blocks tsn: tsn: file#: file#: minblk minblk maxblk maxblk buffer buffer tsn: tsn: rdba: rdba: 0x00c0000 0x00c0000 (/) (/) scn: scn: 0x05f.28afb06 0x05f.28afb06 seq: seq: 0x01 0x01 flg: flg: 0x00 0x00 tail: tail: 0xfb061e01 0xfb061e01 frmt: frmt: 0x02 0x02 chkval: chkval: 0x0000 0x0000 type: type: 0x1e=KTFB 0x1e=KTFB Bitmapped Bitmapped File File Space Space Bitmap Bitmap File File Space Space Bitmap Bitmap Block: Block: BitMap BitMap Control: Control: RelFno: RelFno:,, BeginBlock: BeginBlock: 9, 9, Flag: Flag: 0, 0, First: First: 0, 0, Free: Free: 6488 6488.... < < File File truncated truncated > >.... End End dump dump data data blocks blocks tsn: tsn: file#: file#: minblk minblk maxblk maxblk ********************************************************************** ********************************************************************** 10 RELFNO : Relative Fileno to which the block belongs BEGINBLOCK : The first block which can be allocated FLAG : Zero for permanent blocks FIRST : Where to start looking for free space ( Bit before first free bit ) FREE : Number of free slots ( bits ) in the bitmap ( not the file ) 다음의경우는 tablespace 를생성하여 object 가생성되기전에 block dump 를수행하였기때문에 free extent 를 0 번째에서찾습니다.

File Space Bitmap Block(Used Block) *********************************************************************** *********************************************************************** Start Start dump dump data data blocks blocks tsn: tsn: file#: file#: minblk minblk maxblk maxblk buffer buffer tsn: tsn: rdba: rdba: 0x00c0000 0x00c0000 (/) (/) scn: scn: 0x05f.28aff0 0x05f.28aff0 seq: seq: 0x01 0x01 flg: flg: 0x04 0x04 tail: tail: 0xff01e01 0xff01e01 frmt: frmt: 0x02 0x02 chkval: chkval: 0xcd19 0xcd19 type: type: 0x1e=KTFB 0x1e=KTFB Bitmapped Bitmapped File File Space Space Bitmap Bitmap File File Space Space Bitmap Bitmap Block: Block: BitMap BitMap Control: Control: RelFno: RelFno:,, BeginBlock: BeginBlock: 9, 9, Flag: Flag: 0, 0, First: First: 12, 12, Free: Free: 6476 6476 FF0F000000000000 FF0F000000000000.... <File <File truncated> truncated>.... End End dump dump data data blocks blocks tsn: tsn: file#: file#: minblk minblk maxblk maxblk ************************************************************************* ************************************************************************* 11 그렇다면 extent 를발생시킨후에변경된 bitmap 에대해서살펴보도록하겠습니다. FF0F 의경우는 2 진수로 11111111 00001111 로변경되게되는데, LSB ( Least Significant byte) 를사용하게되면 11111111 11110000 으로변경되어 used extent 와 free extent 를나타내게됩니다.

Dictionary Managed Tablespace Extent 가 Data dictionary 에서관리됨 Tablespace 에저장되어있는 segment 에서로다른storage 절을부여할수있음 Coalescing 이필요함 fet$ / uet$ 에서 extent 관리 12 Dictionary-managed tablespace 는 ORACLE 8i 까지 default 방식으로사용이되었으며 extent 를 dictionary table에서관리가됩니다. Locally managed tablespace 에서는 bitmap 에서 free 및 used 상태를표시하는반면에 Base table 인 uet$ 와 fet$ table 에서 free extent 와 used extent가관리되어지는데 extent 가할당되거나 free 되는경우에해당 dictionary table을 update 하는관리기법입니다. 따라서 dictionary table에대한 contention이발생할수있습니다. Dictionary-managed tablespace 는 tablespace 내에생성되는 segment 에대한각각의 storage 를부여하는방식이며각각의 extent 의 size 가달라지기때문에주기적인 coalescing 작업이진행되므로 smon 의부하를줄수있습니다.

DBMS_SPACE_ADMIN package Migrating a Dictionary-Managed Tablespace to Locally-Managed Tablespace begin dbms_space_admin.tablespace_migrate_to_local (tablespace_name=> 'USERS', rfno=>5); end; begin dbms_space_admin.tablespace_migrate_from_local (tablespace_name=>'test2'); end ; 1 Space 관리기법에따라서 locally-managed Tablespace 와 Dictionary-Managed tablespace 를알아보았습니다. Bitmap structure 에서알아보았듯이비트맵헤더는파일내에서 free extent 의시작부분에기록되게할수있는데, 이와같이 dictionary-managed tablespace 에 bitmap 정보를추가할수있게하기위해서는 DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 을사용하여야한다. 제약사항으로는 SYSTEM tablespace 는 migration 을할수없으며, 오프라인상태의 Tablespace 나, Locally Managed Tablespace 또는 Temporary Tablespace 는변경할수가없습니다. 따라서 Temporary Tablespace 를 Locally Management 방식으로바꾸기위해서는 tablespace 를 drop 시키고, CREATE TEMPORARY TABLESPACE command 를이용하여 tablespace 를재생성하면됩니다. 또한변경대상테이블스페이스에는비트맵정보를추가할만큼의여유공간이있어야합니다. 또한반대의경우로변경하고자하는경우에는 dbms_space_admin.tablespace_migrate_from_local package를이용할수있습니다.

USER type locally managed tablespace DMT(Dictionary-managed TS) 에서 LMT(Locally-managed TS) 로변경된경우 allocate_type이 USER로설정됨 기존의방식처럼 storage 절의사용이가능 DMT 에비해performance 에효과가있다. ST enqueue contention 이없다 extent operation에효과적이다 14 Dbms_space_admin package 를이용하여 dictionary-managed tablespace 에서 locally managed tablespace 로변경이되게되면 locally managed tablespace 의 allocation_type 은 USER type 으로생성이됩니다. SQL> select TABLESPACE_NAME, EXTENT_MANAGEMENT, ALLOCATION_TYPE,PLUGGED_IN 2 from DBA_TABLESPACES; TABLESPACE_NAME EXTENT_MAN ALLOCATIO PLU ------------------------------ ---------- --------- --- SYSTEM DICTIONARY USER NO RBS DICTIONARY USER NO TEMP DICTIONARY USER NO TOOLS DICTIONARY USER NO USERS LOCAL USER NO <--MIGRATED IDX DICTIONARY USER NO MRFACTDATA LOCAL USER NO <--MIGRATED LOCAL_AUTO LOCAL SYSTEM NO <--NOT MIGRATED LOCALLY_MANAGED LOCAL UNIFORM NO <--NOT MIGRATED 이와같이생성된 USER type 의 locally managed tablespace 의경우는기존의 dictionary managed talespace 에서생성되었던 extent 들이존재하기때문에 UNIFORM/AUTOALLOCATE 등의 extent managedment 정책을따르지않고단지 bitmap 정보를만들어 ST enqueue contention 이나 dictionary table 의 contention 을줄일수있기때문에 performance 에효과가있습니다.

9i Type of Tablespace SYSTEM Tablespace data dictionary 포함 SYSTEM undo segment 를포함 Data Tablespace Undo Tablespace Temporary Tablespace 10g BFT ( Big File Tablespace ) 15 Tablespace 의 type Tablespace 의 type 으로는 system, undo, temporary, data 영역등의 4가지 tablespace type 이있으며 system tablespace 에는 dictionary table 등이존재하며 system undo segment 가존재합니다. 그리고 data 에관련한 tablespace 가있으며 9i 에서부터존재하는 UNDO tablespace 는과거의data tablespace 에 rollback segment 를생성하는방식과다르게 UNDO segment 만을위해서생성이되게되며 temporary tablespace 의경우 tempfile 을생성하게됩니다. 10g 에서는새로운 new feature 로 big file 을제공하는 Big file tablespace 라는개념이도입되었습니다. 이 BFT 는개념적인내용만설명을하도록하겠습니다.

Undo Tablespace UNDO_MANAGEMENT UNDO_TABLESPACE Undo segment 를저장 다른 object를포함할수없음 Extent 가 local 로관리됨 CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '/DISK2/undo_01.dbf' SIZE 500M ; 16 Undo tablespace 는 ORACLE 9i 에서 undo segment를자동관리가되면서새롭게제공된 tablespace 의 type 입니다. ORACLE 9i 에서는 UNDO_MANAGEMENT 와 UNDO_TABLESPACE parameter 가제공됩니다. 이 UNDO_MANAGEMENT parameter 는 AUTO / MANUAL 의두가지형태로설정이가능하며 dynamic 하게변경이되지는않습니다. AUTO 의경우는 undo segment 자체를 ORACLE 에서자동관리가되며각 transaction 에의해 undo segment 가자동으로생성이되며자동으로 offline이되는방법입니다. MANUAL 로설정하는경우에는과거의 rollback segment 를사용하는방법과같습니다. UNDO_TABLESPACE 에서는사용되는 UNDO tablespace 를설정하며이는 dynamic 하게변경이가능합니다. 만약 RAC 와같이여러 instance 를하나의 database 에사용한다면 UNDO tablespace 는각 instance 마다하나씩만들어해당 node 에할당이되어야합니다. Undo tablespace 는 database가생성되는시점에서생성이되며추후 create undo tablespace command를통해서생성이가능합니다. Database 가사용할수있는 undo tablespace 는여러 undo tablespace 가있을지라도하나만을사용할수있습니다. 이를변경하고자하는경우에는 UNDO_TABLESPACE 를동적및 parameter file 에서변경하여사용이가능합니다. Undo tablespace 에서사용되는 parameter 중하나를더소개하자면 undo_retention 이라는 parameter 입니다. Undo_retention parameter 는 undo image 를보존하고있어야하는특정시간을의미합니다. 따라서 undo_retention parameter 를큰값으로 assign 하는경우에는 undo tablespace 의양이많이필요하게됩니다.

Temporary Tablespace 정렬작업에사용 여러 user 가공유할수있음 permanent object를포함할수없음 Locally managed tablespace로생성 CREATE TEMPORARY TABLESPACE temp TEMPFILE '/DISK2/temp_01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M; 17 Temporary tablespace 는 sort 작업에대해작업공간을효과적으로사용할수가있습니다. 해당 sort segment는여러 user가공유할수가있습니다. Temporary tablepace 는 tempfile 형식으로생성이되기때문에 permanent 형식의 object 를포함할수가없습니다. Temporary tablespace 로 tablespace 를생성하게되면 locally managed tablespace 로생성이되게됩니다. 제약사항으로는 temporary file 은항상 nologging 모드로설정이되며 read only로설정할수가없습니다. 또한 rename 이불가능하여 rename을하고자하는경우에는해당 datafile 을 drop 하고새롭게추가하는과정을거쳐야합니다. 또한 media recovery 가필요하지않기때문에 backup을받으실필요가없습니다. 생성시주의사항으로는 ORACLE 9i 에서부터제공되는 multi block size 를사용할수있지만 temporary tablespace 를생성할때는 db_block_size 와다른 size 의 non-standard block size 를지정할수가없습니다. temporary tablespace 생성시 autoallocate, extent management dictionary option 을사용하게되면 ora-2519 error 가발생합니다.

10g : BFT (Bigfile Tablespace) 하나의 datafile 만을가진다. maximum file size : 8TB ~ 128TB relative file number 가없다. file number 가고정 (1024) 기존 rowid 에서지정되던 file 의 자리와 block 의 6자리를합쳐 9자리를 block number 로지정. 18 Tablespace 에대해서설명을하다보니 10g 에서새롭게제공되는 big file tablespace 를약간소개하고자합니다. 10g tablespace 에서소개가되는big file tablespace 는향후많은 data가증가하며 disk 가큰용량으로지원이됨에따라서 ORACLE 에서도 8~128 TB 의 datafile 을지원되는tablespace 가만들어지게되었습니다. 기존에는하나의 tablespace 에여러 datafile 이포함되어사용이되었으나 BFT 에서는하나의 tablespace 에하나의 datafile이 mapping이됩니다. 이 big datafile은 size 자체가아주크기때문에 file에포함될 block 의양이기존의방식에비해많은양이늘어나게됩니다. 이많은양의 block 을 rowid 내에기술하기위해서기존의 rowid 에 relative file 관련한 자리와 block 에관련한 6 자리에대해서 BFT 방식에서는 file number 를 1024 로지정을하며 file 과 block 에관련한 9자리를 block 에할당을하게됩니다. 이렇게 BFT 에서는 rowid 가변경되게됩니다. 간단하게이정도로 10g 에서소개되는 BFT 에대해서는설명을드렸습니다.

Managing Tablespace using OMF OMF (ORACLE Managed Files) initialization parameter ( 동적변경가능 ) DB_CREATE_FILE_DEST DB_CREATE_ONLINE_LOG_DEST_n datafile 의형태 DB_CREATE_FILE_DEST 의위치에 DATAFILE 이자동으로만들어진다. Default size 는 100M Autoextend 는 unlimited 로 setting 19 ORACLE 에서 file 을관리해주는 ORACLE managed file. DBA 가tablespace 를생성할때혹은기존의tablespace 에새로운datafile을추가할때실제 OS file 명을주거나크기를주면자동으로생성이됩니다. 이때 OMF 기능을사용하게되면 OS file 명을줄필요가없게됩니다. 즉, database 차원에서유일한 file명을생성하고그이름으로 datafile 을생성하는것입니다. 또한OMF 를이용하면 tablespace 에만들어진 datafile 의경우, 나중에 tablespace 를삭제할때 datafile 까지자동으로삭제가되게됩니다. 따라서 Tablespace 삭제후 datafile 을찾아서 OS 에서일일이삭제해야하는수고를덜어주게됩니다. OMF 에서이용될수있는 file 은 controlfile, online redo logfile, datafile, tempfile 등입니다. OMF 사용으로인한잇점으로는유일한파일명이생성되기때문에 DBA 가 file 명을잘못사용할염려가없으며사용되지않는 file은자동으로삭제가되기때문에사용되지않는 datafile로인한 disk 공간낭비의우려가없습니다. 또한 test 용이나개발용 database 생성이단순합니다. OMF 를사용하기위해서는다음과같은 parameter 를설정하셔야합니다. DB_CREATE_FILE_DEST, DB_CREATE_ONLINE_LOG_DEST_n 을지정을하셔야하는데이는동적으로변경이가능합니다. DB_CREATE_FILE_DEST parameter 는 datafile 을저장할 directory 를지정하는 parameter 이며 DB_CREATE_ONLINE_LOG_DEST_n parameter 는 controlfile, online redo logfile 의 directory 를지정하는 parameter 입니다. OMF 로 tablespace 를생성시에 size 를명시하지않으면 100M size 로생성이되며 autoextend 가 unlimited 로설정이됩니다.

OMF naming OMF Naming Structure 의예 Control Files : ora_%u.ctl Redo Log Files : ora_%g_%u.log Data Files : ora_%t_%u.dbf Temporary Data Files : ora_%t_%u.tmp 20 OMF 를사용하는경우에각 file 에대한 naming 규칙은다음과같습니다. 현재는ora_ 로시작하는 file로생성이되지만이는 OS 마다다른접두어로생성이됩니다. 다음의경우는 sun 의규칙에따른 naming 규칙입니다. Control Files : ora_%u.ctl Redo Log Files : ora_%g_%u.log Data Files : ora_%t_%u.dbf Temporary Data Files : ora_%t_%u.tmp

OMF 예 (HP) SQL> SQL> create tablespace omf_test ; SQL> SQL> alter tablespace omf_test add add datafile size size 2m 2m ; SQL> SQL> create temporary tablespace temp_omf tempfile size size 5m 5m ; SQL> SQL> alter database add add logfile size size 10M; 10M; SQL> SQL>!ls!ls -als -als o1_mf* 20512 -rw-r----- 1 aprdbms aprdbms 10486784 Jun Jun 17 17 05:47 o1_mf_5_0f16j8v_.log 20502 -rw-r----- 1 aprdbms aprdbms 104865792 Jun Jun 17 17 05:40 o1_mf_omf_test_0f0rz4l_.dbf 4120 4120 -rw-r----- 1 aprdbms aprdbms 210544 Jun Jun 17 17 05:41 o1_mf_omf_test_0f0vgwl_.dbf 152 152 -rw-r----- 1 aprdbms aprdbms 5251072 Jun Jun 17 17 05:4 o1_mf_temp_omf_0f0y82x_.tmp 21 다음은 HP system 에서 test 한결과입니다. HP 에서는 o1_ 로접두어로시작하는 file 로생성이되었습니다. 이렇듯 OS 마다다른접두어를사용하지만기본적인 file 형식은 unique 한식별자와 tablespace 이름, group 번호등을이용하게됩니다.

READ ONLY Tablespace READ operation만일어난다. Tablespace 내의 object drop 가능 READ ONLY 로변경 Tablespace 반드시 online 8i 전 version은 active traction이허용되지않으나이후 active transaction 이끝날때까지기다린후 read only active rollback segment가포함되지않을것 online backup이실행되지않을것 22 Read only tablespace Tablespace를사용중에read only로변경해서data의변경이없는상태로사용할수가있습니다. 또한 export 를사용시 transportable tablespace 를이용하는경우에변경하게됩니다. Alter tablespace read only command 는 tablespace를일시적인 read only mode 로설정합니다. 하지만해당 command는 data dictionary 에만영향을주기때문에 tablespace 내에있는 object 에대한 drop 은동작이가능합니다. 이는 drop command 가 tablespace 를구성하는물리적인file 에영향을미치는것이아니라 data dictionary 에 update하기때문에가능합니다. 특정tablespace 를 read only로변경하기위해서는해당 tablespace 가반드시 online이어야하며 8i 이전 version에서는 active transaction이있는 tablespace 에대해서는허용이되지않았지만 8i 이후 version에서는 active transaction 이다보장된후 read only로변경이됩니다. 또한 active rollback segment 가포함되어있지않아야하며 online backup 이실행중이아닌상황에서read only로변경이가능합니다.

Nonstandard block size Tablespace parameter setting db_2k_cache_size... db_2k_cache_size db_nk_cache_size 에서 standard block size 는지원되지않는다. 2 ORACLE 9i 에서는 multi db_block_size 에대하여지원이가능합니다. 이때실제 database 에적용되어있는 db_block_size 로모든 tablespace 는생성이됩니다. 하지만 multi db_block_size 로사용을원하는경우에는 tablespace 를생성할때 blocksize option을이용하여 multi block_size 에대해서지정이가능합니다. Nk 가 stardard block size 일경우에는 default 로적용이되기때문에이를지원되지않습니다.

Resizing a Tablespace Tablespace size 는변경이가능하다. file size 를변경하는방법 autoextend option resize using alter database command datafile 추가 alter tablespace command TABLESPACE user_data_01.dbf 100M user_data_02.dbf 100M user_data_0.dbf 200M USER_DATA 100M 24 Tablespace 의공간을일정하게사용하면서 data량이증가하게되면 tablespace 의 size 는변경이불가피하게됩니다. 따라서다음과같이 가지방법으로 tablespace 를변경할수가있습니다. 먼저기존의 datafile 의 size 를변경하는방법으로 autoextend option 을사용하여자동확장하도록하는방법입니다. 이를설정하게되면 extent 할당시 error 로인하여 transaction 작업이중단되는것을방지할수있습니다. 또한 manual 하게 resize command 를통하여변경하는방법이있습니다. 이렇게기존의 datafile의 size 를변경하는방법이있으며다른방법으로는새로운 datafile 을추가하는방법입니다.

Resizing a Tablespace ALTER DATABASE DATAFILE '/DISK5/app_data_0.dbf AUTOEXTEND ON ON NEXT 10M MAXSIZE 500M ; ALTER DATABASE DATAFILE '/DISK5/app_data_02.dbf RESIZE 200M; ALTER TABLESPACE user_data ADD DATAFILE '/DISK6/app_data_04.dbf SIZE 200M ; 25 Command 로는다음의예를참조하실수있습니다.

Move(rename) a Datafile SYSTEM Tablespace mount mode ALTER DATABASE RENAME FILE /u01/oradata/system01.dbf TO TO /u02/oradata/system01.dbf ; USER Tablespace ALTER TABLESPACE user_data OFFLINE ; ALTER TABLESPACE user_data RENAME DATAFILE /u01/oradata/olddata01.dbf TO TO /u02/oradata/newdata01.dbf ; ALTER TABLESPACE user_data ONLINE ; 26 또한부득이하게 disk 의 space 에관련하여 space 를늘리지못하는경우에는 datafile 의위치를변경해야하는경우가있습니다. 이때해당 tablespace 는반드시 Offline 이되어야하며 target datafile 이존재해야합니다. Step 으로보자면 첫째, 해당 tablespace 에대해서 offline으로설정을해야합니다. 둘째, source datafile 을 target datafile 로 copy해야하며, command 를이용하여 tablespace 의 datafile 을 rename 합니다. 셋째, 이후 tablespace 를 online 하여 v$dbfile 및 dba_data_files view 를이용하여 file name 이변경되어있는내용을확인후 OS 상에서기존의 datafile 을삭제할수있습니다. 주의해야할점이있다면 SYSTEM tablespace 의경우에는 offline 이될수없기때문에 database 를 shutdown 후 mount 시점까지 startup 후 alter database command 를통해서가능할수있습니다.

Tablespace 정보 DBA_TABLESPAES V$TABLESPACE DATAFILE 정보 DBA_DATA_FILES V$DATAFILE TEMPFILE 정보 DBA_TEMP_FILES V$TEMPFILE Tablespace 정보 27 해당 tablespace 에대한정보를알고자한다면다음의 view 를조회하여확인하실수있습니다. Tablespace 에대한정보는 v$tablespace 와 dba_tablespaces 에서확인이가능하며 datafile 에대한정보는 v$dbfile, v$datafile, dba_data_files 에서확인이가능하며 tempfile 의경우는 v$tempfile, dba_temp_files 에서확인이가능합니다.