SharedIT | 묻고 답하기(AMP)

오라클DB control_file 관련 질문

현재 오라클DB관련 공부중인데 startup 명령어가 제대로 실행이 안되서 여쭤봅니다.


SQL> startup

ORACLE instance started.


Total System Global Area  392495104 bytes

Fixed Size      2226840 bytes

Variable Size    125830504 bytes

Database Buffers   260046848 bytes

Redo Buffers      4390912 bytes

ORA-00205: error in identifying control file, check alert log for more info


contorl file 오류가 발생해 startup 명령어가 제대로 실행 안되는것을 확인했습니다.

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


SQL> show parameter control_file


NAME         TYPE  VALUE

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

control_file_record_keep_time      integer  7

control_files        string  /u01/app/oracle/product/11.2.0

       /xe/dbs/control.dbf



구글링 해보니까 해당 명령어를 통해 control_file위치를 찾아내서 명령어 몇번 치면 startup명령어가 정상적으로 작동이 되던데 전 일단 control.dbf 파일이 현재 없는 상태입니다.


drwxr-xr-x   2 oracle dba      99  6월  7 16:38 .

drwxr-xr-x. 27 oracle dba    4096  6월  5 16:47 ..

-rw-rw----   1 oracle oracle 1544  6월  7 16:38 hc_XE.dat

-rw-r--r--   1 oracle dba     601  6월  7 16:37 initXE.ora

-rw-r-----   1 oracle oracle   24  6월  7 10:53 lkXE

-rw-r--r--   1 oracle oracle    0  6월  7 13:35 ora

-rw-r-----   1 oracle dba    2048  6월  5 16:47 orapwXE

-rw-r-----   1 oracle oracle 2560  6월  7 16:38 spfileXE.ora


initXE.ora 파일 내용


*.audit_file_dest='/u01/app/oracle/product/11.2.0/xe/log'

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/product/11.2.0/xe/dbs/control.dbf'

*.db_name='XE'


spfileXE.ora 파일 내용


*.audit_file_dest='/u01/app/oracle/product/11.2.0/xe/log'

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/product/11.2.0/xe/dbs/control.dbf'

*.db_name='XE'



startup 명령어가 작동하기 위해선 어떻게 해야할까요 ㅠㅠ


Tags : 태그가 없습니다.

4개의 답변이 있습니다.

deerokgo
  0 추천 | 11달 전

백업본이 어딘가 있을 것입니다.

찾아보신 후에 백업 파일 이용해서 복구 하시는게 확실한 방법입니다. 

wansoo
  0 추천 | 11달 전

아래의 query를 이용해서 control file 위치를 확인해 보세요.


select name from v$controlfile;


oracle control file은 기본적으로 백업본을 가지고 있습니다.


select name from v$controlfile; 

쿼리를 실행해 보면 2개의 control file 위치를 알려 줄걸로 보이네요.

linux shell에서 각각의 경로에 들어가서 control file의 상태를 확인해 보세요.

control file이 존재하지 않거나 문제가 있다면 정상적인 control file을 이용해서 복구하면됩니다.


참고로 control file은 확장자가 ctl 입니다. 

control.dbf 가 아닌, control01.ctl, control02.ctl 과 같이 존재합니다.

일반적으로 control02.ctl 이 있는 경로를 확인해서 control02.ctl을 control01.ctl이 있는 경로에 control01.ctl로해서 복사해 준 후에  다시 startup 해 보세요.

Simon.Park
  0 추천 | 11달 전

백업 받은 컨트롤 파일이 없을 경우는 재생성 해야 합니다. 

재생성 하는 방법은 구글링 해 보시면 자세히 나와 있을거에요~~

아래 내용도 참고해 보시구요~


http://nblog.syszone.co.kr/archives/570


topkslee
  0 추천 | 11달 전

가장 먼저 control file을 찾아보세요.

다른 위치에 옮겨졌다면 복구는 간단합니다.

위에 언급된 control file 위치에 찾은 파일을 이동하고 다시 오라클 구동해보세요.


찾아도 없고 백업 파일이 있는 경우

백업 받아놓은 control file을 원 위치에 복구합니다.

그리고 

SQL> startup mount 

SQL> restore controlfile from '위치/controlfile명' ;

SQL> alter database open;


마지막으로 백업받은 control file도 없는 경우는 control file을 새로 생성해야 합니다.

SQL> startup mount 

SQL> alter database backup controlfile to '새로 생성할 위치/controlfile명' ;

SQL> CREATE CONTROLFILE REUSE DATABASE '데이터베이스_이름' NORESETLOGS NOARCHIVELOG

    MAXLOGFILES 원하는_최대_로그_파일_수

    MAXLOGMEMBERS 원하는_최대_로그_멤버_수

    MAXDATAFILES 원하는_최대_데이터_파일_수

    MAXINSTANCES 원하는_최대_인스턴스_수

    MAXLOGHISTORY 원하는_최대_로그_히스토리_수

    LOGFILE

    GROUP 1 ('로그_파일_경로_및_이름') SIZE 원하는_크기,

    GROUP 2 ('로그_파일_경로_및_이름') SIZE 원하는_크기

    ... 기존 있는 것과 동일하게 나열.

    DATAFILE

    '데이터_파일_경로_및_이름',

    '데이터_파일_경로_및_이름'

    ... 기존 data file을 나열.

    CHARACTER SET 기존 캐릭터셋;

SQL> alter database open;

마지막 case 의 경우 불완전 복구입니다.

이 상태로 DB를 사용하기는 무리가 있으니 데이터베이스가 오픈되면

데이터를 export 받으시고, DB를 새로 설치한뒤에 import하시길 권고드립니다.

Good Luck!!