Oracle Admin 강좌 (Oracle9i)
Oracle Managed Files (OMF) 5 3 13,144

by 김정식 OMF DB_CREATE_FILE_DEST DB_CREATE_ONLINE_LOG_DEST CREATE TABLESPACE [2006.02.11]


  Oracle8i버전까지는 테이블스페이스를 생성하거나 새로운 데이터파일을 추가할때 파일이 생성되는 OS의 디렉토리와 파일명등을 지정해야 했습니다.

  Oracle9i부터 Oracle Managed Files(OMF) 기능을 이용하면 OS에 디렉토리와 파일명을 지정하지 않아도 데이터베이스 차원에서 유일한 파일명의 데이터파일을 지정된 디렉토리에 자동으로 생성을 합니다.

  또한 OMF를 이용해서 만들어진 데이터 파일의 경우, 나중에 그 데이터 화일이 속한 테이블스페이스를 삭제하면 데이터 파일까지 자동으로 삭제가 됩니다.

  Oracle8i버전 까지는 DBA가 필요없는 데이터 파일을 찾아서 OS 상에서 일일이 삭제해야만 하는 수고를 덜어주게 되었습니다.

  Oracle Managed Files(OMF)을 사용하면 데이터 파일의 생성 및 삭제 관리가 편리해 집니다.

  OMF를 이용할 수 있는 화일은 Control File, Online Redo Log File, Data File 입니다

Oracle Managed File 환경설정

  다음의 두가지 초기 파라미터를 정의해야 합니다.

  DB_CREATE_FILE_DEST : 데이터 파일이 생성될 기본 디렉토리를 지정

  DB_CREATE_ONLINE_LOG_DEST_n : 온라인 리두로그 파일과 컨트롤 파일이 생성될 위치를 지정 (n: 1~5 - 여러개의 지정이 가능합니다.)

  위 두 파라미터는 ALTER SYSTEM/SESSION에 의해 동적으로 변경 될 수 있습니다.

  DB_CREATE_FILE_DEST 파라미터는 정의되어 있지만 DB_CREATE_ONLINE_LOG_DEST_n파라미터가 정의되어 있지 않으면, 모든 화일들(Data Files, Control Files, Online Redo Logs)은 DB_CREATE_FILE_DEST 파라미터에 정의된 디렉토리에 존재하게 됩니다.

 
-- DB_CREATE_FILE_DEST 파라미터에 테이블스페이스가 생성될 디렉토리를 설정.
-- SCOPE을 BOTH로 지정하여 SPFILE(영구히 저장)과 MEMORY(현재 세션에 바로 적용)에 적용
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='C:\oracle\oradata\tbs' 
     SCOPE=BOTH;
시스템이 변경되었습니다.
 
 
-- 리두 로그 파일을 생성할 디렉토리 설정 예제
SQL> ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1='C:\oracle\oradata\redo1' 
     SCOPE=BOTH;
시스템이 변경되었습니다.  
    

OMF를 이용한 테이블스페이스 생성 및 삭제

  아래와 같이 테이블스페이스를 생성하면 DB_CREATE_FILE_DEST에 정의된 디렉토리에 크기가 10M인 데이터 화일이 자동으로 생성됩니다.

  DATAFILE SIZE 옵션을 지정을 하지않으면 오라클은 디폴트로 100M 크기의 데이터 화일을 생성합니다.

  C:\oracle\oradata\tbs 디렉토리에 O1_MF_TBS1_1YTQ2G00_.DBF파일이 생성된 것을 확인할 수 있습니다.

 
-- sqlplus 실행
C:\> SQLPLUS /nolog

-- sysdba 권한으로 접속
SQL> CONN / AS SYSDBA


-- 테이블스페이스 tbs1 생성예제
SQL> CREATE TABLESPACE TBS1 DATAFILE SIZE 10M;
 
   
-- 기존 테이블스페이스에 데이터 화일을 추가하려면 다음과 같이 하면 됩니다.
SQL> ALTER TABLESPACE TBS1 
     ADD DATAFILE SIZE 10M, SIZE 10M;
 
