본문 바로가기
TechNical/Oracle

오라클 마구잡이 정리 #2

by 강멍멍이 2007. 12. 8.
반응형

MODUAL 4. DATABASE STRUCTURE

 

TEMPORARY TABLESPACE

 - Temporary Segment만 포함, 할당 해제 후 재사용

PERMANENT TABLESPACE

-         일반 SEGMENT와 함께 Temporary Segment 포함

-         SMON(조각모음)에 의해 할당해제

-         영구 테이블 스페이스

 

ALTER TABLESPACE 테이블스페이스명 PERMANENT[TEMPORARY]

 데이터가 없다면 바꿀 수 있다.

 

LOCAL MANAGEMENT TEMPORARY 테이블 스페이스 생성

CREATE TEMPORARY TABLESPACE TEMP2

  TEMPFILE C:\TEMP02.DBF SIZE 1M

 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10K;

 

             - PERMANENT : Application Data

- LOCAL   - TEMPORARY : Temporary Segment

             - UNDO        : Undo Segment

 - DICTIONARY PERMANENT : table/index/undo/temporary segment

                - TEMPORARY : Temporary segment

 

9iR2 부터는 LOCAL 만 허용한다.

DEFAULT TEMPORARY TABLESPACE 생성

 지정해 주지 않으면 SYSTEM TABLESPACE를 사용하게 되므로 성능 저하를 초래한다.

 Locally Management 방식으로 생성한다.

 

 DEFAULT TEMPORY TABLESPACE default_temp

 TEMPFILE C:\temp01.dbf SIZE 200K

 

 CREATE USER TEST IDENTFIED BY TEST

 TEMPORARY TABLESPACE default_temp

 

 Default Temporary Tablespace 는 Offlline으로 만들 수 없다.

 

ALTER TABLESPACE 테이블스페이스명

ONLINE | OFFLINE[NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]

-         NORMAL : CHECKPOINT 수행

-         TEMPORARY : 기존의 파일이 offline 상태일때 사용, 매체 복구를 필요로 한다.

-         IMMEDIATE : CHECKPOINT 수행하지 않고 바로 Offline

-         FOR RECOVER : 특정 시점으로 복수시 사용

 

TABLESPACE를 OFFLINE으로 전환 하지 못 할 경우

-         SYSTEM TABLESPACE

-         활성화중인 UNDO SEGMENT

-         DEFAULT TEMPORARY TABLESPACE

 

ALTER TABLESPACE 테이블스페이스명 READ[ONLY|WRITE]

REDO-ONLY TABLESPACE 만들 때 주의점

-         TABLESPACE는 ONLINE

-         TABLESPACE에 활성화된 UNDO SEGMENT가 있어서는 안 됨

-         TABLESPACE가 현재 ONLINE BACKUP을 해서는 안 됨

 

DROP TABLESPACE 테이블스페이스명

[INCLUDING CONTENTS [AND DATAFILES] [CASECADE CONSTRAINTS]]

 - CASECADE CONSTRAINT : 참고 무결성 제약조건 삭제(부모 자식 관계를 끊는다)

 

[UNIT 2] TABLESPACE 공간 관리

테이블 스페이스는 데이터 파일만 따로 삭제하는 방법이 없다.

DATA FILE을 추가하는 방법

-         TABLESPACE에 DATA FILE 추가

 ALTER TABLESPACE 테이블스페이스명

 ADD DATAFILE 파일 경로

 

-         TABLESPACE에 AUTOEXTEND옵션으로 DATA FILE 추가

 ALTER TABLESPACE 테이블스페이스명

     ADD DATAFILE 파일 경로 SIZE [AUTOEXTEND ON]

 

ALTER DATABASE [데이터베이스명]

 DATAFILE 파일명

 RESIZE 크기

 

기존의 파일을 autoextend로 변경하기

ALTER DATABASE DATAFILE 파일명

 AUTOEXTEND ON NEXT 사이즈

 

데이터 파일 이동하기

a.       ALTER TABLESPACE USER2 OFFLINE

b.      OS상에서 이동

c.      ALTER TABLESPACE USER2 RENAME 원래 경로 TO 옮긴 경로

d.      ALTER TABLESPACE USER2 ONLINE

 

[UNIT 3] SEGMENT

 SEGMENT는 TABLESPACE에 특정 유형의 논리적 저장 구조로 할당된 영역

종류

-         TABLE SEGMENT

단일 ROW 저장, 가장 일반적

-         TABLE PARTITION SEGMENT

대용량 데이터 처리시 조각으로 나누어 관리

-         CLUSTER SEGMENT

대용량이고 빈번한 조인이 일어나는 테이블에 사용

-         INDEX SEGMENT

ROWID+COLUMN 값을 쌍으로 저장

