오라클 시작과 종료

시작(STARTUP) 과 종료 단계

오라클 데이터베이스를 시작시키는 단계

NOMOUNT 인스턴스 시작
(메모리확보, 필요한 BACKGROUND PROCESS 기동,초기화 파라미터 파일 OPEN -> SGA 구축, 추적파일과 ALERT파일오픈)
초기화 파라미터는 NOMOUNT 단계에서 딱 한번 읽혀집니다.
데이터베이스 이름은 init<SID>.ora 즉 초기화 파라미터 파일의 DB_NAME 파라미터나 STARTUP 명령에 지정되어야만 합니다.
MOUNT 인스턴스에 해당하는 컨트롤파일 오픈(파라미터 파일에 명시된 컨트롤 파일을 오픈합니다.)
컨트롤파일에는 데이터파일과 리두 로그 파일의 이름과 상태가 기록되어 있습니다. 
하지만 마운트단계에서 이들 파일의 존재 여부를 확인하지는 않습니다.

다음의 작업들을 수행시에는 MOUNT 단계까지만 데이터베이스를 오픈해야 합니다.
* 데이터파일 이름을 바꿀때
* 리두 로그 아카이빙 옵션 켜고 끄기
* 데이터베이스 완전 복구 수행시

OPEN 인스턴스에 해당하는 컨트롤파일에 따라 데이터파일과 온라인 리두 로그 파일이 오픈됩니다.
파일이 존재하지 않으면 에러가 발생됩니다.
오라클은 OPEN 단계에서 데이터파일과 온라인 리두 로그 파일을 열 수 있는지 점검하고 데이터베이스의 일관성을 검사합니다. 
필요하다면 백그라운드 프로세스인 시스템 모니터(SMON)가 인스턴스를 복구합니다.

(예를 들어 데이터베이스가 SHUTDOWN 명령에 의해 종료되지 않고 시스템의 종료에 의해 종료되었다면 이단계에서 복구작업이 필요합니다. 이 작업은 자동으로 이루어집니다.)

복구단계는 다음과 같습니다.
1. 데이터파일에는 기록되지 않았으나 온라인 리두 로그에는 기록된 데이터를 복구(데이터파일에 기록)
2. 커밋되지 않은 모든 트랜잭션이 롤백되는 것을 기다리지 않고 데이터베이스가 오픈됩니다.
3. 커밋되지 않은 트랜잭션이 롤백됩니다.

 데이터베이스를 종료시키는 단계는 시작단계의 역순입니다.

CLOSE OPEN된 데이터베이스를 닫습니다.
데이터베이스가 닫히면 버퍼 캐쉬의 변경사항과 리두 로그 버퍼 캐쉬 엔트리를 데이터파일과 온라인 리두 로그 파일에 옮겨 적습니다. 이작업이 끝나면 오라클은 모든 온라인 데이터파일과 리두로그 파일을 닫습니다.
컨트롤파일은 오픈된 상태입니다.
DISMOUNT 인스턴스로부터 데이터베이스가 분리됩니다. 따라서 인스턴스만 남게 됩니다.
데이터베이스가 분리될때 컨트롤 파일을 닫습니다.
SHUTDOWN 데이터베이스 종료의 마지막 단계로 인스턴스를 종료합니다.
인스턴스가 종료시 추적파일과 ALERT파일이 닫히며 SGA 가 해제되고, 백그라운드 프로세스가 종료됩니다.

STARTUP 명령

인스턴스를 시작하고 데이터베이스를 오픈합니다.

STARTUP [FORCE] [RESTRICT] [PFILE=filename] [EXCLUSIVE | PARALLEL | SHARED]
                [OPEN [RECOVER] [database] | MOUNT | NOMOUNT]

OPEN 데이터베이스에 접근할 수 있도록 합니다. 디폴트 옵션
MOUNT 특정 작업을 위해 데이터베이스를 마운트 단계까지만 시작합니다.
NOMOUNT 데이터베이스를 NOMOUNT 단계까지만 시작합니다.
EXCLUSIVE 현재의 인스턴스만 데이터베이스에 접근하도록 허용합니다.
PARALLEL 여러개의 인스턴스가 데이터베이스에 접근하도록 합니다.(ORACLE PARALLEL SERVER 인경우)
SHARED PARALLEL 대신 사용합니다.
PFILE=filepath 디폴트 파라미터 파일이외의 파일을 인스턴스를 구성하는데 사용합니다.
FORCE 수행중인 인스턴트를 중지하고 정상적인 시작을 수행합니다.
RESTRICT RESTRICTED SESSION 권한을 가진 사용자만 데이터베이스에 접근하도록 합니다.
(일반 사용자들이 접근하지 못하도록  데이터베이스를 오픈하는 옵션입니다.)
ALTER SYSTEM 명령을 사용해서 제한된 모드로 변경할 수 있습니다.
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM DISABLE RESTRICTED SESSION;

구조 유지 보수, 데이터베이스 익스포트,임포트 작업을 수행할때 유용합니다.
V$INSTANCE 뷰의 LOGINS 컬럼을 질의하여 현재 모드를 확인할 수 있습니다. 
RECOVER 데이터베이스를 시작할 때 매체복구(media recovery)를 시작합니다.

데이터베이스 사용 단계 변경

STARTUP NOMOUNT 에서 MOUNT 단계로 또는 MOUNT에서 OPEN 단계로 데이터베이스를 오픈하려면 ALTER DATABASE 명령을 사용합니다.

ALTER DATABASE { MOUNT | OPEN }

SHUTDOWN 명령

SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]

종료 모드 ABORT IMMEDIATE TRANSACTIONAL NORMAL
새로운 접속의 허가 아니요 아니요 아니요 아니요
현 세션이 끝날 때까지 대기 아니요 아니요 아니요
현 트랜잭션이 끝날 때까지 대기 아니요 아니요
체크포인트를 수행하고 파일 종료 아니요
 
NORMAL 정상 종료(기본 종료 모드입니다.)
새로운접속을 허용하지 않으며, 모든 사용자들이 작업을 마치고 접속을 끊을 때까지 대기합니다.
TRANSACTIONAL 현재 접속자들의 작업이 끝날때까지 대기합니다.
사용자들은 새로운 트랜잭션을 시작할 수 없으며, 현재 진행중인 트랜잭션이 종료되면 접속이 끊어집니다.
모든 트랜잭션이 종료되면 즉시 오라클이 종료됩니다.
클라이언트(사용자)가 현재 진행중인 작업을 마칠 수 있도록 기다려주는것을 의미합니다.
IMMEDIATE 즉시 종료는 현재 수행하고 있는 SQL문은 완료되지 않음을 의미합니다.
현재 접속중인 사용자들이 접속을 끊을 때까지 기다리지 않고, 현재 진행중인 트랜잭을 롤백시키고 모든 사용자의 접속을 끊어버린 후 종료합니다.
ABORT 정상종료, 즉시종료 등이 제대로 동작하지 않는 경우 현재 데이터베이스의 인스턴스를 중지시킬때 사용합니다.
사용자들의 SQL문은 즉시 종료되고,  현재 진행중인 트랜잭션은 롤백되지 않습니다.
파일을 닫지 않은 상태에서 인스턴스를 종료합니다.
다음 시작시 인스턴스 복구가 필요합니다.(SMON 에 의해 자동으로 복구됩니다.)
가장 빠른 종료입니다.