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 입니다
다음의 두가지 초기 파라미터를 정의해야 합니다.
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; 시스템이 변경되었습니다.
아래와 같이 테이블스페이스를 생성하면 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; 파일이 모두 삭제된 것을 확인 할 수 있습니다.
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
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.