Oracle 13일차(2) -Tablespace and Datafile
tablespace and datafile
○ SYSTEM tablespace
- 데이터베이스와 함께 생성
- 데이터 딕셔너리 포함
- 시스템의 undo시그먼트 포함
○ Non-SYSTEM tablespace
- undo시그먼트 공용으로 사용
○ tablespaces 생성
CREATE TABLESPACE usedata
DATAFILE ‘경로/이름.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 5M MAXSIZE 200M;
초기값 : 100M
AUTOEXTEND : 자동으로 크기 증가
추가 크기 : 5M
최대 크기 : 200M
○ tablespaces 저장공간 관리
- Header : 앞 뒤 파일에 대한 정보 저장
- 일반적으로 기본적인 블럭의 크기는 8kb
- Locally managed tablespace
요즘 많이 사용
직접 블럭으로 와서 Header의 내용을 읽고 저장
속도가 빠르다
CREATE TABLESPACE userdata
DATAFILE ‘경로/이름.dbf’ SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
UNIFORM : 계속 128K씩 크기를 늘려라
- Dictionary-managed tablespace
각 블럭의 정보를 저장. (1번 블럭에 2byte 남음. 2번 블럭에 5byte남음)
데이터 저장 시 dictionary에서 블럭의 Header 정보를 확인. 공간이 남은 블럭에 내용 저장
CREATE TABLESPACE userdata
DATAFILE ‘경로/이름.dbf’ SIZE 500M
EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE
(initial 1M NEXT 1M PCTINCREASE 0);
initial 1M NEXT 1M PCTINCREASE 0 : 처음에는 1씩. 그 다음부터는 1M씩 늘려라
initial 1M NEXT 1M PCTINCREASE 10 : 처음에는 1씩. 그 다음부터는 전체크기의 10%씩 늘려라
○ Undo Tablespace
- Undo 시그먼트에 저장되어 사용
- 다른 오브젝트를 가질 수 없음
- 만드는 것은 여러개 만들 수 있지만, 하나만 사용가능
- 반드시 복구를 해야하는 테이블스페이스
- Locally managed로 자동 생성된다.
CREATE UNDO TABLESPACE undo1
DATAVILE ‘경로/이름.dbf’ SIZE 40M;
○ Temporary Tablespaces
- 정렬할 때 사용
- PGA에 따로 있지만 공간이 부족해 이거 사용
- Temporary Tablespaces에 공간이 부족하면 System Temporary Tablespaces에 로 가서 정렬
- 순서 : PGA ▶ Temporary Tablespaces ▶ System Temporary Tablespaces
- 영구적인 데이터는 저장 불가
- 컴퓨터를 Shutdown시키면 리셋
- 로컬이 관리
CREATE TEMPORARY TABLESPACE temp
TEMPFILE ‘경로/이름.dbf’ SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;
○ Default Temporary Tablespaces
- 여러개 만들 수 있지만, 두 개를 동시에 사용 불가
ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE temp;
- 사용할 수 있는 새로운 Default가 만들어질 때까지 DROP불가
- Taken offline : 사용자가 데이터베이스에는 접근 가능하지만 해당 Tablespace에는 접근 불가
○ Read Only Tablespaces
ALTER TABLESPACE userdata READ ONLY;
○ Taking a Tablespace Offline
데이터베이스에는 접근 가능 하지만 특정 tablespace는 사용 불가
- offline불가 tablespace
① System Tablespace
② 활성화되어 있는 Undo Tablespace
③ Temporary Tablespaces
ALTER TABLESPACE userdata OFFLINE;
ALTER TABLESPACE userdata ONLINE;
○ Change Storage Settings
로컬 방식은 수정할 필요가 없다
○ 테이블스페이스의 사이즈 변경
- AUTOEXTEND : 자동으로 크기 추가
CREATE TABLESPACE userdata
DATAFILE
‘경로/이름.dbf’ SIZE 200M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
- ALTER TABLESPACE로 수동으로 크기 추가
ALTER DATABASE
DATAFILE ‘경로/이름.dbf’ RESIZE 200M;
- 데이터파일을 추가해서 전체 용량 추가
ALTER TABLESPACE userdata
ADD DATAFILE ‘경로/이름.dbf’ SIZE 200M;
○ 데이터파일 이동
① 테이블스페이스 OFFLINE
② 파일위치 변겅
③ 데이터베이스에 변경되 위치 연결
일반 테이블스페이스
- 테이블스페이스가 offline상태
ALTER TABLESPACE 테이블스페이스 RENAME
DATAFILE ‘경로/이름.dbf’
TO ‘경로/이름.dbf’;
SYSTEM, TEMP, UNDO 테이블스페이스, LOG파일
- 테이블스페이스가 마운트 상태
ALTER DATABASE RENAME
FILE ‘경로/system01..dbf’
TO ‘경로/system01..dbf’;
○ 테이블스페이스 삭제
- 시스템 테이블스페이스는 삭제 불가
- 현재 활성화된 시그먼트는 삭제 불가
INCLUDING CONTENTS :테이블스페이스만 삭제
INCLUDING CONTENTS AND DATAFILES :테이블스페이스, 데이터파일 다 삭제. 일반적으로 사용
CASCADE CONSTRAINTS : 참조하고 있는 테이블스페이스도 삭제
○ 테이블스페이스 관련 정보 확인
① Tablespaces
- DBA_TABLESPACES
- V$TABLESPACE
② Datafile information
- DBA_DATA_FILES
- V$DATAFILE
③ Temp file information
- DBA_TEMP_FILES
- V$TEMPFILE
실습
1. DT.SQL / DDF.SQL / TEMP.SQL 생성
DT.SQL : 테이블스페이스의 OFFLINE / ONLINE 상태 확인
SELECT TABLESPACE_NAME,STATUS,CONTENTS,
EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT
FROM DBA_TABLESPACES
/
DDF.SQL : 테이블스페이스의 크기와 위치확인
COL TABLESPACE_NAME FORMAT A16
COL FILE_NAME FORMAT A29
SELECT TABLESPACE_NAME, BYTES,FILE_NAME FROM DBA_DATA_FILES
/
TEMP.SQL : TEMP테이블스페이스의 크기와 위치 확인
▶ TEMP는 별도의 공간에 저장되어진다.
COL TABLESPACE_NAME FORMAT A16
COL FILE_NAME FORMAT A29
SELECT TABLESPACE_NAME,BYTES,FILE_NAME FROM DBA_TEMP_FILES
/
2. 테이블스페이스 생성
CREATE TABLESPACE INSA
DATAFILE 'C:\APP\ITWILL\ORADATB\TESTDA\INSA.DBF' SIZE 10M
SEGMENT SPACE MANAGEMENT AUTO;
이름 : INSA.DBF
위치 : C:\APP\ITWILL\ORADATB\TESTDA
크기 : 10M
3. 테이블스페이스 용량 증가
ALTER DATABASE DATAFILE
'C:\APP\ITWILL\ORADATA\TESTDB\INSA.DBF' RESIZE 20M;
크기 20M으로 변경
4. 테이블스페이스 복사
ALTER TABLESPACE INSA
ADD DATAFILE 'D:\APP\ITWILL\ORADATA\TESTDB\INSA02.DBF' SIZE 20M;
이름 : INSA02.DBF
위치 : C:\APP\ITWILL\ORADATA\TESTDB
크기 : 20M
5. 테이블 스페이스 이동
(1) 일반 테이블스페이스 이동
① 테이블스페이스
ALTER TABLESPACE INSA OFFLINE;
② 파일 위치 변경
③ 데이터베이스에 변경되 위치 연결
ALTER TABLESPACE INSA RENAME
DATAFILE 'C:\APP\ITWILL\ORADATA\TESTDB\INSA.DBF'
TO 'C:\ADISK\DISK1\INSA.DBF';
ALTER TABLESPACE INSA RENAME
DATAFILE 'C:\APP\ITWILL\ORADATA\TESTDB\INSA02.DBF'
TO 'C:\ADISK\DISK1\INSA02.DBF';
- INSA.DBF
변경 전 : C:\APP\ITWILL\ORADATA\TESTDB\INSA.DBF
변경 후 : C:\ADISK\DISK1\INSA.DBF
- INSA02.DBF
변경 전 : C:\APP\ITWILL\ORADATA\TESTDB\INSA02.DBF
변경 후 : C:\ADISK\DISK1\INSA02.DBF
④ 테이블스페이스 ONLINE
ALTER TABLESPACE INSA ONLINE;
(2) SYSTEM 테이블 스페이스 이동
① 데이터베이스 SHUTDOWN
SHUTDOWN IMMEDIATE;
② SYSTEM01.DBF파일 위치 이동
③ 데이터베이스 MOUNT상태까지 시작
STARTUP MOUNT
④ 데이터베이스에 변경되 위치 연결
ALTER DATABASE RENAME
FILE 'C:\APP\ITWILL\ORADATA\TESTDB\SYSTEM01.DBF'
TO 'C:\ADISK\DISK3\SYSTEM01.DBF';
변경 전 : C:\APP\ITWILL\ORADATA\TESTDB\SYSTEM01.DBF
변경 후 : C:\ADISK\DISK3\SYSTEM01.DBF
⑤ 데이터베이스 OPEN
ALTER DATABASE OPEN;
▶ SYSTEM 테이블스페이스 확인
6. 테이블스페이스 삭제
DROP TABLESPACE INSA
INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINS;