# 데이터베이스 시작 단계
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
- OPEN : 사용자가 데이터베이스를 액세스할 수 있게 한다.
- MOUNT : 특정 DBA 작업을 위해 데이터베이스를 마운트하지만 사용자가 데이터베이스를 액세스하는 것은 허용하지 않는다.
- 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
- NORMAL : 기본 종료 모드, 종료하기 전에 Oracle 서버가 모든 사용자의 접속 해제를 기다린다.
- TRANSACTIONAL : 모든 트랙잭션이 끝나면 즉시 종료한다.
- IMMEDIATE : 강제로 TRANSACTION을 ROLLBACK하고 모든 사용자의 접속을 해제 후 종료한다. --------------------------------- 1 ~ 3은 이후 시작 시 인스턴스를 복구할 필요가 없다. -------------------------------------------------
- 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명>;
- 권한을 해제한다.
'인프라 7기 > Oracle' 카테고리의 다른 글
Oracle 실습 : Network 설정과 접속 (0) | 2023.03.02 |
---|---|
Oracle 실습 : SHUTDOWN 옵션의 이해 (0) | 2023.02.28 |
Oracle 구조 및 주요 구성 요소 (0) | 2023.02.27 |
Oracle 사용자 계정 생성 (0) | 2023.02.27 |
ㄴCentOS 7(64bit) 환경에 oracle 19c 설치 (0) | 2023.02.22 |