일단 제가 오라클에 대해 조금 설명을 해드려야 할것 같습니다.
오라클이 기동하는 순서는 다음과 같습니다
1. startup nomount
- init<SID>.ora file을 읽어오는 단계
- 인스턴스 기동(init<SID>.ora file의 파라메타에 의해 값이 정해짐)
=> 백그라운드 프로세스와 SGA영역을 설정
- oracle 시스템의 세마포어와 shared 메모리설정 : 실제 메모리등과 관련됨
2. startup mount
- init<SID>.ora file에서 읽어들인 콘트롤 화일의 내용을 읽는 단계
- data file의 위치 등을 파악함
3. 데이타베이스 오픈
- 콘트롤 화일에서 파악된 정보로 실제 데이타 화일을 오픈하는 단계
- 데이타 화일이 오픈되어야만 실제로 유저들이 사용할수 있음
위의 세 단계를 거쳐 데이타 베이스가 기동됩니다.
여기서 읽어와야 할 화일중 하나라도 없으면 그와 관련된 에러 메시지를 뿌려주고 그 단계에서 멈춰버립니다.
지금 님의 문제는 두번째 단계가 진행되지 못한 경우입니다.
즉 init<SID>.ora file에 설정된 콘트롤화일의 위치와 실제 위치가 다르다는 의미이겠지요.
아님 세개의 콘트롤 화일이 서로 다르던지. 세개의 콘트롤 화일중 실제 사용되는 것은 첫번째것이고 나머지 두개는 백업본이지요. 그래서 이 세개는 반드시 일치해야 합니다. 그 크기나 내용, 그리고 디비의 종료에 대한 시점 등이 말이죠.
일단 문제를 해결하려면 init<SID>.ora file을 vi로 열어서 콘트롤 화일의 위치를 지정한 파라메타가 실제위치와 같은지를 비교해보아야 합니다.
다르다면 같도록 해주면 됩니다. init<SID>.ora file을 수정하던지 콘트롤 화일을 그 위치로 옮기던지 둘다 사용 가능한 방법이지요. 그중 맘에 드는 걸로 하면 되지요.
만약 아니면 alert<SID>.log 화일을 열어서 좀더 자세한 에러를 알아야 할겁니다.
그럼 일이 좀 복잡해지지요.
그건 그때 또 알아보면 되겠지요.
그럼 이만.
>>최수정 님께서 쓰시길<<
:: 컨트롤 파일이 세개가 있구요.. ^^;
:: 제가 워낙 초보라...
:: 'alert log' 를 어디서 찾아서 참조하라는 말씀인지
:: 잘 모르겠데요..
:: 쫌 갈켜주세요... ^^
|