본문 바로가기

오라클 ADMIN

Tablespace and Data Files


Tablespaces 와 Data Files

오라클은 데이터를 저장할 때, 

메모리인 Tablespaces에 필요한 데이터를 적재시켜 놓고 작업을 한 후, 수시로 안전하게 하드디스크의 Data File에 저장





Tablespaces

- 한 개 또는 여러개 의 Data File로 구성되어 있음 (무조건 하나의 Data File은 있어야 함)

- 한 개의 Database에만 속할 수 있다.

- 종류에는 System Tablespace / Non-system Tablespace


-> System Tablespace: 데이터 딕셔너리들이 저장되어 있음, SYS 계정 소유지만 모든 사용자는 조회만 할 수 있음.

    System undo sepment 포함

    10g 부터는 SYSAUX Tablespace 등장 --> 성능 튜닝과 관련된 딕셔너리들이 저장되어 있음


-> Non-System Tablespace: DBA를 통해 생성, 삭제 가능 즉, 직접 관리 할 수 있는 Tablespace


- 생성방법

CREATE TABLESPACE 이름

DATAFILE '경로' SIZE *

AUTOEXTEND ON NEXT ** MAXSIZE ** ;


-> AUTOEXTEND ON NEXT 5M MAXSIZE 200M 

라고 쓰면 생성되는 Tablespace가 가득 차면 자동으로 5M 씩 늘어난다, 200M 가 될때까지.

    


- 조회

Tablespace 조회방법

SELECT tablespace_name, status, contents, extent_management, segment_space_management

FROM dba_tablespaces ;


Data File 조회방법

SELECT tablespace_name, bytes/1024/1024MB, file_name

FROM dba_data_files ;


여기서 사이즈가 나오지 않는 애들을 OFFLINE 되어있는 것들



- 용량관리

모두 DB OPEN 상태에서 해줘야함!!!

1. 수동으로 Tablespace에 Data File 추가하기

ALTER TABLESPACE 이름

ADD DATAFILE '경로' SIZE * ;


-->같은 테이블스페이스 안의 Data File 들은 크기가 달라도 상관이 없다

     하지만, 데이터 쓰는 방법은 하나의 Data File에 다 저장되는 것이 아니라 여러개의 Data File에 랜덤으로 나눠서 저장을 하기 때문에

백업할 때도 전체 Data File을 다 해야함, 어디에 뭐가 들어있는지 모르니까.

그래서 Data File 하나날라가게 되면 데이터도 날라가게 되는것



2. Data File 크기 수동으로 증가 시키기

ALTER DATABASE DATAFILE '경로' RESIZE 용량 ;



3. Data File 크기 자동 증가 시키기

ALTER DATABASE DATAFILE '경로' AUTOEXTEND ON ;


--> Data File 자동으로 증가됨

오라클 32비트 --> 최대 파일 1개의 크기는 16G

오라클 64비트 --> 최대 파일 1개의 크기는 32G 까지 가능 



※ 각 Data File들의 autoextend 유무 확인 방법

SELECT tablespace_name, bytes/1024/1024MB, file_name, autoextensible "Auto", online_status

FROM dba_data_files ;


여기서 AUTO 칼럼에서 YES 면 자동으로 증가되는 것, NO 면 아님




- Tablespace OFFLINE 시키기

테이블의 데이터를 더 이상 access 할수 없다.

즉, 해당 Tablespace에 접근을 못함, 파일에는 새로운 정보가 저장되지 않음

OFFLINE 시키지 못하는 테이블스페이스들 

--> System Tablespace, 현재 사용중인 Undo Segment, Default Temporary Tablespace

방법

1. Normal Mode

ALTER TABLESPACE 이름 OFFLINE ;


2. Temporary Mode

Data File이 하나라도 이상이 생겨 offline normal 수행이 되지 않을 때


3. Immediate Mode

장애가 나서 데이터를 내려쓰지 못하는 상황에서 offline 해야할 때

반드시 archive log mode 일때만 사용

ALTER DATABASE DATAFILE '경로' OFFLINE ;



특정 Data file만 offline 가능





- Data File 이동시키기


오프라인 되는 거 이동

순서!

해당 테이블스페이스 OFFLINE --> Data File 대상 위치로 복사 --> Control File내의 해당 Data file 위치변경 --> 테이블스페이스 온라인


ALTER TABLESPACE 이름 RENAME

DATAFILE '원래 있던 경로'

TO '새 경로' ;



오프라인 안되는거 이동

어쩔 수 없음 DB 종료하고 진행해야함

순서!

DB 종료 --> MOUNT 상태로 시작 --> Data File 복사 --> Control File 내용변경 --> DB OPEN


ALTER DATABASE RENAME

FILE '원래 있던 경로'

TO '새 경로' ;






















Tablespaces 공간 관리

