본문 바로가기
인프라 7기/Oracle

Oracle 실습 : STARTUP과 SHUTDOWN

by 킹버거 2023. 2. 28.

 

# 데이터베이스 시작  단계

1) SHUTDOWN : DB가 죽어있다.

2) NOMOUNT : 인스턴스가 메모리에 구동된다.

인스턴스가 구동되면서 가장 먼저 읽는 파일은 Parameter files이다. 파라미터 파일은 이름과 위치가 정해져있다.

Parameter files을 통해 Control files의 이름과 위치를 알 수 있다.

3) MOUNT : 인스턴스의 Control files(제어 파일)이 열린다. 

Datafiles과 Redo Log files 등 모든 파일이 닫혀있는 상태이기 때문에 관리 작업하기가 수월한 상태이다. 

4) OPEN : 인스턴스의 Control files에 기술되어 있는 대로 모든 파일이 열린다 

 

# STARTUP 명령 : 인스턴스를 시작하고 데이터베이스를 연다. 

STARTUP [ NOMOUNT | MOUNT | OPEN

                                                         [ READ ONLY | READ WRITE ]

OPTION

  1. OPEN : 사용자가 데이터베이스를 액세스할 수 있게 한다. 
  2. MOUNT : 특정 DBA 작업을 위해 데이터베이스를 마운트하지만 사용자가 데이터베이스를 액세스하는 것은 허용하지 않는다.
  3. NOMOUNT : SGA(System Global Area)를 생성하고 백그라운드 프로세스를 시작하지만 데이터베이스를 액세스하는 것은 허용하지 않는다.

 

# ALTER DATABASE 명령 : 데이터베이스의 상태를 NOMOUNT에서 MOUNT/OPEN으로 변경한다. 

* DB가 SHUTDOWN 상태가 아니라 NOMOUNT나 MOUNT 상태인 경우 오라클을 더 상위 단계로 올리기 위해 사용한다. 

 

ALTER DATABASE [ MOUNT | OPEN ]

                                                   [ READ ONLY | READ WRITE ]

 

* STARTUP 명령어는 SHUTDOWN 상태일 때만 사용 가능하다.

만약 NOMOUNT나 MOUNT 상태일 댄 ALTER DATABASE 명령을 사용해야 한다 .

또한 데이터베이스 시작은 한 단계씩 수행할 수 있다. 예를 들면 SHUTDOWN에서 MOUNT로 바로 건너갈 수 없다.

 

# 데이터베이스의 상태를 확인하기 위한 문장 

SQL> SELECT STATUS FROM V$INSTANCE; 

* V$INSTANCE는 MEMORY 안의 SHARED POOL 안의 DATA DICTIONARY CACHE 안에 있음. 

 

# 데이터베이스 종료

SHUTDOWN [ NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

- 오라클을 종료한다.

OPTION

  1. NORMAL : 기본 종료 모드, 종료하기 전에 Oracle 서버가 모든 사용자의 접속 해제를 기다린다. 
  2. TRANSACTIONAL : 모든 트랙잭션이 끝나면 즉시 종료한다. 
  3. IMMEDIATE : 강제로 TRANSACTION을 ROLLBACK하고 모든 사용자의 접속을 해제 후 종료한다.                              --------------------------------- 1 ~ 3은 이후 시작 시 인스턴스를 복구할 필요가 없다. -------------------------------------------------
  4. ABORT : 현재 Oracle 서버가 처리하고 있는 SQL 문 즉시 종료, 다른 사용자의 접속 해제 기다리지 않음, DB 및 Redo Log Buffer가 Redo Log files에 기록되지 않음, COMMIT되지 않은 트랙잭션 롤백 미수행, 인스턴스 파일 열린 채로 종료, DB가 닫히지 않거나 마운트가 해제되지 않음 

* ABORT 모드로 종료시 발생하는 문제 : Instance Failure (인스턴스 장애) 

문제 발생 원인 : DBWR가 COMMIT할 때 기동하지 않아서

(즉, Database Buffer Cache의 내용을 Datafiles에 동기화하지 않아서)

하지만 Instance Recovery(인스턴스 복구)가 가능하다. COMMIT 정보가 Redo Log files에 기록되어 있기 때문에 SMON이 사용자 개입 없이 자동으로 백업을 수행한다. 

 

*ABORT 모드는 보통 손상된 DB를 복구하고자 강제 종료할 때 사용한다. 

 

# Read Only 와 Read Write

SQL> STARTUP OPEN READ ONLY; 

- 종료 상태의 DB를 읽기 전용으로 OPEN한다.

 

SQL> ALTER DATABASE OPEN READ ONLY;

- NOMOUNT/MOUNT 상태의 DB를 읽기 전용으로 OPEN한다.

 

SQL> SELECT OPEN_MODE FROM V$DATABASE;

- 데이터베이스의 상태를 조회한다.

- READ ONLY와 READ WRITE 상태가 있다.

# 제한 모드로 데이터베이스 열기

- STARTUP 명령을 사용하여 데이터베이스에 대한 액세스 제한

  SQL> STARTUP RESTRICT

 

# 사용자 세션의 확인과 제한 모드를 위한 사용자의 강제 종료

SQL> ALTER SYSTEM [ENABLE | DISABLE] RESTRICTED SESSION;

- 제한 모드 상태를 활성화/비활성화 한다.

 

SQL> SELECT LOGINS FROM V$INSTANCE;

- 제한 모드의 활성화 상태를 조회한다.

- restricted는 제한 모드 상태, allowed는 일반 모드 상태를 나타낸다.

 

SQL> SELECT SID, SERAL#, USERNAME, STATUS FROM V$SESSION;

- DB에 접속 중인 세션을 확인한다.

- 각 세션은 SID와 SERIAL$을 이용하여 구별된다. 

 

SQL> ALTER SYSTEM KILL SESSION <'SID번호, SERIAL번호'>;

- 지정한 세션을 강제 종료한다.

- SID 번호 뿐만 아니라 SERIAL 번호까지 이용하는 이유 : 

 

SQL> SELECT * FROM DBA_SYS_PRIVS;

- 사용자나 role에 부여된 시스템 권한을 조회한다.

 

SQL> GRANT <시스템 권한> TO <user명>;

- 권한을 할당한다.

 

SQL> REVOKE <시스템 권한> FROM <user명>;

- 권한을 해제한다.