– 테이블스페이스는 하나 또는 여러개의 데이터 파일로 구성되어 있는 논리적인 데이터 저장 구조 입니다.
– 테이블스페이스는 크게 시스템(SYSTEM) 테이블 스페이스와 비시스템(NON-SYSTEM) 테이블 스페이스로 구분 됩니다. – 테이블스페이스는 사용자에게 공간을 할당할 수 있으며, 테이블스페이스 안에 저장되어 있을 데이터의 가용성을 제어할 수 있습니다. |
※ 참고 1
– 임시 테이블스페이스를 지정해 주지 않으면 시스템 테이블스페이스가 기본으로 지정 되지만 시 스템 테이블스페이스에 단편화가 발생할 수 있으므로 사용자를 생성할때 임시테이블스페이스를 따로 지정해 주는 것이 좋습니다.
– 또한 DEFAULT TABLESPACE도 사용자를 생성할때 지정해 주지 않으면 기본적으로 시스템 테이블스페이스가 지정이 됩니다. 하지만 사용자를 생성할때 DEFAULT TABLESPACE를 지정을 해서 사용자가 소유한 데이터와 객체들의 저장 공간을 별도로 관리를 해야 합니다.
시스템 테이블스페이스는 본래의 목적(모든 데이터 사전 정보와, 저장 프로시저, 패키지, 데이터베이스 트리거등을 저장)을 위해서만 사용되어져야 하지 일반사용자의 데이터 저장용으로 사용 되어서는 안됩니다.
1. 시스템 테이블 스페이스
– 오라클 데이터 베이스를 생성할 때 자동으로 생기며 오라클 데이터 베이스의 기동을 위해 – 모든 데이터 사전(Data Dictionary) 정보와, 저장 프로시저, 패키지, 데이터베이스 – 유저데이타가 포함될 수 있지만 관리 효율성 면에서 포함 시키지 않습니다 |
2. 비 시스템 테이블 스페이스
– 롤백세그먼트, 임시세그먼트, 응용프로그렘 데이타, 그리고 응용프로그렘 인덱스를 저장 할 수 있습니다 – 공간관리를 쉽게 하기 위해서 생성 합니다. – 유저에게 할당되는 공간 입니다. |
▣ 테이블스페이스의 생성
– 옵션절을 생략할 경우 밑줄친 옵션이 디폴트 값입니다. – ONLINE/OFFLINE – PERMANT/TEMPORARY : TEMPORARY 옵션을 사용하면 생성하는 테이블스페이스는 – DEFAULT STORAGE * INITIAL : 테이블 스페이스의 맨 첫번째 Extents의 크기 |
테이블 스페이스 생성 예제
— sysdba권한으로 접속을 합니다. — 테이블스페이스 생성 아래 그림 설명은 잘 못되었습니다. 10k, 10k, 16k, 24K, 36k.. 이렇게 되겠죠.. |
▣ 비 활성화(OFFLINE) 테이블 스페이스 – 오프라인 상태 테이블스페이스의 데이타에는 접근 할 수가 없습니다. – 테이블스페이스를 오프라인으로 만들기 데이타베이스가 오픈되어 있다면 데이타베이스 관리자는 SYSTEM 테이블스페이스나 테이블스페이스가 오프라인상태가 됐을때 오라클 서버는 모든 관련된 모든 데이터
테이블스페이스는 세가지 모드로 오프라인 상태가 될 수 있습니다. 예제) |
▣ 데이터 파일의 이동(ALTER DATABASE) 1) 데이터베이스를 종료 합니다. 1) 인스턴스의 종료 C:>SQLPLUS /nolog 2) 운영체제 명령을 사용하여 데이터 파일을 이동 – 운영체제 명령을 이용해서 데이터 파일을 이동 시킵니다. 3) 데이터베이스 마운트 SQL>startup mount; 4) ALTER DATABASE명령의 수행 SQL>ALTER DATABASE RENAME FILE alter database명령을 실행하면 오라클은 파일이 존재하는가를 검사합니다. 5) 인스턴스 시작 SQL>alter database open |
▣ 읽기전용(Read Only) 테이블 스페이스 – 테이블스페이스는 온라인 상태 이어야 합니다. – 활성화된 트랜잭션은 허용되지 않습니다.(DML 작업) – 테이블 스페이스에 활성화된 롤백 세그먼트가 포함되어 있지 않아야 합니다. – 테이블 스페이스는 현재 온라인 백업에 포함되어 있지 않아야 합니다.
SQL>ALTER TABLESPACE app_data READ ONLY; ==>app_data 테이블 스페이스를 읽기 전용으로 변경 시킵니다. |
|
DBA_TABBLESPACES 데이터 사전
SQL>conn sys/manager as sysdba |
DBA_DATA_FILES 데이터 사전
SQL>conn sys/manager as sysdba |
콘트롤파일의 데이타파일 정보와 테이블스페이스 정보
SQL>conn sys/manager as sysdba STATUS ENABLED NAME NAME |
테이블 스페이스의데이터 파일과 테이블 스페이스의 크기 확인 DBA_DATA_FILES 데이터 사전을 이용 하면 됩니다. SQL> COL FILE_NAME FORMAT A40 SQL> SELECT file_name, tablespace_name, bytes, status FROM DBA_DATA_FILES; FILE_NAME T ABLESPACE_NAME BYTES STATUS ◎ FILE_NAME : DATAFILE의 물리적인 위치와 파일명을 알 수 있습니다. |
테이블 스페이스별 사용 가능한 공간의 확인
DBA_FREE_SPACE 데이터 사전 SQL> SELECT tablespace_name, SUM(bytes), MAX(bytes) TABLESPACE_NAME SUM(BYTES) MAX(BYTES) ◎ SUM을 사용한 이유는하나의 테이블 스페이스에 분산되어 있는 여유공간을 합한 것이며, |
데이타 화일에 대한 총 크기와 남아있는 공간, 사용한 용량, 남은 %율 DBA_FREE_SPACE, DBA_DATA_FILES 데이터 사전 SQL> COL FILE_NAME FORMAT A40 FILE_NAME TABLESPACE_NAME TOTAL SIZE(KB) USED(KB) FREE SIZE(KB) FREE % SELECT FILE_NAME, # TEMP 테이블 스페이스 용량 확인 COL NAME FORMAT A50 SELECT B.NAME |
▣ 수동으로 데이터 파일 크기 변경
– ALTER DATABASE명령으로 데이터 파일의 크기를 변경 할 수 있습니다.
예제)
SQL>ALTER DATABASE DATAFILE
’C:\ORACLE\ORADATA\app_data02.dbf’ RESIZE 300M
RESIZE명령으로 데이터 파일의 크기를 300M로 했습니다.
기존 데이터 파일의 크기가 300M가 넘을 경우에는 300M로 줄어들게되고,
300M가 되지 않았을 경우에는 300M로 늘어나게 됩니다.
– 무제한으로 변경
ALTER DATABASE DATAFILE
‘/app/oracle/oradata/TEST.dbf’
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
;
— TABLESPACE 생성
CREATE TABLESPACE SCOTT_DATA
DATAFILE ‘/usr/local/ora9i/oradata/oracle/SCOTT_DATA.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
— AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED — 크기 제한 없음
DEFAULT STORAGE
(INITIAL 4K
NEXT 128K
MINEXTENTS 1
PCTINCREASE 0);
# INDEX 테이블 스페이스의 사용은 인덱스를 사용시에 옵션으로 지정.
CREATE TABLESPACE SCOTT_INDEX
DATAFILE ‘/usr/local/ora9i/oradata/oracle/SCOTT_INDEX.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
DEFAULT STORAGE
(INITIAL 4K
NEXT 128K
MINEXTENTS 1
PCTINCREASE 0);
CREATE TEMPORARY TABLESPACE SCOTT_TEMP
TEMPFILE ‘/usr/local/ora9i/oradata/oracle/SCOTT_TEMP.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
— 사용자 계정 생성과 동시에 테이블 스페이스 지정.
CREATE USER scott — 사용자 아이디
IDENTIFIED BY tiger — 사용자 패스워드
DEFAULT TABLESPACE SCOTT_DATA — 기본 사용 테이블 스페이스
TEMPORARY TABLESPACE SCOTT_TEMP — 템프(order by 등 정렬작업) 테이블 스페이스
QUOTA UNLIMITED ON SCOTT_DATA — 할당량 지정(현재설정 무제한)
QUOTA 0M ON SYSTEM — system tablespace를 사용 못하게 설정
;
— 권한 설정
— 생성한 사용자에게 자신의 schema에서 테이블등을 만들 권한과 자원을 사용할 권한을 준다.
— GRANT RESOURCE, CONNECT TO MIDAN;
— DBA 권한을 준다.
GRANT DBA TO unicorn;