STARTUP/SHUTDOWN의 PROCEDURE와 종류

개발/DB2009. 7. 1. 23:30
728x90

STARTUP/SHUTDOWN의 PROCEDURE와 종류
===================================

Purpose


가장 기본적인 Oracle의 startup/shutdown 각 mode와 그 특징에 대해 알아보자.

Explanation



ORACLE을 사용하려면 먼저 데이타베이스를 기동하여야 한다.
ORACLE의 기동은 startup, 기동 중인 ORACLE을 사용하지 못하도록
운영을 중지하도록 하는 것은 shutdown command를 이용해 이루어진다.
여기에서는 startup, shutdown 시의 procedure와 startup, shutdown의
종류에 대해 설명한다.

1. STARTUP PROCEDURE

stratup은 3단계의 procedure로 구성된다.

1) 인스턴스 start

ORACLE을 운영하기 위한 background process(dbwr, lgwr, smon, pmon 등)를
생성하며 또한 init<SID>.ora의 parameter 값들을 읽어 SGA도 allocate한다.
startup 시 이 procedure까지 수행하기 위하여는 sqldba(v7.2까지) 또는
svrmgrl(v7.3 이상)에서 startup nomount를 하면 된다.

2) mount the database

인스턴스 start 후 데이타베이스를 mount하는 단계로 mount에서는 control
file을 open한다. 이 단계까지만 start하는 경우에는 특별한 데이타베이스
유지 보수 작업이 필요시 수행한다. 특별한 데이타베이스 유지 보수 작업이란
redo log의 add, rename, media recovery의 수행 등의 작업을 의미한다.
startup 시 mount 단계까지 수행하려면 startup mount를 수행하면 된다.
1)에서 인스턴스를 start한 후 mount 단계로 넘어가려면 alter database
mount를 수행하면 된다.

3) open the database

데이타베이스의 open은 mount 후 데이타베이스를 사용할 수 있는 환경으로
만들어 주는 단계로서 모든 online datafile과 online redo log file을 open하고
사용할 수 있도록 하여 준다. 데이타베이스가 중지된 상태에서 한번에 open까지
모두 수행하기 위해서는 startup만 하면 된다. 2)에서처럼 데이타베이스를 mount
후 open 시에는 alter database open을 수행하면 된다. (단, 인스턴스 start에서
바로 database open을 수행할 수 없다.)

2. STARTUP의 종류

startup은 sqldba(v7.2까지) 또는 svrmgrl(v7.3 이상)에서 수행한다.

1) startup

이는 일반적인 ORACLE 기동 방법으로 startup이 완료되면 모든 user가
데이타베이스를 access할 수 있다.

2) startup restrict

일반 user의 ORACLE 사용을 제한하기 위하여 startup하는 방법으로
ORACLE user중 create session+restricted session이라는 system privilege를
갖고 있는 user만이 데이타베이스를 사용 할 수 있다. 이는 데이타베이스 구조를
조정하거나 data의 export, import시 등 일반 user의 사용을 제한하는 경우에
사용한다.

3) startup force

shutdown normal 또는 shutdown immediate시 정상적으로 종료되지 않는 경우
데이타베이스의 인스턴스를 강제로 kill시키고 startup하도록 한다.

4) startup parallel

OPS 환경으로 데이타베이스를 운영하는 경우 하나의 데이타베이스를 여러 개의
node에서 공유한다. 이때 여러 인스턴스에서 데이타베이스를 공유하기 위해서는
startup parallel로 기동 하여야 한다. 1)의 startup은 exclusive mode로서
OPS로 데이타베이스 환경이 되어 있더라도 startup만 하면 여러개의 인스턴스가
하나의 데이타베이스를 공유할 수 없다. 이는 데이타베이스가 exclusive mode로
기동되었기 때문이다. OPS에서 데이타베이스를 공유하기 위해서는 반드시
startup parallel로 기동하여야 한다.

3. SHUTDOWN PROCEDURE

shutdown은 데이타베이스의 운영을 중단하기 위해 수행하는 것으로 startup
procedure와는 반대로 작동한다. 즉 먼저 데이타베이스를 close하고 두번째
데이타베이스를 dismount하며 마지막으로 인스턴스를 shutdown 한다.

4. SHUTDOWN의 종류

shutdown도 startup처럼 sqldba(v7.2까지), svrmgrl(v7.3 이상)에서 수행한다.

1)shutdown

이는 일반적인 shutdown 방법으로 shutdown이 진행 중에는 새로운 user가
데이타베이스에 세션을 맺을 수 없으며 또한 기존에 connect되어 있는 user가
있는지 확인하여 connect된 user가 없다면 데이타베이스를 shutdown하고 user가
있다면 connect된 user가 disconnect될 때까지 shutdown을 하지 않고 기다린다.

2) shutdown immediate

현재 데이타베이스를 사용 중인 user가 있지만 데이타베이스를 shutdown해야
하는 경우 shutdown immedaite를 수행한다. shutdown immediate를 수행하면
현재 진행 중인 SQL이 중단되고 commit되지 않은 transaction을 rollback하고
connect되어 있던 user를 강제로 disconnect시키고 shutdown을 수행하게 된다.
단, 다량의 data를 update하는 작업을 수행 중 shutdown immediate를 수행하면
곧바로 database가 shutdown되지 않는다.
이는 rollback하는 데 많은 시간을 소비하기 때문이다.

3) shutdown abort

connect된 user가 long transaction을 수행하고 있지만 급하게 데이타베이스를
shutdown 하여야 하는 경우 shutdown abort를 하게 된다. shutdown abort를
수행하면 ORACLE 인스턴스를 바로 shutdown하므로 shutdown immediate와는 달리
commit되지 않은 transaction들을 rollback하지 않고 데이타베이스를 shutdown
한다. 그러므로, long transaction이 있더라도 빨리 shutdown 할 수 있다.
단, shutdown abort는 rollback하지 않고 shutdown하므로 데이타베이스에
이상 현상을 초래할 가능성을 가지고 있다.

[출처]





728x90

작성자

Posted by 일퍼센트

관련 글

댓글 영역