본문 바로가기
Database/DB자료

오라클 컨트롤 파일 복구

by 반화넬 2008. 2. 13.
반응형

질문)

지금 원본 디비가 있습니다.(sid : orcl)

그런데 복구용으로 imsi 디비(sid : imsi)를 새로 생성했습니다.

imsi 디비의 내용을 지우고 원본디비 백업 받은걸 imsi 디비에 리스토어 하고

imsi 디비를 오픈하려고 합니다. 컨트롤 파일에서 문제가 생기네요

imsi 디비를 오픈 시킬수 있는 방법이 있나요?? (sid는 서로 달라야 합니다.,)

(원본 디비는 오픈된 상태입니다.)

서버는 한대의 서버 입니다.(한 서버에 sid는 두개입니다.)

어떻게 해야 하나요?

---------------------------------

답변)

1. 일단 백업본은 해당 파일시스템에 리스토어 합니다.

2. 원 DB에서 control file trace를 받으면 udump 쪽으로 .trc 파일이 생깁니다.(안만드셔도 되지만 이걸로 control file 생성하는게 편합니다.)

3. trace 파일을 열어보면 DB 에 관한 정보가 있습니다.

 trace 관련 정보부분 등의 startup nomount 까지 지웁니다.

 여기에서 control file을 생성시키는 부분을 편집합니다.

 create control file reuse database imsi(sid입니다.) resetlogs noarchivelog(임시 복구 db이니 noarchive mode로 하는게 좋겠네요)

밑에 부분에서 redo, datafile을 리스토어한 변경된 위치로 바꿉니다.

4. init file을 편집합니다.

 db 이름, instance 이름, 서비스 이름, contorl file 위치, db_buffer(안고치셔도 되지만 복구 db의 sga를 크게 할필요는 없겠죠) 등등을 수정합니다.

5. dba 유저로 접속후 set ORACLE_SID=IMSI(ksh 일경우 export ORACLE_SID) 하시고 nomount로 start 합니다.

6. nomount 상태에서 control file생성을 하는 스크립트를 실행합니다.

7. control file created 메세지가 발생되면 resetlogs를 찍고  db를 open합니다.(alter database open resetlogs)

8. 데이타를 확인합니다.

 

제가 작성한 부분은 8i(9i라고 크게 다르진 않습니다.) 유닉스를 가정하고 작성했습니다. 생각나는 대로 적다가 보니 빠진 부분이 있는지 장담은 못하겠습니다.

윈도우즈라면 oradim 명령어를 이용해서 오라클 서비스를 먼저 생성하시고 하셔야 됩니다.

원 DB가 있는 만큼 신중하게 작업은 진행하셔야 될거 같네요

-----------------------------------

지금 해봤는데 에러가 나네요

ora-01503: create controlfile failed

ora-01161: database name ORCL in file header does not match

                 given name of IMSI

ora-01110: data file 1 : '/oracle/app/imsi/system01.dbf'

현재 imsi 디비와 원디비(orcl) 디비네임이 일치하지 않는다는

에러 입니다. 디비를 오픈시킬수 있는 방법좀 알려주세요~~

-----------------------------------

윗분이 설명해주신 부분 중 controlfile  재생성 스크립트를 편집하는 부분이 잘못되었네요.

reuse는 set으로 변경해야 합니다.

반응형