블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

최근에 올라온 글

No. 11747

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 블럭 계산: raw device (os block) header size

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마다 다를 수 있으므로 플랫폼
벤더사에 미리 확인한 후 작업하여야 한다.

[출처] RAW DEVICE FILE SYSTEM 간에 오라클 데이터화일 이동하기 (ProDBA) |작성자 산타

'01.오라클 > 002.DB 마이그레이션' 카테고리의 다른 글

[오라클]Characterset 변경  (0) 2013.02.20
[오라클]Full export / import  (0) 2013.02.20
[오라클]Undo Tablespace 변경  (0) 2012.12.19
[오라클]Voting Disk 이관  (0) 2012.12.19
[오라클]Templorary File 변경  (0) 2012.12.19
Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함