'OFA'에 해당되는 글 1건

  1. 2009.09.25 | OMF(ORACLE MANAGED FILES) 개념과 사용 예제

OMF(ORACLE MANAGED FILES) 개념과 사용 예제

오라클 | 2009. 9. 25. 11:43
Posted by 시반

OMF(ORACLE MANAGED FILES) 개념과 사용 예제

Space Management와 관련된 Oracle 9i의 새로운 기능은 크게 다음 세 가지이다.

- Oracle Managed Files, Delete Datafiles, Default Temporary Tablespace.

이를 이용하면 개발 중인 혹은 운영 중인 데이터베이스에 대해 DBA의 수고를 덜게 할 수 있다.

Oracle 9i의 새 기능인 OMF에 대하여 개념과 사용 예제를 알아보기로 한다.
DBA가 테이블스페이스를 생성할 때, 혹은 기존의 테이블스페이스에 새로운 데이터 화일을 추가할 때, 실제 OS 화일명(디렉토리 포함)과 크기를 주면 자동으로 해당 화일이 생성된다.
9i의 Oracle Managed Files(OMF) 기능을 이용하면 OS 화일명을 줄 필요도 없다.
즉, 데이터베이스 차원에서 유일한 화일명을 생성하고, 그 이름의 데이터 화일을 생성하는 것이다.
또한 OMF를 이용해 만들어진 데이터 화일의 경우, 나중에 그 데이터 화일이 속한 테이블스페이스를 삭제하면 데이터 화일까지 자동으로 삭제가 된다.

DBA가 필요없는 데이터 화일을 찾아서 OS 상에서 일일이 삭제해야만 하는 수고를 덜어주게 되는 것이다.

1. Oracle Managed Files (OMF)

Overview에서 기술했듯이 OMF를 이용하면 데이터베이스가 사용하는 OS 화일에 대해 DBA가 일일이 관리해야 하는 번거로움을 덜 수 있다. OMF 화일은 Oracle 서버에 의해 자동으로 생성(유일성을 보장하기 위한 Naming Structure 존재)되고 삭제된다. 이 OMF를 이용할 수 있는 화일은 Control File, Online Redo Log File, Data File 등이다.

1) Benefits of Oracle Managed Files

화일과 관련된 DBA 작업이 쉽다.­ 유일한 화일명이 생성되기 때문에, DBA가 화일명을 잘못 사용할 염려가 없다.
사용되지 않는 데이터 화일이 자동으로 삭제되기 때문에, 사용되지 않는 데이터 화일에 의한 디스크 공간 낭비의 우려가 없다.­ 테스트 데이터베이스, 개발용 데이터베이스 생성이 단순하다.
SQL 스크립트에 OS의 화일명을 명시하지 않아도 되기 때문에 Portable Application 개발이 용이하다

2) Oracle Managed File Configurations

다음 두 가지의 초기 파라미터를 정의하면 된다.

  • DB_CREATE_FILE_DEST : data file들이 위치하게 될 기본 디렉토리
  • DB_CREATE_ONLINE_LOG_DEST_n : online redo log와 control file들이 위치하게 될 기본 디렉토리            (n : 1과 5 사이의 정수 - for multiplexing)

#1 : 위 두 파라미터는 ALTER SYSTEM/SESSION에 의해 동적으로 정의/변경될 수 있다.
#2 : DB_CREATE_FILE_DEST 파라미터는 정의되어 있지만

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

3) Oracle Managed File Name Structure

OMF 화일은 Oracle Flexible Architecture(OFA)를 따르며 플랫폼에 의존적이다.
아래는 Solaris 환경의 OMF Naming Structure의 예이다.

Control Files : ora_%u.ctl
Redo Log Files : ora_%g_%u.log
Data Files : ora_%t_%u.dbf
Temporary Data Files : ora_%t_%u.tmp

#1 : %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.

#2 : 위 Naming Structure를 따르지 않으면 OMF로 인식하지 않는다. 
즉, 위 Naming Structure를 따르는 화일을(OMF로 생성) 추후 이 structure 를 따르지 않는 화일 이름으로 rename하게 되면 OMF 기능을 사용하지 못한다. 
별 다른 옵션 없이 DROP TABLESPACE를 수행하면 해당 데이터 화일의 OS 화일이 자동으로 삭제되지는 않는다.

