control file 재생성하기

2010.05.12 08:23

조인상 조회 수:11710

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


컨트롤 파일이 삭제되었거나 데이터파일과의 동기가 안 맞아서

사용할 수 없게 되었을 경우 컨트롤파일을 재생성 하여야 한다.


1. trace 파일이 위치하는 user dump 위치를 확인한다.

sql> show parameter user_dump;



2. 현재 컨트롤파일을 trace 파일로 백업한다.

sql> alter database backup controlfile to trace;



3. 현재 oracle process가 떠있는지 확인한다.

$ ps -ef | grep <SID>



4. 컨트롤파일이 백업된 trace 파일을 찾아서 oracle homedirectory로
복사한다.
위치는 아까 확인했던 user_dump 파일의 destination이다.

$ cp -p <SID>_ORA_5451.trc $ORACLE_HOME/backup/cntrl1.trc



5. 복사한 trace 파일을 수정한다.
vi편집기를 열어서 첫라인에 startup nomount 명령이 위치하도록
주석문들을 모두 삭제한다.

편집한 trace 파일에는 sql명령들이 들어있으며 실행가능한 스크립트
파일이 된다.
이 스크립트파일을 실행시키면 컨트롤파일이 재생성된다.



6. 오라클 셧다운.

sql> shutdown immediate



7. control file을 삭제한다.

$ cd ~/oradata/<SID>/
$ rm control*



8. 오라클의 idle instance 상태로 로그인 한 후에 스크립트를 실행한다.

$ sqlplus '/ as sysdba'

sql> start ?/backup/cntrl1.trc




9. 스크립트를 실행한 후에는 DB가 자동으로 open 단계까지 올라간다.
제대로 되었나 확인한다.
shutdown 후에 다시 startup 하는 식으로 확인해도 좋다.
서버에 요청 중입니다. 잠시만 기다려 주십시오...