이펙티브 오라클 (2009년)
데이터 파일의 관리를 오라클에 맡기기 0 0 64,669

by 구루비스터디 OMF [2018.05.26]


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

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


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


"구루비 데이터베이스 스터디모임" 에서 2009년에 "이펙티브 오라클" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3473

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입