#3: 파일 시스템 구성시 Oracle Flexible Architecture (OFA) 의 장점은 다음과 같습니다

     A) 향상된 파일 시스템 구성과 간편한 관리
     B) 확장성 향상 : 간편한 데이타베이스 파일 추가
     C) 성능 향상 : 여러 개의 디스크 드라이버에 I/O 분산
     D) 데이타 보호 : 여러 개의 디스크에 데이타 분산

4) Managing Control Files with OMF

데이터베이스 생성 시 CONTROL_FILES 초기 파라미터를 정의하지 않으면 DB_CREATE_ONLINE_LOG_DEST_n에 정의된 디렉토리에 Control File이 기본적으로 생성된다(OMF).
Control File 이름은 유일하게 생성되며 이 결과는 alert.log에 기록이 된다.
데이터베이스 생성 후에는 CONTROL_FILES 초기 파라미터에 생성된 Control File 이름을 정의해주어야 한다.

5) Managing Online Redo Log Files with OMF

Redo Log File specification 없이 아래와 같이 전체 Redo Log Group을 생성할 수 있다.

SQL> ALTER DATABASE ADD LOGFILE;

#1 : 이 경우 해당 redo log file은 DB_CREATE_ONLINE_LOG_DEST_n에 정의된 디렉토리에 생성된다.

     만일 이 파라미터 값이 정의되지 않았으면 DB_CREATE_FILE_DEST 디렉토리에 생성된다.

특정 Redo Log Group을 삭제할 때 관련 OMF 화일들은 OS 레벨에서 자동으로 삭제된다.

SQL> ALTER DATABASE DROP LOGFILE GROUP 3;

#2 : Archived Log File은 OMF일 수 없다.


6) Managing Tablespaces with OMF

아래와 같이 테이블스페이스를 생성하면 DB_CREATE_FILE_DEST에 정의된 디렉토리에 크기가 100M인 데이터 화일이 자동으로 생성된다.이 데이터 화일의 이름은 Naming Structure에 의해 유일하게 만들어진다. (Autoextend On, Unlimited Restriction)

SQL> CREATE TABLESPACE TBS1;

데이터 화일의 기본 값 이외의 화일을 생성하려면 다음과 같이 하면 된다.

SQL> CREATE TABLESPACE TBS1 DATAFILE SIZE 400M AUTOEXTEND OFF;


기존 테이블스페이스에 데이터 화일을 추가하려면 다음과 같이 하면 된다.

SQL> ALTER TABLESPACE TBS1 ADD DATAFILE;

아래와 같이 테이블스페이스를 삭제하면 관련 데이터 화일(OMF)들도 OS 레벨에서 삭제된다.

SQL> DROP TABLESPACE TBS1;

#1 : DB_CREATE_FILE_DEST의 값은 다음과 같이 동적으로 변경할 수 있다.

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/disk2/oradata/';

세션 단위의 변경은 ALTER SESSION 구문을 사용하면 된다. 하지만 이와 같은 변경이 이미 생성되어져 있는 데이터 화일의 위치를 바꾸는 것은 아니며, 다만 새로 생성되는 데이터 화일에만 영향이 있다. OMF 기능을 사용하지 않으려면 다음과 같이 하면 된다.

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '';


 Example

테스트 1) OMF를 이용한 테이블스페이스 생성/삭제 및 이에 대한 확인
------------------------------------------------------------------
As SYSTEM
DB_CREATE_FILE_DEST 파라미터 값 정의

SQL> alter session set db_create_file_dest='/d02/ora9i/oracle/dbs/ora9i/tbs_omf';

- OMF를 이용한 테이블스페이스 생성 : 크기가 10M인 두 개의 데이터 화일 자동 생성

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 0

SQL> create tablespace tbs_4 datafile size 10M, size 10M;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 41024
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:10 ora_tbs_4_xbs141rr.dbf
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:10 ora_tbs_4_xbs142xv.dbf

- 해당 테이블스페이스에 데이터 화일 추가

SQL> alter tablespace tbs_4 add datafile size 10M;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 61536
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:10 ora_tbs_4_xbs141rr.dbf
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:10 ora_tbs_4_xbs142xv.dbf
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:11 ora_tbs_4_xbs156ff.dbf

- 해당 테이블스페이스 삭제 : 이 테이블스페이스의 모든 OMF 데이터 화일 자동 삭제

SQL> drop tablespace tbs_4;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 0


 

