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
Posted by 아트민
,