SHUTDOWN > NOMOUNT > MOUNT > OPEN

단계별 수행 작업
Database 의 시작은 4개의 단계를 가지고 있다. 

각 단계별 할 수 있는 작업들이 있다. 각 단계에서 사용중인 파일은 수정 할 수 없다.

예를 들어 Mount 상태는 Control File의 검증이 끝났다는 것을 의미하며 사용중이라는 의미인데 Control File을 옮겨버리면 심각한 문제가 발생한다

SHUTDOWN

메모리상에 INSTANCE 가 없는 상태이고 DISK에 파일만 존재한 상태이다.
PFILE 방식을 사용중이면 Parameter File ( http://tawool.tistory.com/190 ) 의 내용을 수정할 수 있다.
이 단계에서 Control File 의 관리( http://tawool.tistory.com/164 )가 가능하다.


SHUTDOWN > NOMOUNT

1. Parameter 파일 읽기
2. SGA 할당
3. Background Process 시작 
4. alertSID.log 파일 및 추적 파일 열기

Parameter File을 읽어서 메모리상에 인스턴스가 생성되고 시작되는 단계이다.
만약 parameter 파일이 상태나 내용이 잘못되었다면 이 단계는 실패한다.


NOMOUNT > MOUNT

1. Parameter File 에 설정된 Control File을 찾아서 연다.
2. Data File 파일과 Redo Log File 의 이름 및 상태를 알기 위해 Control File 을 읽는다. 하지만 이 단계에서는 Data File 과 Redo Log File을 열지 않고 설정 상태만 확인한다.

아래와 같은 특정 관리작업이 가능하다.
Data File 관리 ( http://tawool.tistory.com/192 )
Redo Log  관리 ( http://tawool.tistory.com/163 )

위의 작업들이 NOMOUNT 에서 불가능한 이유는  Data File 이나 Redo Log File에 대한 정보를 Control File에 기록하는데 Control File은 MOUNT 상태에서 읽혀지고 사용하기 때문이다.


MOUNT > OPEN
1. Data File Open
2. Redo Log File Open

Oracle Server는 모든 Data File과 Redo Log File을 검사하여 Database 일관성을 검사한다. 만약 Instance Crash상태라면 SMON Process 가 Instance Recovery 를 수행한다.
 하지만  Data File과 Redo Log File을 열 수 없다면 오류를 리턴하고 OPEN 상태로 될 수 없다


현재 상태 확인

상태의 확인은 아래의 쿼리를 이용하여 조회 할 수 있다.
SELECT status FROM v$instance

각 상태는 아래와 같은 값으로 대응된다.
 SHUTDOWN NOMOUNT  MOUNT  OPEN 
  STARTED MOUNTED OPEN


ALTER DATABASE 명령으로 변경

NOMOUNT 상태로 Startup

STARTUP NOMOUNT;

NOMOUNT > MOUNT
ALTER DATABASE [database] MOUNT;

MOUNT > OPEN
옵션으로 database 이름을 넣거나 사용자 트랜잭션에 의해 데이터 수정을 막고자 한다면 READ ONLY 옵션을 줘서 OPEN 할 수 있다.
ALTER DATABASE [database] OPEN [READ ONLY | READ WRITE];
위와 같은 명령어들을 이용하여 각 상태를 변경 할 수 있다.

NOMOUNT 상태에서 바로 OPEN 을 할 수 없으며 상위에서 하위로 변경을 하지 못한다.
예를들어 NOMOUNT 상태에서 MOUNT 상태를 거치고 OPEN 상태로 순차적 변경이 가능하며, OPEN 상태에서 NOMOUNT나 MOUNT 상태로 변경하기 위해서는 SHUTDOWN 을 해야 한다.


Database Open
RESTRICT : RESTRICTED SESSION 권한을 가진 사용자만 데이터베이스에 엑세스 할 수있다.
startup restrict

특정 Database만 mount 또는 open 할 수 있다.
startup mount [database]
startup open [database]



Database Shutdown
ㅇShutdown 은 4가지의 옵션이 있다.
SHUTDOWN [ABORT | IMMEDIATE | TRANSACTIONAL | NORMAL]


종료모드 ABORT IMMEDIATE TRANSACTIONAL NORMAL
새로운 접속 X X X X
현재 세션 종료시까지 대기 X X X O
현재 트랜젝션 종료시까지 대기 X X O O
체크 포인트 시행 및 파일 닫기 X O O O

새로운 접속
모든 옵션이 동일하게 사용자의 새로운 접속을 허용하지 않는다.

현재 세션 종료시까지 대기
현재 사용중인 사용자가 세션을 종료 할 때까지 Shutdown이 되지 않는다.

현재 트랜잭션 종료시까지 대기
현재 발생한 트랜잭션들이 끝날때까지 기다린다. 트랜잭션의 끝은 COMMIT이나 ROLLBACK 명령어가 실행되어야 Shutdown이 된다.

체크 포인트 시행 및 파일 닫기
끝나지 않은 트랜잭션은 rollback 시키고, Clean Database 상태를 만들고 종료한다.


Normal
기본 종료 모드이다.
1. 새로운 접속 허용하지 않음
2. 종료하기 전에 모든 사용자의 접속종료를 기다림
3. 백그라운드 process가 종료되고 SGA가 제거됨
4. Instance가 종료되기 전에 Database 를 닫고 마운트를 해제함.
5. 시작시 Instance 복구가 필요 없음

TRANSACTIONAL
사용자의 작업 손실을 방지한다.
1. 모든 사용자는 새로운 트랜잭션을 시작 할 수 없음.
2. 사용자의 트랜잭션이 끝나면 해당 사용자는 접속이 해제 됨
3. 모든 트랜잭션이 끝나면 즉시 종료됨
4. 시작시 Instance 복구가 필요 없음

IMMEDIATE
1. 현재 실행중인 Transaction은 강제 rollback 처리 함.
2. 모든 사용자의 접속을 강제로 해제 함
3. Instance가 종료되기 전에 Database 를 닫고 마운트를 해제함.
4. 시작시 Instance 복구가 필요 없음

ABORT(Dirty Database)
1. 처리중인 SQL 문이 즉시 종료
2. 모든 사용자의 접속을 강제로 해제 함
3. Redo Log Buffer 내용이 Database에 기록되지 않음
4. Commit 하지 않은 Transaction은 Rollback 되지 않음
5. Instance는 파일을 닫지 않고 종료 됨
6. Database 가 닫히지 않고 마운트가 해제되지 않음
7. 시작시 Instance 를 복구 해야 함

Dirty Database 는 백업하지 않는것이 좋다.




참고 문헌 : Oracle 9i 교육교재

'Oracle > Architecture' 카테고리의 다른 글

[Storage - 3] Segment  (0) 2012.01.27
[Storage - 2] Extent  (0) 2012.01.27
[Storage - 1] Database Block  (0) 2012.01.26
Oracle Server Architecture 용어 정리  (0) 2012.01.17
[10g] Redo Log 관리  (0) 2011.10.26