Oracle DB

Oracle DB 8장 테이블스페이스 및 데이터 파일 관리

tommy76 2020. 6. 1. 17:48

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.