'Storage'에 해당되는 글 2건

  1. 2008.06.25 FILE SYSTEM과 RAW DEVICE의 비교
  2. 2008.06.25 raw device를 파일시스템 복사 (1)

1. CFS(CLUSTER FILE SYSTEM)

-. RAC에서 지원하는 FILE SYSTEM으로 CLUSER내의 모든 MEMBER들이 동시에 READ/WRITE의

    ACCESS가 가능한 FILE SYSTEM을 말함

-. FILE SYSTEM의 BUFFER CACHE를 경유하지 않는 DIRECT I/O가 가능

-. 각 플랫폼별 지원하는 CFS가 존재

-. 장점 : 1) 관리가 용이

             2) ORACLE MANAGED FILE의 사용 가능

             3) ORACLE DATA FILE의 AUTOEXTEND가 가능

-. 단점 : 1)DIRECT I/O를 사용하지 않는 작업의 경우 I/O 오버헤드가 발생


2. RAW DEVICE

-. FILE SYSTEM이 SETUP되지 않는 DISK DRIVE

-. 장점 : 1) ROW DIVICE는 OS커널에 의해 BUFFERING되지 않고 USER BUFFER와 DEVICE간에 직접

                데이터가 전송되므로 ORACLE DISK I/O성능 향상되고 CPU 오버헤드가 감소

             2) OS FILE SYSTEM의 오버헤드를 피할 수 있음

             3) OS BUFFER SIZE를 줄일 수 있음

-. 단점 : 1) SETUP 하기 어렵고 백업절차가 FILE SYSTEM보다 복잡

             2) RAW DEVICE와 OS FILE을 혼합하여 사용하는 경우 OS FILE은 ULIMIT PARAMETER의

                 SIZE보다 작아야 함

             3) ULIMIT를 초과하는 테이블은 RAW DEVICE를 사용하여야 함


3. RAW DEVICE와 CFS 모두 직접 디스크에 쓰기 수행이 가능하나 CFS의 경우 FILE CREATION, RESIZE등의 METADATA OPERATION과 같은 작업에선 여전히 I/O 오버헤드가 존재하며, RAW DEVICE는 INODE등 자유 공간 정보 관리를 위한 부담이 없으므로, 일반적으로 CFS보다 안정적임


4. RAC이전의 OPS환경에서는 DATA FILE 등 공용 FILE의 저장 장소로 RAW DEVICE의 사용이 요구됨

 

신고



댓글을 달아 주세요

RAW DEVICE와 FILE SYSTEM 간에 오라클 데이터화일 이동하기
======================================================

유닉스 명령이 dd를 이용하여 오라클 데이터화일을 Unix File System과 Raw
Device 간에 이동할 수 있으나, 플랫폼 별 Raw Device의 특성으로 인하여 주의할
점이 있다. 만일 잘못된 이동으로 인하여 데이터베이스가 기동하지 못하면,
ORA-7366 (sfifi: invalid file, file does not have valid header block.)
에러가 발생할 수 있다.

예를 들어 Digital unix의 경우는 raw device에 64k OS 헤더가 필요하므로 dd
명령어 옵션 중 iseek와 oseek를 활용하여야 한다.

다음은 예제를 통하여 데이터화일을 Raw Device에서 Unix File System으로
이동하는 절차이다.

(운영 현황)
 
   - 현재의 위치: /dev/rdsk/c0t15d0s7
   - 이동할 위치: /oracle/file/system.dbf
   - 화일의 크기: 488636416 bytes <--- V$DATAFILE.BYTES column 값!
   - DB_BLOCK_SIZE: 2048 bytes
 
 
(준비 단계)
 
   1. Oracle 블럭 수 계산:

      BYTES / DB_BLOCK_SIZE = 488636416 / 2048 = 238592 (블럭)
 
   2. O/S file header 블럭 추가:

      238592 + 1 = 238593 (블럭)
      : "ls -l /oracle/file/system.dbf" 명령으로 확인 가능하며, O/S file
        header는 1블럭으로 항상 일정함.
 
   3. Raw Device OS header 블럭 계산:

      64K / DB_BLOCK_SIZE = 65536 / 2048 = 32 (블럭)
      : 사용할 dd 명령어 중 블럭의 크기를 DB_BLOCK_SIZE(2048바이트)로 할
        예정이므로 2048로 나누어야 함.

(명령어 형식)

   $ dd if=<raw device> of=<UFS file> bs=<oracle blocksize>
     iseek=<blocks to skip> count=<total count>
 
(명령어 수행 절차)

   (1) SVRMGR> STARTUP MOUNT
   (2) SVRMGR> !dd if=/dev/rdsk/c0t15d0s7 of=/oracle/file/system.dbf
       bs=2048 iseek=32 count=238593
   (3) SVRMGR> ALTER DATABASE RENAME FILE '/dev/rdsk/c0t15d0s7' TO
       '/oracle/file/system.dbf';
   (4) SVRMGR> ALTER DATABASE OPEN;

========================================================================

반대로 Unix File System에서 Raw Device로 이동하는 명령어 형식은 아래와 같다.

(명령어 형식)

   $ dd if=<UFS file> of=<raw device> bs=<oracle blocksize> \
     oseek=<blocks to skip> count=<total count>

유사한 방식으로 데이타 화일 뿐 아니라 리두 로그 화일도 이동할 수 있다.

[주의] Raw Device의 블럭 헤더의 크기는 OS마다 다를 수 있으므로 플랫폼
      벤더사에 미리 확인한 후 작업하여야 한다.

신고



댓글을 달아 주세요

  1. 2010.07.24 17:32 Address Modify/Delete Reply

    비밀댓글입니다

티스토리 툴바