TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-18 |
제목 | Oracle7 / Oracle8 / OS에서 datafile의 block dump를 얻는 방법 | ||
---|---|---|---|
Oracle7 / Oracle8 / OS에서 datafile의 block dump를 얻는 방법
------------------------------------------------------------ 'block dump'는 database 내의 block의 내용을 dump받도록 해준다. 이렇게 얻어진 dump에는 block 내에 포함된 모든 내용을 포함하는데 단, 이것은 OS level의 image dump는 아니며, oracle에서 user가 이해하는 데 도움이 되도록 정해진 SYMBOL로 표현되므로 이렇게 얻어진 내용을 해석하기 위해서는 Oracle에 dependent하며, 별도의 자료를 참조하여야 한다. 여기에서는 해석 방법은 포함하지 않으며 dump를 얻는 방법에 대해서만 기술하였다. 1. Oracle7에서 block dump 사용하는 방법 oracle7에서 block dump를 얻기 위해서는 항상 database가 OPEN 상태에서만 가 능하며, datafile도 ONLINE 상태여야 한다. (1) dump하고자 하는 block의 DBA를 십진수 값으로 얻는다. file 번호와 block 번호를 이용해 DBA를 얻는 방법은 이용한다. (2) 다음 문장을 실행하여 dump 내용을 포함하는 trace file을 생성한다. sqlplus system/manager SQL>alter session set events 'immediate trace name BLOCKDUMP level (3) 다음과 같이 trace file이 생성된 위치를 확인한다. os>svrmgrl SVRMGR>connect internal SVRMGR>show parameter user_dump_dest 2. Oracle8 에서 BLOCK DUMP Oracle7에서는 block dump를 얻기 위해서는 DBA를 얻어야하고 DBA를 이용하여 dump를 생성하는 sql 문의 syntax도 친숙하지 않은 것이었다. Oracle8에서는 보다 간단하고 사용자에게 익숙한 형태로 block dump가 가능하도록 하였다. sqlplus로 접속한 상태에서 아래에 나열된 것과 같이 file 이름이나 번호, block 번호나 범위를 지정하여 dump를 얻을 수 있다. - ALTER SYSTEM DUMP DATAFILE {'filename'}|{filenumber}; - ALTER SYSTEM DUMP DATAFILE {'filename'}|{filenumber} BLOCK {blockno}; - ALTER SYSTEM DUMP DATAFILE {'filename'}|{filenumber} BLOCK MIN {blockno} BLOCK MAX {blockno}; 여기에서 blockno는 dump하고자 하는 block의 십진수 값이다. 예를 들어 다음과 같이 하면 된다. - ALTER SYSTEM DUMP DATAFILE 1 BLOCK 5586; - ALTER SYSTEM DUMP DATAFILE 1 BLOCK MIN 5585 BLOCK MAX 5586; - ALTER SYSTEM DUMP DATAFILE '/u01/oradata/MYDB/system01.dbf' BLOCK 98; 주의: 그런데 이 때 잘못된 block file number를 입력하는 등의 잘못된 명령에도 불구하고 'Statement processed'라는 정상 처리 형태의 메시지가 나타난다. 이러한 경우 trace file에는 dump 내용 대신 다음과 같은 오류 메시지가 적혀 있다. Error: alter system dump datafile: input file # 100 is too big BLOCK 절을 생략하면 datafile의 모든 block에 대해서 dump가 생성된다. 이 때 trace file의 크기는 MAX_DUMP_FILE_SIZE에 의해 제한을 받으므로 전체 block을 모두 포함하지 않는 dump가 생성될 수 있다. {filenumber} 를 사용할 때에는 database는 항상 OPEN된 상태이고 file은 ONLINE 이어야 한다. 그리고 이 때의 {filenumber}는 tablespace 내의 상대적인 값이 아닌, 절대적인 값이어야 한다. 'filename' 을 사용하면 같은 block size를 가지고 있는 다른 데이타베이스의 데이타화일도 dump를 할 수 있다. 이러한 경우에 dump를 수행하는 instance는 최소한nomount는 되어야 한다. 즉 다음과 같이 하면 된다. SVRMGR>startup nomount SVRMGR>alter system dump datafile mnt3/rctest73/server/eykim/test01.dbf' block 88; dump의 결과가 저장되는 trace 화일은 USER_DUMP_DEST 디렉토리에 생성된다. USER_DUMP_DEST를 확인하는 방법은 1-(3)번(Oracle7)에서 기술하였다. 3. OS block dump UNIX: dd if=dbfile.dbf bs=2k skip={block} count=1 | od -x > dump.out 여기에서 {block}은 dump 하지 않기 위해 skip하고자 하는 block의 갯 수를 지정한다. NT: 다음과 같은 제품들이 사용가능하다. MKS Toolkit , FileView (Shareware), HEdit |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |