Tablespaces and Data Files
:tablespace는 논리적 저장구조, Data file은 물리적 저장구조
- Tablespace
1. 한 시점에서 하나의 DB만을 가진다.
2. 하나 이상의 datafile을 가진다. (분산처리)
3. T/S내에도 논리적으로 분할된 저장구조를 가진다. (segment를 의미)
- Data files
: schema object 데이터를 저장
Type of Tablespaces
- System T/s(data dictionary가 저장되는 공간)
1. database 생성시 같이 생성 (필수 T/S)
2. data dictionary 저장
3. system undo segment 저장
- Non-system tablespaces (일반 T/S)
1. segment 단위로 분할됨
2. 관리의 편의상 만듬
3. user에게 할당된 공간을 제어
Creating Tablespaces
- syntax
Create Tablespace [생성할 T/S이름]
Datafile '/oracle/oradata/[datafile 이름].dbf' size [integer] [단위(M,K)]
'/oracle/oradata/[datafile 이름02].dbf' size ....
[Default Storage( (extend 할당 설정, dictionary management방식)
initial(초기값) integer [M/K]
next (다음 증가값) integer [M/K]
Maxextents (최대값) integer [M/K]
pctincrease (증가율) integer) ]
[online/offline] (T/S 온라인 오프라인 설정)
[logging/nologging] (undo data 생성, undo data 생성하지않음)
[permanent/temporary] (저장대상의 영구적 저장/임시적 저장)
[extent management
Dictionary | Local(원하는 만큼 할당)
Autoallocate | uniform size integer [M/K](일정한 size 할당)]
[segment space management (manual/auto)]
Space Management in Tablespaces
- Locally managed(자체적 할당/해제)
1. Free extents를 자체적으로 관리
2. Free extents는 Bitmap을 이용해 관리
- Dictionary managed(중앙 통제적 관리)
1. Free extents의 모든 관리는 중앙(system)에서 관리
-따라서 경합 문제가 발생
* Bitmap : 연속된 공간에 Free block을 할당/해제
Locally managed T/S
: system T/S가 local 관리방식이면 그 외 모든 T/S도 Local방식만 허용
- 경합을 줄임으로서 효율성이 장점
- 할당/해제에 관한 undo data를 만들지 않음
- Free extents의 병합작업이 따로 필요치 않음(Bitmap을 이용하므로)
- systax
Create tablespace userdata
datafile '파일경로/파일이름.dbf' size 50m
extent management LOCAL UNIFORM SIZE 128K;
Dictionary-Managed Tablespace
:Dictionary-Managed Tablespace에 있는 세그먼트는 사용자 정의된 저장 영역을 가질수있지만
지역적으로 관리되는 Tablespace보다 더 유연성이 있지만 효율성은 떨어짐.
- Dictionary-Managed Tablespace
1. 확장 영역이 데이터 딕셔너리에서 관리
2. 테이블스페이스에 저장된 각 세그먼트에서 서로 다른 저장 영역 절이 있을수 있음.
3. 병합 필요
예시)
CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf'
SIZE 500M EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE
(initial 1M NEXT 1M PCTINCREASE 0);
Undo Tablespace(실행 취소 테이블스페이스)
:실행 취소 테이블스페이스는 자동 실행 취소 관리와 함께 사용.
1. 실행 취소 세그먼트 저장.
2. 다른 객체를 포함할 수 없음.
3. 확장 영역이 지역적(only)으로 관리.
4. DATAFILE 절 및 EXTENT MANAGEMENT 절만 사용할 수 있음.
예시)
CREATE UNDO TABLESPACE undo1
DATAFILE '/u01/oradata/undo01.dbf' SIZE 40M;
Temporary Tablespaces
: 정렬 세그먼트에만 사용하는 임시 테이블스페이스를 지정하여 정렬 작업용 공간을 효과적
으로 관리할 수 있습니다.
1. 정렬 작업에 사용.
2. 영구 객체를 포함할수 없음.
3. 지역적으로 관리되는 확장 영역 권장.
예시)
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;
4. 지역적으로 관리되는 임시 테이블스페이스에는 임시 데이터 파일(임시 파일)이 있으며
이 파일은 다음을 제외하고 일반 데이터 파일과 비슷.
- 항상 NOLOGGING 모드로 설정된다.
- 읽기 전용으로 설정할 수 없다.
- 임시 파일 이름을 바꿀 수 없다.
- ALTER DATABASE명령으로 임시 파일을 생성할 수 없다.
- 읽기 전용 데이터베이스에 필요.
- 매체 복구는 임시 파일을 복구하지 않음.
정렬 성능을 최적화하려면 UNIFORM SIZE를 SORT_AREA_SIZE매개변수의 배구가 되도록 설정.
Default Temporary Tablespace
1. 모든 데이터베이스에서 사용되는 기본 임시 테이블 스페이스를 지정.
2. 임시 데이터를 저장할 경우 SYSTEM 테이블스페이스 사용을 제거.
3. CREATE DATABASE , ALTER DATABASE를 사용하여 생성.
- 기본 임시 테이블스페이스 없이 데이터베이스를 생성할 경우 SYSTEM 테이블스페이스는
TEMPORARY TABLESPACE 절 없이 생성된 임의의 사용자에 할당됩니다. 또한 SYSTEM
테이블스페이스가 기본 임시 테이블스페이스라는 경고가 alert_sid.log에 기록됩니다.
데이터베이스 생성 시 기본 임시 테이블스페이스를 생성하면 SYSTEM 테이블스페이스는
임시 공간에 사용될 수 없습니다.데이터베이스 생성 후 임시 테이블스페이스를 생성하고
데이터베이스를 변경하여 기본 임시 테이블스페이스를 설정할 수 있습니다.
Creating a Default Temporary Tablespace
CREATE DATABASE DBA01
LOGFILE
GROUP 1 ('/$HOME/ORADATA/u01/redo01.log') SIZE 100M,
GROUP 2 ('/$HOME/ORADATA/u02/redo02.log') SIZE 100M,
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M
UNDO TABLESPACE undotbs
DATAFILE '/$HOME/ORADATA/u02/undotbs01.dbf' SIZE 200
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/$HOME/ORADATA/u03/temp01.dbf' SIZE 4M
CHARACTER SET US7ASCII
1. 데이터베이스를 생성 후 다음 작업이 진행.
ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE default_temp2;
2. 데이터베이스의 기본 임시 테이블스페이스를 찾으려면
DATABASE_PROPERTIES를 질의.
- SELECT * FROM DATABASE_PROPERTIES;
기본 임시 테이블스페이스의 제한사항
1. 새 기본값을 사용할 수 있을 때까지 삭제불가.
2. 오프라인으로 설정할 수 없음.
3. 영구 테이블스페이스로 변경 불가.
- 예외| 변경방법
1) temp2 임시 테이블스페이스를 생성.
2) temp2를 지정
3) temp 임시 테이블스페이스를 삭제.
Read-Only Tablespaces
-읽기 전용모드로 설정
Alter Tablespace userdata READ ONLY;
checkpoint 발생
데이터를 읽을 수만 있음
tablespace drop 가능
Taking a Tablespace Offline
-data access 사용할수 없음
-Offline으로 설정할수 없는 tablespace
1) system tablespace
2) active undo segment가 있는 tablespace
3) default temporary tablespace
-Offline으로 설정
Alter TABLESPACE userdata OFFLINE;
-Online으로 설정
Alter TABLESPACE userdata ONLINE;
Changing Storage Settings
-ALTER TABLESPACE 명령을 사용하여 설정을 변경
ALTER TABLESPACE userdata MINIMUM EXTENT 2M;
ALTER TABLESPACE userdata
DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS 999);
-locally managed tablespace는 변경할수 없음.
Resizing a Tablespace
-data file의 크기변경
1)AUTOEXTEND : 자동변경
CREATE TABLESPACE userdata02
DATAFILE '/u01/oradata/userdata02.dbf' SIZE 5M
AUTOEXTEND ON NEXT 2M MAXSIZE 200M
2)ALTER TABLESPACE : 수동변경
ALTER DATABASE
DATAFILE '/u01/oradata/userdata02.dbf' RESIZE 5M;
-ALTER TABLESPACE를 사용한 data file추가
데이터 파일의 자동 확장 활성화
- 새 데이터 파일에 AUTOEXTEND 지정
AUTOEXTEND 절은 데이터 파일의 자동 확장을 활성화하거나 비활성화합니다. 파일은 정
해진 최대 크기까지 지정된 증분 단위로 증가됩니다.
AUTOEXTEND 절을 사용하면 다음 이점이 있습니다.
? 테이블스페이스에 공간이 부족할 때 즉시 중재의 필요성이 줄어듭니다.
? 확장 영역 할당 오류로 인해 응용 프로그램이 중지되는 것을 방지합니다.
데이터 파일이 생성될 때 다음 SQL 명령으로 데이터 파일의 자동 확장을 활성화할
수 있습니다.
? CREATE DATABASE
? CREATE TABLESPACE ... DATAFILE
? ALTER TABLESPACE ... ADD DATAFILE
ex)CREATE TABLESPACE user_data
DATAFILE
'/u01/oradata/userdata01.dbf' SIZE 200M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
->AUTOEXTEND ON -> DBA_TABLESPACE * NEXT_EXTENT -> TABLESPACE 최대용량까지
자동으로 늘어남.
DBA_DATA_FILES 뷰를 질의 하여 AUTOEXTEND가 활성화 되었는지 확인합니다.
- 새 데이터 파일에 AUTOEXTEND 지정
ALTER DATABASE 명령을 사용하여 데이터 파일을 수정하고 자동 확장을 활성화합
니다.
ALTER DATABASE DATAFILE filespec [autoextend_clause]
autoextend_clause:== [ AUTOEXTEND { OFF|ON[NEXT integer[K|M]]
[MAXSIZE UNLIMITED | integer[K|M]] } ]
설명:
AUTOEXTEND OFF: 데이터 파일의 자동 확장을 비활성화합니다.
AUTOEXTEND ON: 데이터 파일의 자동 확장을 활성화합니다.
NEXT: 추가 확장 영역이 필요할 때 데이터 파일에 할당할 디스크 공간을 지정합니다.
MAXSIZE: 데이터 파일에 할당할 수 있는 최대 디스크 공간을 지정합니다.
UNLIMITED: 데이터 파일에 무제한의 디스크 공간 할당을 설정합니다.
- 기존 데이터 파일에 AUTOEXTEND 지정
SQL 명령인 ALTER DATABASE를 사용하여 기존 데이터 파일에 자동 파일 확장을 활성화
하거나 비활성화합니다.
ALTER DATABASE [database]
DATAFILE 'filename'[, 'filename']... autoextend_clause
AUTOEXTEND가 활성화되었는지 또는 비활성화되었는지 확인
DBA_DATA_FILES 뷰를 질의하여 AUTOEXTEND가 활성화되었는지 여부를 확인하고
AUTOEXTENSIBLE 열을 검사합니다.
SQL> select tablespace_name, file_name, autoextensible
2 from dba_data_files;
TABLESPACE_NAME FILE_NAME AUTOEXTENSIBLE
--------------- ------------------------ --------------
SYSTEM /home/dba01/ORADATA/u01/system01.dbf YES
DATA01 /home/dba01/ORADATA/u04/data01.dbf NO
USERS /home/dba01/ORADATA/u03/users01.dbf NO
INDX /home/dba01/ORADATA/u06/indx01.dbf NO
SAMPLE /home/dba01/ORADATA/u02/sample01.dbf YES
DATA02 /home/dba01/ORADATA/u03/data02.dbf NO
INDEX01 /home/dba01/ORADATA/u06/index01.dbf YES
UNDO2 /home/dba01/ORADATA/u01/UNDO2.dbf NO
8 rows selected.
- Oracle Enterprise Manager를 사용하여 자동 크기 조정 활성화
OEM Console에서 다음 작업을 수행합니다.
1. Databases > Storage > Datafiles로 이동합니다.
2. 데이터 파일을 선택합니다.
3. Storage 탭에서 Automatically extend datafile when full 확인란을 선
택합니다.
4. Increment 및 Maximum Size에 값을 설정합니다.
5. Apply를 누릅니다.
수동으로 데이터 파일 크기 조정
- 데이터 파일을 추가하여 데이터베이스에 공간을 추가하지 않고도 DBA는 데이터 파일 크
기를 변경할 수 있습니다. ALTER DATABASE 명령을 사용하여 데이터 파일 크기를 수동으
로 늘리거나 줄입니다.
- 데이터 파일의 수동 크기 조정은 사용되지 않은 데이터베이스의 공간을 확보합니다.
ALTER DATABASE [database]
DATAFILE ‘filename’[, ‘filename’]...
RESIZE integer[K|M]
설명:
Integer: 결과 데이터 파일의 절대 크기로 바이트 단위입니다.
특정 크기 이상으로 저장된 데이터베이스 객체가 있는 경우 데이터 파일 크기는 데이터 파
일에 있는 마지막 객체의 마지막 블록까지만 감소됩니다.
ex)
ALTER DATABASE
DATAFILE '/u03/oradata/userdata02.dbf'
RESIZE 200M;
테이블스페이스에 데이터 파일 추가
- ALTER TABLESPACE ADD DATAFILE 명령으로 테이블스페이스에 데이터 파일을 추가
하여 테이블스페이스에 할당된 디스크 공간의 전체 용량을 늘릴 수 있습니다.
ADD DATAFILE 절은 데이터 파일을 추가하는데 사용됩니다.
ALTER TABLESPACE tablespace
ADD DATAFILE
filespec [autoextend_clause]
ex)
ALTER TABLESPACE user_data
ADD DATAFILE '/u01/oradata/userdata03.dbf'
SIZE 200M;
- Oracle Enterprise Manager를 사용하여 데이터 파일 추가
OEM Console에서 다음 작업을 수행합니다.
1. Databases > Storage > Tablespaces로 이동합니다.
2. 테이블스페이스를 선택합니다.
3. Add Datafile을 선택합니다.
4. General 탭에서 파일 정보를 입력합니다.
5. Create를 누릅니다.
**********************************************************
*system *non-system
1. shutdown 1. offline
2. cp(물리) 2. cp(물리)
3. startup mount 3. rename(논리)
4. rename(논리) 4. online
5. open
6. old file 삭제 5. old file 삭제
**********************************************************
Methods for Moving Data Files(데이터 파일 이동 방식)
- alter tablespace
: 테이블 스페이스는 오프라인이어야 함.
: data file 이 존재해야 함.
ALTER TABLESPACE userdata RENAME
DATAFILE '/oracle/oradata/DB02/userdata01.dbf'
TO '/oracle/backup/userdata01.dbf';
Methods for Moving Data Files(데이터 파일 이동 방식)
- alter database
: 데이터베이스는 마운트 여야 함.
: data file 이 존재
ALTER DATABASE RENAME
FILE '/oracle/oradata/DB02/system01.dbf'
to '/oracle/backup/system01.dbf';
Dropping Tablespace
- 삭제할 수 없는 경우
: system tablespace 인 경우
: 테이블 스페이스에 활성 세그먼트가 있는 경우
- INCLUDING CONTENTS : segment 삭제 , 논리적 object 같이 삭제
- INCLUDING CONTENTS AND DATAFILES : 데이터 파일 삭제
- CASCADE CONSTRAINTS : 참조 무결성 제약 조건을 삭제 , 관계 끊기
DROP TABLESPACE userdata
INCLUDING CONTENTS AND DATAFILES CASCADE COSTRAINTS;
Managing Tablespaces Using OMF
(OMP를 사용하여 테이블스페이스 관리)
- DB_CREATE_FILE_DEST 매개변수 정의
: 초기화 매개변수 파일
: alter system 동적 설정
alter system set
db_create_file_dest = '/oracle/oradata/DB02/';
- 테이블 스페이스 생성시
: 데이퍼 파일이 자동 생성 되어 DB_CREATE_FILE_DESTfp 저장
: 기본 100MB
: AUTOEXTEND - unlimited로 설정됨
Managing Tablespaces Using OMF
(OMF를 사용하여 테이블스페이스 관리)
- OMF 테이블스페이스 생성
create tablespace text_data datafile size 20m;
- 기존 테이블스페이스에 OMF 데이터 파일 추가
alter tablespace text_data add datafile;
- 기본 파일 위치 동적 변경
alter system set
db_create_file_dest = '/oracle/oradata/DB02';
- 테이블스페이스 삭제는 OS 파일 삭제를 포함
정보 조회
- 테이블스페이스
: DBA_TABLESPACES
: V$TABLESPACE
- 데이터 파일 정보
: DBA_DATA_FILES
: V$DATAFILE
- 임시 파일 정보
: DBA_TEMP_FILES
: V$TEMPFILE
'Database Oracle > TABLESPACE' 카테고리의 다른 글
테이블스페이스 실습 1 (0) | 2013.01.11 |
---|---|
테이블스페이스 문법 (0) | 2013.01.11 |
LMT (0) | 2013.01.10 |
TBS 자동 증가 (0) | 2013.01.10 |
TBS 정보 조회 (0) | 2013.01.10 |