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