by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

데이터 파일의 관리를 오라클에 맡기기




1. OMF(Oracle Managed Files)이란.?

  • Oracle 9i부터 사용 할 수있다.
  • DBA가 일일이 필요 없는 데이터 화일을 찾아서 OS상에서 일일이 삭제 해야만 하는 수고가 없어졌다.
  • Datafile. Control File, Online Redo Log File에 사용 할 수 있다.
  • OMF 화일은 Oracle 서버에 의해 자동으로 생성(유일성 보장을 위해 Naming Structure 존재)되고 삭제 된다.

1) 장점..

  • 작업이 쉽다.
  • 디스크 공간의 낭비가 없다.

2) 전제조건..

  • DB_CREATE_FILE_DEST : 데이타 파일들의 위치하게 될 디렉토리
  • DB_CREATE_ONILINE_LOG_DEST_n : online redo log와 control file들이 위치하게 될 기본 디렉토리(n: 1 ~ 5사이의 정수)
  • DB_CREATE_FILE_DEST 파라미터는 정의 되어 있지만 DB_CREATE_ONLINE_LOG_DEST_n 파라미터가 정의 되어 있지 않으면, 모든 화일들(data file, control files, online redo logs)은 DB_CREATE_FILE_DEST 파라미터에 정의된 디렉토리에 존재하게 된다.
    SQL> --OMF 시작 하기
    SQL> 
    SQL> show parameter db_create_file_dest;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_create_file_dest                  string
    
    SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='D:\ORACLE' SCOPE=BOTH;
    
    시스템이 변경되었습니다.
    SQL> show parameter db_create_file_dest;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_create_file_dest                  string      D:\ORACLE
    SQL> 
    
    SQL> --OMF 사용 중지 하기
    SQL> 
    SQL>  ALTER SYSTEM SET DB_CREATE_FILE_DEST='' SCOPE=BOTH;
    
    시스템이 변경되었습니다.
    
    SQL>  show parameter db_create_file_dest;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ----------------
    db_create_file_dest                  string
    

3) Oracle Managed File Name Structure

  • OMF화일은 Oracle Flexible Archiecture(OFA)를 따르며 플랫폼에 의존적이다.
    * Solaris 환경의 OMF Naming Structure의 예이다.
    
    Control Files : ora_%u.ctl
    Redo Files : ora_%g_%u.log
    Data Files : ora_%t_%u.dbf
    Temporary Data Files : ora_%t_%u.tmp
    
    %u is an 8 character string that guarantees uniqueness.
    %t is the tablespace name, truncated if necessary.
    %g is the redo log file group number.
    
    ora_  identifies the file as an Oracle Managed File.
    Note : 위 Naming Structure를 따르지 않으면 OMF로 인식하지 않는다. 
           즉, 위 Naming Structure를 따르는 화일을(OMF로 생성) 추후 이 structure
           를 따르지 않는 화일 이름으로 rename하게 되면 OMF 기능을 사용하지 못한다. 
           별 다른 옵션 없이 DROP TABLESPACE를 수행하면 해당 데이터 화일의 OS 
           화일이 자동으로 삭제되지는 않는다.
    
    

4) TEST..

SQL*Plus: Release 10.2.0.1.0 - Production on 목 10월 29 14:58:49 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn sys/sys00@orainzen as sysdba
연결되었습니다.
SQL> 
SQL> SHOW PARAMETER DB_CREATE_FILE_DEST;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string
SQL> 
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN';

시스템이 변경되었습니다.

SQL> SHOW PARAMETER DB_CREATE_FILE_DEST;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      D:\ORACLE\PRODUCT\10.2.0\ORADA
                                                 TA\ORAINZEN
SQL> CREATE TABLESPACE TBS_TEST1 DATAFILE SIZE 10M;

테이블스페이스가 생성되었습니다.

SQL> SELECT FILE_NAME
  2       , TABLESPACE_NAME
  3    FROM DBA_DATA_FILES
  4   WHERE TABLESPACE_NAME LIKE 'TB%';

FILE_NAME                                                                                               
----------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\ORAINZEN\DATAFILE\O1_MF_TBS_TEST_5GLD05TY_.DBF                

SQL> 
SQL> ALTER TABLESPACE TBS_TEST1 ADD DATAFILE SIZE 10M;

테이블스페이스가 변경되었습니다.

SQL> SELECT FILE_NAME
  2       , TABLESPACE_NAME
  3   FROM DBA_DATA_FILES
  4  WHERE TABLESPACE_NAME LIKE 'TB%';

FILE_NAME
----------------------------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\ORAINZEN\DATAFILE\O1_MF_TBS_TEST_5GLD05TY_.DBF
TBS_TEST1

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\ORAINZEN\DATAFILE\O1_MF_TBS_TEST_5GLF1T6X_.DBF
TBS_TEST1

SQL>  SELECT FILE_NAME
  2        , TABLESPACE_NAME
  3    FROM DBA_DATA_FILES
  4   WHERE TABLESPACE_NAME LIKE 'TB%';

선택된 레코드가 없습니다.

SQL> 
SQL> SET LINESIZE 120
SQL> COL MEMBER FORMAT A50
SQL> 
SQL> -- 현재 등록되어있는 online redo log group 조회
SQL> 
SQL> SELECT GROUP#, MEMBER FROM V$LOGFILE;

    GROUP# MEMBER
---------- --------------------------------------------------
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO03.L
           OG

         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO02.L
           OG

         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO01.L
           OG

SQL> ALTER DATABASE ADD LOGFILE SIZE 10M;

데이타베이스가 변경되었습니다.

SQL> SELECT GROUP#, MEMBER FROM V$LOGFILE;

    GROUP# MEMBER
---------- --------------------------------------------------
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO03.L
           OG

         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO02.L
           OG

         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO01.L
           OG

         4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\ORAINZEN
           \ONLINELOG\O1_MF_4_5GLFG55G_.LOG

    GROUP# MEMBER
---------- --------------------------------------------------

         4 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORAIN
           ZEN\ONLINELOG\O1_MF_4_5GLFG5RJ_.LOG

SQL> --생성된 online redo log 파일의 상태정보 조회
SQL> SELECT GROUP#, SEQUENCE#, BYTES, MEMBERS, STATUS FROM V$LOG;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1        287   52428800          1 CURRENT
         2        285   52428800          1 INACTIVE
         3        286   52428800          1 INACTIVE
         4          0   10485760          2 UNUSED

SQL> -- 해당 Online Redo Log Group 삭제 
SQL> ALTER DATABASE DROP LOGFILE GROUP 4;

데이타베이스가 변경되었습니다.

SQL> SELECT GROUP#, MEMBER FROM V$LOGFILE;

    GROUP# MEMBER
---------- --------------------------------------------------
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO03.L
           OG

         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO02.L
           OG

         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAINZEN\REDO01.L
           OG

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.