Oracle DB 8장 테이블스페이스 및 데이터 파일 관리
Oracle DB 8장 테이블스페이스 및 데이터 파일 관리
Oracle은 데이터를 논리적으로 테이블스페이스에 저장하고 물리적으로는 데이터 파일에 저장합니다.
(실제로 테이블스페이스에는 세그먼트가 저장된다)
테이블 스페이스
- 어느 한 시점에서 데이터베이스 하나에만 속할 수 있습니다.
- 하나 이상의 데이터 파일로 구성됩니다.
- 여러 논리적 저장 영역 단위로 분할됩니다.
데이터 파일
- 한 테이블 스페이스 및 한 데이터베이스에만 속할 수 있습니다.
- 스키마 객체 데이터의 저장소입니다.
테이블스페이스 및 데이터 파일
데이터베이스, 테이블스페이스 및 데이터 파일은 밀접하게 연관되어 있으나 이들 사이에는 중요한 차이점이 있습니다.
· 오라클 데이터베이스는 테이블 스페이스라고 하는 하나 이상의 논리적 저장 영역 단위로 구성되며
이러한 테이블 스페이스는 데이터베이스의 모든 데이터를 집합적으로 저장합니다.
· 오라클 데이터베이스의 각 테이블 스페이스는 데이터 파일이라고 하는 하나 이상의 파일로 구성되며 이러한 데이터 파일은 Oracle을 실행 중인 운영 체제를 따르는 물리적 구조입니다.
· 데이터베이스의 데이터는 데이터베이스의 각 테이블 스페이스를 구성하는 데이터 파일에 집합적으로 저장됩니다.
예를 들어, 가장 단순한 오라클 데이터베이스는 한 테이블 스페이스와 한 데이터 파일로 구성됩니다.
또는 각각 두 개의 데이터 파일로 구성되는 세 개의 테이블 스페이스(총 6개의 데이터 파일)로 구성된 데이터 베이스 도 있을 수 있습니다.
테이블 스페이스 유형
SYSTEM 테이블 스페이스
- 데이터베이스와 함께 생성
- 데이터 딕셔너리 포함
- SYSTEM 실행 취소 세그먼트 포함
비 SYSTEM 테이블 스페이스
- 세그먼트 분리
- 공간 관리 용이
- 사용자에게 할당된 공간의 양 제어
테이블 스페이스 유형
DBA는 제어성을 높이고 편리한 유지 관리를 위해 테이블 스페이스를 생성합니다. Oracle 서버는 두 가지 유형의 테이블 스페이스 즉, SYSTEM 및 기타 테이블 스페이스를 인식합니다.
SYSTEM 테이블 스페이스:
· 데이터 베이스와 함께 생성됩니다.
· 모든 데이터 베이스에서 필요합니다.
· 내장 프로그램 단위를 포함하는 데이터 딕셔너리를 포함합니다.
· SYSTEM 실행 취소 세그먼트를 포함합니다.
· 사용자 데이터 포함을 허용하더라도 포함하지 않아야 합니다.
비 SYSTEM 테이블 스페이스 :
· 데이터베이스 관리가 더욱 유연해집니다.
· 실행 취소 세그먼트, 임시 세그먼트, 응용 프로그램 데이터 세그먼트 및 응용 프로그램 인덱스 세그먼트를 분리합니다.
· 백업 요구 사항에 따라 데이터를 분리합니다.
· 동적 데이터와 정적 데이터를 분리합니다
· 사용자 객체에 할당된 공간의 양을 제어합니다.
실습
테이블 스페이스 생성
SELECT tablespace_name, status, contents,
2 extent_management, segment_space_management
3 FROM dba_tablespaces;
- Tablespace의 상태를 조회한다.
- STATUS : 사용 가능 여부
- CONTENTS : 저장 Segment의 종류
- EXTENT_MANAGEMENT : Extent의 할당 및 관리 방식
- SEGMENT_SPACE_MANAGEMENT : Block내의 공간 관리 방식
SQL> select tablespace_name, status, contents,
2 extent_management, segment_space_management
3 FROM dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN SEGMEN
------------------------------ --------- --------------------- ---------- ------
SYSTEM ONLINE PERMANENT LOCAL MANUAL
SYSAUX ONLINE PERMANENT LOCAL AUTO
UNDOTBS1 ONLINE UNDO LOCAL MANUAL
TEMP ONLINE TEMPORARY LOCAL MANUAL
USERS ONLINE PERMANENT LOCAL AUTO
SQL> select tablespace_name, status, contents,
2 extent_management, segment_space_management
3 FROM dba_tablespaces order by 1;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN SEGMEN
------------------------------ --------- --------------------- ---------- ------
SYSAUX ONLINE PERMANENT LOCAL AUTO
SYSTEM ONLINE PERMANENT LOCAL MANUAL
TEMP ONLINE TEMPORARY LOCAL MANUAL
UNDOTBS1 ONLINE UNDO LOCAL MANUAL
USERS ONLINE PERMANENT LOCAL AUTO
SQL> select tablespace_name, bytes, file_name FROM dba_data_files order by 1;
TABLESPACE_NAME BYTES
------------------------------ ----------
FILE_NAME
--------------------------------------------------------------------------------
SYSAUX 482344960
/app/ora12c/oradata/DB12/sysaux01.dbf
SYSTEM 838860800
/app/ora12c/oradata/DB12/system01.dbf
UNDOTBS1 68157440
/app/ora12c/oradata/DB12/undotbs01.dbf
TABLESPACE_NAME BYTES
------------------------------ ----------
FILE_NAME
--------------------------------------------------------------------------------
USERS 5242880
/app/ora12c/oradata/DB12/users01.dbf
SQL> @login
SQL> !vi login.sql
SQL> @login
SP2-0246: Illegal FORMAT string "a"
SQL> !vi login.sql
SQL> @login
SQL> select tablespace_name, bytes, file_name FROM dba_data_files order by 1;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
SQL> select tablespace_name, bytes, file_name from dba_temp_files;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
TEMP 33554432 /app/ora12c/oradata/DB12/temp01.dbf
SQL> select ts#, name from v$tablespace;
TS# NAME
---------- -------------
1 SYSAUX
0 SYSTEM
2 UNDOTBS1
4 USERS
3 TEMP
SQL> select t.name tablespace_name, d.bytes, d.name file_name
2 FROM v$tablespace t, v$datafile d
3 where t.ts#=d.ts#
4 order by 1;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
SQL> select tablespace_name, bytes, file_name from dba_data_files
2 UNION ALL
3 select tablespace_name, bytes, file_name from dba_temp_files;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
TEMP 33554432 /app/ora12c/oradata/DB12/temp01.dbf
SQL> CREATE TABLESPACE insa
2 DATAFILE '/app/ora12c/oradata/DB12/insa01.dbf' SIZE 1M;
Tablespace created.
SQL> select tablespace_name, bytes, file_name from dba_data_files;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
INSA 1048576 /app/ora12c/oradata/DB12/insa01.dbf
SQL> select tablespace_name, status, contents,
2 extent_management, segment_space_management
3 FROM dba_tablespaces
4 ORDER BY 1;
TABLESPACE STATUS CONTENTS EXTENT_MAN SEGMEN
---------- -------- --------------------- ---------- ------
INSA ONLINE PERMANENT LOCAL AUTO
SYSAUX ONLINE PERMANENT LOCAL AUTO
SYSTEM ONLINE PERMANENT LOCAL MANUAL
TEMP ONLINE TEMPORARY LOCAL MANUAL
UNDOTBS1 ONLINE UNDO LOCAL MANUAL
USERS ONLINE PERMANENT LOCAL AUTO
6 rows selected.
SQL> select tablespace_name, bytes, file_name FROM dba_data_files;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
INSA 1048576 /app/ora12c/oradata/DB12/insa01.dbf
SQL> ALTER DATABASE DATAFILE
2 '/app/ora12c/oradata/DB12/insa01.dbf' RESIZE 2M;
Database altered.
SQL> select tablespace_name, bytes, file_name FROM dba_data_files;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
INSA 2097152 /app/ora12c/oradata/DB12/insa01.dbf
SQL> alter tablespace insa
2 add datafile '/app/ora12c/oradata/DB12/insa02.dbf' SIZE 2M;
Tablespace altered.
SQL> select tablespace_name, bytes, file_name from dba_data_files;
TABLESPACE BYTES FILE_NAME
---------- ---------- ----------------------------------------
USERS 5242880 /app/ora12c/oradata/DB12/users01.dbf
UNDOTBS1 68157440 /app/ora12c/oradata/DB12/undotbs01.dbf
SYSTEM 838860800 /app/ora12c/oradata/DB12/system01.dbf
SYSAUX 482344960 /app/ora12c/oradata/DB12/sysaux01.dbf
INSA 2097152 /app/ora12c/oradata/DB12/insa01.dbf
INSA 2097152 /app/ora12c/oradata/DB12/insa02.dbf
6 rows selected.