본문 바로가기

데이터베이스/오라클

[오라클] 오라클의 기동상태(시작과 종료)


1. 오라클의 기동
 
 오라클은 4단계의 레벨을 거쳐 시스템이 시작됩니다.  다음로 4단계로 차례대로 실행됩니다.
1. SHUTDOWN : 오라클 인스턴스(Instance)가 정지된 상태로 데이터 베이스에 대해서 접근(Access) 할 수 없습니다.
2. NOMOUNT : 초기화 파라미터 파일을 읽고 인스턴스 구성(SGA, 백그라운드 프로세스 등), alertSID.log 및 추적파일을 엽니다.
3. MOUNT : Control 파일을 읽고 난뒤 리두 로그 파일과 데이터 파일을 확인합니다.
4. OPEN : 데이터 파일과 리두 로그 파일이 제대로 확인된 상태이며, 이때부터 정상적인 접근이 가능합니다.

 보통 우리가 sql에서 startup 명령어를 통해서 DB를 기동시킬때는 위와 같은 순서로 기동됩니다.
기동상태에서 문제가 있을시에는 수동으로 단계별 접속을 할 수 있는데요. 보면서 확인하도록 합니다.

 다음과 같은 명령어로 SHUTDOWN 상태 즉, 데이터베이스를 기동시키지 않은 상태에서 NOMOUNT 단계로 접근합니다.
SQL> startup nomount

[실행화면] 


 보시면 위와 같이 SGA를 구성하시는 것을 볼 수 있습니다. 공유풀과 기타 버퍼들을 할당했군요.

 SGA처럼 눈에 보이지 않지만 내부적으로 관련된 백그라운드 프로세스(Background processes)를 기동시키는데, 그 이전에는 먼저
초기화 파라미터를 확인합니다. 초기화 파라미터가 존재하지 않으면 다음과 같은 에러가 나옵니다.
LRM-00109: could not open parameter file '/home/oracle/initorcl.ora.bkg'
ORA-01078: failure in processing system parameters

한가지, 추가하자면 경로지정을 통해서 특정 파라미터를 이용 시스템을 시작해 줄 수 있는데요. 다음과 같이 가능합니다.
SQL> startup spfile(or pfile)=경로;

보통은 파라미터가 기본위치에 존재 하지만 존재 하지 않거나 다른 파라미터 파일을 이용하고자 한다면 위와 같이 합니다.

 그리고 추적파일(Trace File)과 alertSID.log 파일을 여는데, 오라클을 기동시키는 과정에서 일어나는 모든 에러가 이곳에 기록이 되게 됩니다.
이후에 백그라운드 프로세스를 기동시킵니다.
 
 다음은 MOUNT 단계입니다. 다음과 같이 NOMOUNT 단계에서 MOUNT 단계로 접속합니다.
SQL> alter database mount;

[실행화면]


 참고로, MOUNT 단계에서 확인하게 될 컨트롤 파일에 문제가 생기면 NOMOUNT 단계에서 컨트롤 파일을 재생성 합니다.
마운트 단계에서 데이터파일의 복구 및 경로 재지정이 가능하고, 아카이브로드 모드를 변경 가능합니다.

 마지막 단계인 OPEN 단계에서는 데이터베이스가 컨트롤 파일에 기록되어진 것에 따라,
리두 로그 파일과 데이터 파일을 확인 하는데 싱크가 맞지않으면 해당 시스템은 오픈되지 않습니다. 

 접속방법은 위의 방법에서 'mount'를 'open'으로 바꾸어 줍니다.
 그리고 이 단계 이후에, 데이터베이스에 정상적으로 접근(Access)가 가능합니다.

 데이터베이스를 오픈할때에는 읽기 전용 모드로 기동을 시킬수 있는데요, 이때는 DML작업 등 데이터 변경과 관련된 작업은 불가합니다.
시스템을 구동시키는 방법은 다음과 같습니다.
SQL> startup mount
SQL> alter database open read only;


2. 오라클 종료

오라클의 종료 방법에는 4가지가 존재합니다.
그것들은 NORMAL, TRANSACTIONAL, IMMEDIATE, ABORTIMMEDIATE 와 ABORT의 경우는 강제종료에 속합니다.

종료는 다음과 같이 진행합니다.
SQL> SHUTDOWN 종료방법

 우선 모든 종료 방법은 명령이 내려지는 순간부터는 다른 사용자의 접근(Access)를 차단합니다.
그리고 정상종료와 강제 종료의 차이점은 첫번째로, 종료명령이 내려진 그 순간, 접속을 유지하고 있는 사용자의 접속 유지가 관건이 되겠구요,
두번째로는 진행중인 작업에 대해서 완료 여부에 있겠습니다.

 NORMAL 과 TRANSACTIONAL의 차이점은 NORMAL 은 접속해 있는 유저가 해당 접속을 종료할때까지 시스템이 대기를 합니다.
반면에 TRANSACTIONAL은 진행중인 작업에 초점을 둬서, 작업이 진행중인 세션 종료시까지 시스템이 대기를 합니다.

 강제종료인 나머지 IMMEDIATE와 ABORT의 경우는 모든 사항에 대해서 일시에 종료를 하지만, IMMDIATE의 경우는 작업의 트랜잭션이 마치지 않았으면 롤백을 해버립니다. ABORT는 롤백을 실시하지 않죠.

 이 롤백 여부에 따라서 ABORT가 비정상 종료로 구분이 되는데요. 데이터 베이스는 비정상 종료가 된 후 재시작 시에는 SMON(시스템 모니터)에 의해서 롤백이 되게 됩니다.


도움 되셨다면 밑의 추천(손가락 표시
)과 댓글 부탁드립니다.