-         INDEX-ORGANIZED TABLE SEGMENT

INDEX+TABLE (테이터를 직접 가지고 있는다)

-  INDEX PARTITION SEGMENT  

-  TEMPORARY SEGMENT

    JOIN,GROUP BY,ORDER BY 등과 가은 작업이 발생시 정렬

-         UNDO SEGMENT

변경 전 이미지 저장

-         LOB SEGMENT

     LOB타입을 별도의 SEGMENT에 저장

-         LOB INDEX SEGMENT

LOB SEGMENT가 생성 될 때 자동 생성

-         BOOTSTRAP SEGMENT

DICTIONARY CACHE 초기화에 사용, CACHE SEGMENT라고도 함

-         NESTED TABLE SEGMENT

테이블 내에 테이블

 

[UNIT 4] EXTENTS

 

최초의 SEGMENT 크기 = INITIAL * MINEXTENTS

 

우선순위 규칙

   SEGMENT > TABLESPACE > ORACLE 기본값

 

EXTENT의 할당

-         SEGMENT가 생성되는 경우

-         SEGMENT가 증가되는 경우

EXTENT의 해제

-         SEGMENT나 CLUSTER가 삭제되는 경우

-         TABLE을 변경(컬럼 제거)

-         TRUNCATE되는 경우

-         OPTIMAL PARAMETER 값보다 크고 FREE EXTENT를 갖고 있을 경우

 

단편화 정도 확인

 SELECT TABLESPACE_NAME,TOTAL_EXTENTS,PERCENT_EXTENTS_COALESCED

 FROM DBA_FREE_SPACE_COALESCED;

 

 단편화 제거하기 여러 번 해야 100에 가깝게 된다.

ALTER TABLESPACE 테이블스페이스명 COALESCE

 

[UNIT 5] DATABASE BLOCK

 

 TABLESPACE 생성시에도 설정 가능하다 (MULTI BLOCK TABLESPACE)

 

PCTFREE

-         더 큰 값으로 UPDATE를 위해 준비해 놓은 공간 PARAMETER

-         작게 설정할 경우 ROW MIGRATION이 발생

-         기본값은 10%

PCTUSED

-         INSERT가 시작되는 시점을 결정하기 위한 PARAMETER

-         작게 설정할 경우 공간 활용도가 낮아짐

-         크게 설정하면 서버에 부하가 걸린다.

-         추가 삽입 가능 여부를 FREELIST가 결정

-         기본값은 40%

-         잦은 FREELIST 체크에 대한 작업을 줄이므로 서버에 부하를 줄일 수 있다.

 

AUTOMETIC SEGMENT SPACE 관리

-         LOCALLY MANAGED방식의 테이블 스페이스에선 가능

-         LOB형태의 타입에는 사용 될 수 없다.

 

멀티 블록 테이블스페이스 생성

 a. 서버 SHUTDOWN

 b. 파라메터값에 db_16k_cache_size=16m 추가

 c. CREATE TABLESPACE IMSI

   DATAFILE C:\IMSI.DBF SIZE 200K

   BLOCKSIZE 16K

e.      테이블을 만들고 확인

   select * from dba_extents

   where segment_name = 생성한 테이블 명

 

CHAINING

-         ROW가 하나의 블록에 저장 될 수 없어서 여러 블록에 걸쳐 저장 되는 현상

 

단편화 제거

 EMP테이블에 단편화가 심할 경우 임시로 복사해 두었다가 TRUNCATE해서 깨끗이

 만들고 다시 채워 넣는다.

a.       create table emp2 as select * from emp

b.      truncate table emp

c.      insert into emp select * from emp2

d.      drop table emp2

 

MODULE 5. UNDO SEGMENT와 TEMPORARY SEGMENT

 

[UNIT 1] UNDO SEGMENT

 

하나의 UNDO SEGMENT는 여러 개의 TRANSACTION이 공유하여 사용가능한데, 이 때 저장되는 기본 단위는 블록 단위이다.

 

UNDO SEGMENT의 기능

-         TRANSACTION ROLLBACK   

-         TRANSACTION RECOVERY

TRANSACTION을 ROLLBACK하기 위해 UNDO SEGMENT를 사용

-         READ-CONSISTENCY

STATEMENT LEVEL

 - SET TRANSACTION ISOLATION LEVEL READ COMMITTED

 - COMMIT 되어진 정보만 읽는다.

TRANSACTION LEVEL

- SET TANSACTION ISOLATION LEVEL SERIALIZABLE

- 다른 값을 보려면 트렌젝션을 새로 시작하면 COMMIT된 정보를 읽는다.

 

     * SET TRANSACTION 명령은 반드시 첫 번째 문장이어야 한다

반응형

댓글