테스트 2) OMF를 이용한 UNDO Tablespace 생성/삭제 및 이에 대한 확인
------------------------------------------------------------------
As SYSTEM
DB_CREATE_FILE_DEST 파라미터 값 정의

SQL> alter session set db_create_file_dest='/d02/ora9i/oracle/dbs/ora9i/tbs_omf';

- OMF를 이용한 UNDO 테이블스페이스 생성 : 크기가 10M인 데이터 화일 자동 생성

SQL> create undo tablespace undotbs_1 datafile size 10M;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 20512
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:12 ora_undotbs__xbs17brr.dbf

- 해당 테이블스페이스에 데이터 화일 추가

SQL> alter tablespace undotbs_1 add datafile size 10M;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 41024
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:12 ora_undotbs__xbs17brr.dbf
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:13 ora_undotbs__xbs19hr8.dbf

- 해당 테이블스페이스 삭제 : 이 테이블스페이스의 모든 OMF 데이터 화일 자동 삭제

SQL> drop tablespace undotbs_1;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 0

 

테스트 3) OMF를 이용한 Temporary Tablespace 생성/삭제 및 이에 대한 확인
------------------------------------------------------------------------
As SYSTEM
DB_CREATE_FILE_DEST 파라미터 값 정의

SQL>alter session set db_create_file_dest ='/d02/ora9i/oracle/dbs/ora9i/tbs_omf';

- OMF를 이용한 Locally Managed Temporary 테이블스페이스 생성 : 크기가 10M인
데이터 화일 자동 생성

SQL>create temporary tablespace omf_temp tempfile size 10M extent
management local;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 176
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:14 ora_omf_temp_xbs1cqrv.tmp

- 해당 테이블스페이스에 temp file 추가

SQL> alter tablespace omf_temp add tempfile size 10M;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 352
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:14 ora_omf_temp_xbs1cqrv.tmp
-rw-r----- 1 ora9i dba 10489856 Mar 12 17:15 ora_omf_temp_xbs1d9xp.tmp

- 해당 테이블스페이스 삭제 : 이 테이블스페이스의 모든 OMF 데이터 화일 자동 삭제

SQL> drop tablespace omf_temp;

SQL> host ls -l /d02/ora9i/oracle/dbs/ora9i/tbs_omf
total 0

 

테스트 4) OMF를 이용한 Online Redo Log 생성/삭제 및 이에 대한 확인
------------------------------------------------------------------

As SYSTEM
DB_CREATE_ONLINE_LOG_DEST_n 파라미터 값 정의

SQL> alter session set db_create_online_log_dest_1 =
'/d02/ora9i/oracle/oradata/ora9i/redo_omf';

- OMF를 이용한 새로운 Online Redo Log Group 생성 : 크기가 10M인 Online Redo
Log File 자동 생성

SQL> host ls -l /d02/ora9i/oracle/oradata/ora9i/redo_omf
total 0

SQL> select group#, member from v$logfile;
GROUP# MEMBER

 

3 /d02/ora9i/oracle/oradata/ora9i/redo03.log
2 /d02/ora9i/oracle/oradata/ora9i/redo02.log
1 /d02/ora9i/oracle/oradata/ora9i/redo01.log

SQL> alter database add logfile size 10M;

SQL> host ls -l /d02/ora9i/oracle/oradata/ora9i/redo_omf
total 20512
-rw-r----- 1 ora9i dba 10486272 Mar 12 17:15 ora_4_xbs1fv2r.log

SQL> select group#, member from v$logfile;
GROUP# MEMBER

3 /d02/ora9i/oracle/oradata/ora9i/redo03.log
2 /d02/ora9i/oracle/oradata/ora9i/redo02.log
1 /d02/ora9i/oracle/oradata/ora9i/redo01.log
4 /d02/ora9i/oracle/oradata/ora9i/redo_omf/ora_4_xbs1fv2r.log

- 해당 Online Redo Log Group 삭제 : 이 Redo Log Group의 모든 OMF Redo Log Member 화일 자동 삭제

SQL> alter database drop logfile group 4;

SQL> host ls -l /d02/ora9i/oracle/oradata/ora9i/redo_omf
total 0

SQL> select group#, member from v$logfile;
GROUP# MEMBER
------------------------------------------

3 /d02/ora9i/oracle/oradata/ora9i/redo03.log
2 /d02/ora9i/oracle/oradata/ora9i/redo02.log
1 /d02/ora9i/oracle/oradata/ora9i/redo01.log


 

 

 

 

 

 

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)