View Source

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

h4. 1) 장점..
* 작업이 쉽다.
* 디스크 공간의 낭비가 없다.

h4. 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 파라미터에 정의된 디렉토리에 존재하게 된다.
{section}
{column:width=10%}
{code:SQL}
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
{code}
{column}
{section}


h4. 3) Oracle Managed File Name Structure
* OMF화일은 Oracle Flexible Archiecture(OFA)를 따르며 플랫폼에 의존적이다.
{section}
{column:width=10%}
{code:SQL}
* 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
화일이 자동으로 삭제되지는 않는다.

{code}
{column}
{section}


h4. 4) TEST..
{section}
{column:width=10%}
{code:SQL}
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

{code}
{column}
{section}