1. LMT - Locally Managed Tablespace

--> 각 테이블스페이스에서 Bitmap을 이용해서 Free Extents 즉, 비어있는 블록 모음을 관리

각 테이블스페이스로 부하가 분산되기 때문에 성능↑

데이터가 한번에 몰려서 들어올 경우 속도

9i부터 기본옵션


2. DMT - Dictionary Managed Tablespace

--> Data Dictionary가 Free Extents를 관리

딕셔너리가 갖고 있는 LRU List안의 Free list(빈 블록 주소록), Dirty list(쓰고 있는 블록 주소록)를 참고해서 관리

데이터가 드문드문 몰리지 않고 들어올 경우 LMT보다 속도

하지만 데이터가 한꺼번에 몰려서 들어올 경우 성능,속도↓

8i까지 기본옵션




Temporary Tablespaces

- 임시자료를 저장하는 테이블 스페이스

- DB가 재시작되면 들어있는 내용은 모드 삭제됨

- 저장 용도가 아닌, 주로 쓰는 용도는 정렬 Sort operation

- SQL문 처리할 때 서버 프로세스가 PGA에서 처리, 

   정렬 작업이 수행될 때, PGA 공간이 부족할 경우 Temporary Tablespaces를 이용하여 정렬 작업을 수행

- 하나의 Instance에 여러개 만들 수 있음 --> 각 사용자별로 하나씩 할당해 주는것이 좋다. 

Temporary Tablespaces 용량이 꽉 차게 되면 수행되던 쿼리작업이 멈추기 때문에 작업 전 크게 만들어 주고 작업하기


- 생성방법

CREATE TEMPORARY TABLESPACE 이름

TEMPFILE '경로' SIZE *


- 크기변경

ALTER DATABASE TEMPFILE '경로' RESIZE 용량 ;


※ 10g 이상부터는 tempfile 사이즈 변경하는 방법

> alter tablespace tempT/S이름 shrink space ;

주의!

shrink도 resize도 안되는 경우가 있음, 이때는 신규 템프T/S 생성하고 default로 바꾼후

기존에 있는 tempfile을 오프라인 시킨 후, 드랍 (including contents and datafiles 적어주기)

그다음 신규생성 템프T/S를 RENAME해서 기존 TEMPFILE과 똑같이 해주면 됨

여기서도 주의해야 할 점은 

wait event가 TS:enq - contention <- 누군가 이 테이블 스페이스를 쓰고 있어서 나오는거라 드랍안됨



- 삭제하기

DROP TABLESPACE 이름 ;


- Default Temporary Tablespace 로 변경하기

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE 이름 ;


Default Temporary Tablespace란?

--> 별도로 Temporary Tablespace 지정해주지 않은 사용자가 SYSTEM Tablespace 사용대신 

DEFAULT Temporary Tablespace를 사용할 수 있도록 해줌

무조건 하나는 있어야 함 

Temporary Tablespace를 여러개 만들고 그중에 하나를 Default 로 지정



- Temporary Tablespace 와 Default Temporary Tablespace 조회

Temporary Tablespace

select file_id, tablespace_name, bytes/1024/1024MB, file_name

from dba_temp_files ;


Default Temporary Tablespace

select * from database_properties

where property_name like 'DEFAULT%' ;




※ 11g 추가 기능 - Temporary Tablespace Group 


Temporary Tablespace를 여러개 만든 후 그룹으로 묶어주고 특정 schema에게 Temporary Tablespace group을 지정해 주는 것

여러명의 사용자가 동시에 로그인 하더라도 여러명의 사용자가 각각 Temporary Tablespace group 안에 있는 

여러개의 Temporary Tablespace를 각각 별도로 사용해서 성능 향상이 가능함


생성방법:

CREATE TEMPORARY TABLESPACE 이름

TEMPFILE '경로' SIZE

TABLESPACE GROUP 그룹이름 ;


이미 존재하는 Temporary Tablespace를 그룹에 추가

ALTER TABLESPACE 이름 TABLESPACE GROUP 그룹이름 ;


사용자에게 그룹 할당

ALTER USER 유저이름 TEMPORARY TABLESPACE 그룹이름 ;


Default Temporary Tablespace 로 지정

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE 그룹이름 ;


그룹에서 탈퇴

ALTER TABLESPACE 이름 TABLESPACE GROUP '' ;


그룹 조회

SELECT * FROM dba_tablespace_group ;









undo랑 read only tablespace 내용 추가해주기 + Immediate Mode OFFLINE 실습



'오라클 ADMIN' 카테고리의 다른 글

Data Block, Extent, Segment  (0) 2013.01.16
Control File, Redo Log File, Data File 관리 연습  (0) 2013.01.16
Redo Log File  (0) 2013.01.14
Control file  (0) 2013.01.14
Data Dictionary  (0) 2013.01.14