RAW DEVICE 란?
흔히 유닉스에서 disk를 억세스하는 방법에 따라 block device(/dev/dsk) 와 raw device(/dev/rdsk) 로 구분을 합니다. 단어 그대로 이해를 한다면 block device에 블록은 파일시스템의 블록을 말하는 겁니다. 즉, Partition을 나누고 Mount Point를 잡을 때(흔히 window 환경에서 말하는 directory 를 말하는 것)의 논리적인 위치를 말하고, raw device는 Partition만 잡고 Mount Point가 없는 것을 말합니다. 다시 말해서 raw device 위에 file device가 언쳐지는 것입니다.
OS 는 어플리케이션의 IO 요구에 따라 파일 시스템에서 읽어 오느냐 raw device(파일시스템 보다는 더 하위레벨)에서 읽어 오느냐가 억세스 방법에 의해서 차이가 있습니다. raw device는 파일시스템이 없기 때문에 당연히 파일, 디렉토리, 억세스컨트롤 등을 어플리케이션에서 직접 관리 해야 합니다.
로 디바이스를 데이타베이스에서 사용할 때 데이타 베이스는 자체적으로 블록과 익스텐트 등의 스토리지 관리 개념을 가지고 있기 때문에 OS레벨에서의 물리적인 데이타 파일 관리만 하면 됩니다.
(데이타 베이스에서 로디바이스를 사용하더라도 물리적인 디바이스(디스크)에 데이타 파일형태로 위치해야 하기 때문에 볼륨매니저 같은 가상 스토리지 개념이 필요합니다.)
block device access path
- Application<->Library Buffer<->Operation System Cache<->File System Manager<->Device raw device access path - Application<->Device
RAW DEVICE 장점
- RAW DEVICE 는 OS KERNEL 에 의해 BUFFERING 이 되지 않고 APPICATION 과 DEVICE 간에
직접 DATA 가 전송되므로 DISK I/O 성능 향상되고 CPU OVERHEAD가 감소된다.
- OS FILE SYSTEM 의 OVERHEAD 를 피할 수 있다.
- OS BUFFER SIZE 를 줄일 수 있다.
- FILE SYSTEM 보다 일반적으로 I/O 속도가 최고 40% 까지 빠르다.
RAW DEVICE 단점
- SETUP 하기 어렵고 BACKUP 절차가 FILE SYSTEM 보다 복잡하여 관리가 어렵다.
ORACLE 에서의 RAW DEVICE 구성 시 주의할 점
- REDO LOG FILE, DATAFILE, CONTROL FILE은 RAW DEVICE로 구성하며 ARCHIVE FILE은 FILE DEVICE에 구성해야 한다. 왜냐하면 RAW DEVICE에는 한 개 이상의 FILE을 쓸 수 없기 때문이다.
Raw Device 파티션에 데이타 화일 생성하기
- 한 파티션 전체 공간을 오라클 화일로 사용할 수 있나?
불가능하며, 최소한 두 개의 오라클 블럭 크기를 남기고 사용할 수 있다.
예를 들어, 100M 크기의 파티션에 4K 오라클 블럭 크기를 갖는 최대의 데이타 화일을 생성하는 문장은 다음과 같다.
SQL> create tablespace raw_tabspace datafile '/dev/raw1' size 102392K REUSE;
여기서 102392K 값의 산출 근거는 {(100 * 1024K) - 8K} 공식에 의해 구하여진다.
- Raw Device의 첫 번째 파티션을 사용할 수 있나?
사용하지 않을 것을 권고한다. 그 이유는 OS 종류나 버젼에 따라 디스크 파티션 테이블이나 논리적 볼륨 제어 정보등이 첫 번째 파티션을 관리될 수 있기 때문이다. 따라서 OS 벤더의 자문을 받아야 한다.
- 파티션의 오너쉽은 어떻게 지정하여야 하나?
기본적으로 생성은 'root'로 수행하지만, 이후에 오너쉽 밑 그룹은 각각 oracle 사용자와 dba 그룹으로 지정하여야 한다.
RAC 구성에 Raw Device 환경에 datafile 추가 하기
SQL> alter tablespace TS_NAME add datafile '/dev/rlvindb08002G008' size 2047M;
2G짜리 Raw Device는 SIZE 가 2048M 이지만 조금 작게 설정합니다. Raw Device 는 Raw Device 마다 header block을 가져야 하기 때문에 dbf size를 Raw Device 크기만큼 다 잡아 버리면 head block을 만들수 없어서 에러가 나기 때문입니다.
데이타베이스 화일 백업에 관하여
화일 시스템과는 달리 Raw Device에서는 'tar'나 'cpio' 명령을 사용할 수 없고, 반드시 아래처럼 'dd' 명령어를 사용하여야 한다.
% dd if=/dev/raw1 of=/dev/rmt0 bs=16k
하지만 'dd'로 백업된 화일에 대하여 'tar'나 'cpio' 명령을 사용하여 별도의 관리 방법을 수행할 수 있다.
파일 운영하기
- Redo Log의 위치에 대하여?
Redo Log는 가장 쓰기가 활발하며 특성상 순차적으로 쓰기 작업이 일어나는 화일이므로 Raw Device 사용이 가장 권장된다. 특히 OPS 환경에서는 반드시 Raw Device에 관리되어야 한다.
- Archive Log의 위치에 대하여?
Archive Log는 특성상 화일 시스템에 저장되어야 한다.
- Raw Device 파티션에 두 개 이상의 화일을 저장할 수 있나?
가능하지 않다.
- 모든 파티션의 크기를 동일하게 지정할 필요가 있나?
데이타베이스 화일에 대한 파티션 지정 변경이 용이하다는 장점 외에는 일반적으로 권고되지 않는 방법이다.
RAW DEVICE SETTING 방법
1. FREE DISK PARTITION 의 이름을 결정한다.
FREE PARTITION 은 OS FILE SYSTEM 에의해 사용 돤것이 아니어야한다.
2. ORACLE 의 RAW DEVICE SETTING
$ chown oracle /dev/rdsk/c0s0d1
$ chmod 600 /dev/rdsk/c0s0d1
3. 새로운 PARTITION 을 추가한다.
create database SID
logfile '?/dbs/log1.f' size 100K, '?/dbs/log2.f' size 100K
datafile '/dev/rdsk/c0s0d1' size 10000K reuse ;
alter tablespace tablespace_name add datafile
'/dev/rdsk/c0s0d2' size 10000K reuse ;
RAW DEVICE 의 GUIDELINE
1. REDO LOG FILE 과 DATABASE FILE 을 서로 다른 DRIVE 에 놓는다.
2. 다른 DRIVE 에 자주 사용되는 TABLE 을 분산시킨다.
3. TABLE 과 그 TABLE 의 INDEX 를 분리한다.
4. ORACLE 과 OS I/O 를 분리한다
출처 : http://juxh2p.egloos.com/3107671
흔히 유닉스에서 disk를 억세스하는 방법에 따라 block device(/dev/dsk) 와 raw device(/dev/rdsk) 로 구분을 합니다. 단어 그대로 이해를 한다면 block device에 블록은 파일시스템의 블록을 말하는 겁니다. 즉, Partition을 나누고 Mount Point를 잡을 때(흔히 window 환경에서 말하는 directory 를 말하는 것)의 논리적인 위치를 말하고, raw device는 Partition만 잡고 Mount Point가 없는 것을 말합니다. 다시 말해서 raw device 위에 file device가 언쳐지는 것입니다.
OS 는 어플리케이션의 IO 요구에 따라 파일 시스템에서 읽어 오느냐 raw device(파일시스템 보다는 더 하위레벨)에서 읽어 오느냐가 억세스 방법에 의해서 차이가 있습니다. raw device는 파일시스템이 없기 때문에 당연히 파일, 디렉토리, 억세스컨트롤 등을 어플리케이션에서 직접 관리 해야 합니다.
로 디바이스를 데이타베이스에서 사용할 때 데이타 베이스는 자체적으로 블록과 익스텐트 등의 스토리지 관리 개념을 가지고 있기 때문에 OS레벨에서의 물리적인 데이타 파일 관리만 하면 됩니다.
(데이타 베이스에서 로디바이스를 사용하더라도 물리적인 디바이스(디스크)에 데이타 파일형태로 위치해야 하기 때문에 볼륨매니저 같은 가상 스토리지 개념이 필요합니다.)
block device access path
- Application<->Library Buffer<->Operation System Cache<->File System Manager<->Device raw device access path - Application<->Device
RAW DEVICE 장점
- RAW DEVICE 는 OS KERNEL 에 의해 BUFFERING 이 되지 않고 APPICATION 과 DEVICE 간에
직접 DATA 가 전송되므로 DISK I/O 성능 향상되고 CPU OVERHEAD가 감소된다.
- OS FILE SYSTEM 의 OVERHEAD 를 피할 수 있다.
- OS BUFFER SIZE 를 줄일 수 있다.
- FILE SYSTEM 보다 일반적으로 I/O 속도가 최고 40% 까지 빠르다.
RAW DEVICE 단점
- SETUP 하기 어렵고 BACKUP 절차가 FILE SYSTEM 보다 복잡하여 관리가 어렵다.
ORACLE 에서의 RAW DEVICE 구성 시 주의할 점
- REDO LOG FILE, DATAFILE, CONTROL FILE은 RAW DEVICE로 구성하며 ARCHIVE FILE은 FILE DEVICE에 구성해야 한다. 왜냐하면 RAW DEVICE에는 한 개 이상의 FILE을 쓸 수 없기 때문이다.
Raw Device 파티션에 데이타 화일 생성하기
- 한 파티션 전체 공간을 오라클 화일로 사용할 수 있나?
불가능하며, 최소한 두 개의 오라클 블럭 크기를 남기고 사용할 수 있다.
예를 들어, 100M 크기의 파티션에 4K 오라클 블럭 크기를 갖는 최대의 데이타 화일을 생성하는 문장은 다음과 같다.
SQL> create tablespace raw_tabspace datafile '/dev/raw1' size 102392K REUSE;
여기서 102392K 값의 산출 근거는 {(100 * 1024K) - 8K} 공식에 의해 구하여진다.
- Raw Device의 첫 번째 파티션을 사용할 수 있나?
사용하지 않을 것을 권고한다. 그 이유는 OS 종류나 버젼에 따라 디스크 파티션 테이블이나 논리적 볼륨 제어 정보등이 첫 번째 파티션을 관리될 수 있기 때문이다. 따라서 OS 벤더의 자문을 받아야 한다.
- 파티션의 오너쉽은 어떻게 지정하여야 하나?
기본적으로 생성은 'root'로 수행하지만, 이후에 오너쉽 밑 그룹은 각각 oracle 사용자와 dba 그룹으로 지정하여야 한다.
RAC 구성에 Raw Device 환경에 datafile 추가 하기
SQL> alter tablespace TS_NAME add datafile '/dev/rlvindb08002G008' size 2047M;
2G짜리 Raw Device는 SIZE 가 2048M 이지만 조금 작게 설정합니다. Raw Device 는 Raw Device 마다 header block을 가져야 하기 때문에 dbf size를 Raw Device 크기만큼 다 잡아 버리면 head block을 만들수 없어서 에러가 나기 때문입니다.
데이타베이스 화일 백업에 관하여
화일 시스템과는 달리 Raw Device에서는 'tar'나 'cpio' 명령을 사용할 수 없고, 반드시 아래처럼 'dd' 명령어를 사용하여야 한다.
% dd if=/dev/raw1 of=/dev/rmt0 bs=16k
하지만 'dd'로 백업된 화일에 대하여 'tar'나 'cpio' 명령을 사용하여 별도의 관리 방법을 수행할 수 있다.
파일 운영하기
- Redo Log의 위치에 대하여?
Redo Log는 가장 쓰기가 활발하며 특성상 순차적으로 쓰기 작업이 일어나는 화일이므로 Raw Device 사용이 가장 권장된다. 특히 OPS 환경에서는 반드시 Raw Device에 관리되어야 한다.
- Archive Log의 위치에 대하여?
Archive Log는 특성상 화일 시스템에 저장되어야 한다.
- Raw Device 파티션에 두 개 이상의 화일을 저장할 수 있나?
가능하지 않다.
- 모든 파티션의 크기를 동일하게 지정할 필요가 있나?
데이타베이스 화일에 대한 파티션 지정 변경이 용이하다는 장점 외에는 일반적으로 권고되지 않는 방법이다.
RAW DEVICE SETTING 방법
1. FREE DISK PARTITION 의 이름을 결정한다.
FREE PARTITION 은 OS FILE SYSTEM 에의해 사용 돤것이 아니어야한다.
2. ORACLE 의 RAW DEVICE SETTING
$ chown oracle /dev/rdsk/c0s0d1
$ chmod 600 /dev/rdsk/c0s0d1
3. 새로운 PARTITION 을 추가한다.
create database SID
logfile '?/dbs/log1.f' size 100K, '?/dbs/log2.f' size 100K
datafile '/dev/rdsk/c0s0d1' size 10000K reuse ;
alter tablespace tablespace_name add datafile
'/dev/rdsk/c0s0d2' size 10000K reuse ;
RAW DEVICE 의 GUIDELINE
1. REDO LOG FILE 과 DATABASE FILE 을 서로 다른 DRIVE 에 놓는다.
2. 다른 DRIVE 에 자주 사용되는 TABLE 을 분산시킨다.
3. TABLE 과 그 TABLE 의 INDEX 를 분리한다.
4. ORACLE 과 OS I/O 를 분리한다
출처 : http://juxh2p.egloos.com/3107671
'IT > Oracle' 카테고리의 다른 글
Oracle Error-code (0) | 2008.04.17 |
---|---|
v$rollstat, v$rollname (0) | 2008.04.16 |
Oracle monitoring query (0) | 2008.04.03 |
Dictionary Cache (v$rowcache) (0) | 2008.04.03 |
Library Cache (v$librarycache table) (0) | 2008.04.03 |