-- C:\oracle\oradata\tbs 디렉토리에 10M 크기의 데이터화일이 
-- 두 개가 더 생성된 것을 확인 할 수있습니다.
2006-02-11  오후 12:38    10,493,952 O1_MF_TBS1_1YTQ2G00_.DBF
2006-02-11  오후 12:40    10,493,952 O1_MF_TBS1_1YTQ4L00_.DBF
2006-02-11  오후 12:40    10,493,952 O1_MF_TBS1_1YTQ4M00_.DBF
 
  
-- 아래와 같이 테이블스페이스를 삭제하면 관련 데이터파일(OMF)들도 
-- OS 레벨에서 자동으로 삭제 됩니다.
SQL> DROP TABLESPACE TBS1;
 
파일이 모두 삭제된 것을 확인 할 수 있습니다.  
    

OMF를 이용한 Online Redo Log 생성 및 삭제

  DB_CREATE_ONLINE_LOG_DEST_n 파라미터를 1에서 n까지 다중화해서 지정을 하면 Online Redo Log Group을 생성할때 n개의 멤버가 자동으로 생성이 됩니다.

 
C:\> SQLPLUS /nolog      -- sqlplus 실행
SQL> CONN / AS SYSDBA   -- sysdba 권한으로 접속
SQL> SET LINESIZE 120   
SQL> COL MEMBER FORMAT A50  -- query 문장을 보기좋게 하기 위해서
 
 
-- 현재 등록되어 있는 Online redo log group 조회
SQL> SELECT group#, member 
     FROM V$LOGFILE;  
 
    GROUP# MEMBER
---------- ------------------------------------
         3 C:\ORACLE\ORADATA\ORA9I\REDO03.LOG
         2 C:\ORACLE\ORADATA\ORA9I\REDO02.LOG
         1 C:\ORACLE\ORADATA\ORA9I\REDO01.LOG
         
         
-- OMF를 이용해서  크기가 10M인 Online Redo Log File을 자동으로 생성
SQL> ALTER DATABASE ADD LOGFILE SIZE 10M;
데이타베이스가 변경되었습니다.
 
 
-- 생성된  Online redo log group 조회
SQL> SELECT group#, member 
     FROM V$LOGFILE; 
      
    GROUP# MEMBER
---------- --------------------------------------------------
         3 C:\ORACLE\ORADATA\ORA9I\REDO03.LOG
         2 C:\ORACLE\ORADATA\ORA9I\REDO02.LOG
         1 C:\ORACLE\ORADATA\ORA9I\REDO01.LOG
         4 C:\ORACLE\ORADATA\REDO1\O1_MF_4_1YTSGP00_.LOG
 
 
-- 생성된 Online redo log 파일의 상태정보 조회
SQL> SELECT group#, sequence#, bytes, members, status 
     FROM  V$LOG;
     
  GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
-------- ---------- ---------- ---------- ---------
       1         23  104857600          1 CURRENT
       2         21  104857600          1 INACTIVE
       3         22  104857600          1 INACTIVE
       4          0   10485760          1 UNUSED
         
 
-- 해당 Online Redo Log Group 삭제
-- Online Redo Log Group의 모든 OMF Redo Log Member 파일이 자동으로 삭제됩니다.
SQL> ALTER DATABASE DROP LOGFILE GROUP 4;
 
 
-- 삭제된 정보를 확인 할 수 있습니다.
SQL> SELECT group#, member 
     FROM V$LOGFILE;  
     
    GROUP# MEMBER
---------- ------------------------------------
         3 C:\ORACLE\ORADATA\ORA9I\REDO03.LOG
         2 C:\ORACLE\ORADATA\ORA9I\REDO02.LOG
         1 C:\ORACLE\ORADATA\ORA9I\REDO01.LOG  
    

참고링크

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

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

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

by 요루 [2007.08.14 22:00:42]
두 파라미터를 지정하면 OMF 를 이용하는것이군요.
각종 커맨드 사용 및 관리가 간단해지네요

by 초보영웅 [2007.12.07 18:27:32]
저는 디스크가 한개라 모두 같은 경로로 설정했어요 ^^
나중에 실무에 가서는 잘해야징 ㅋㅋ

by 초보영웅 [2008.01.04 13:10:21]
혹시 omf를 사용해서 테이블스페이스의 데이터파일 이름을 제 임의대로 변경할 수
있는 파라미터가 있나요?? 초보라 잘 몰라서 그러는데 답변좀 부탁드립니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입