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 |