Background Process
SMON(System Monitor)
- Instance failure가 발생한 경우 Instance recovery를 수행하는 프로세스
- coalesces free space (디스크 조각 모음)
- 임시 블록 세그먼트들을 재사용할 수 있도록 하는 역할

PMON(Process Monitor)
-
user process가 실패할 경우 recovery를 수행하는 프로세스
- data buffer cache 정리
- 사용하고 있는 resource 해제
- 트랜잭션에 대해서 자동 rollback
- lock 해제
-
listener에게 DB정보를 등록시키는 작업을 수행(11g 까지 PMON 역할)
- 12c 부터는 LREG(Listener Registration Process)가 수행한다.


-
listener에게 db 정보 등록을 수동으로 빨리 하는 방법은?
- ALTER SYSTEM REGISTER;
alert log file
-
오라클이 운영되고 종료될때까지 중요한 내용들을 저장하고 있는 파일
-
오라클 서버에서 어떤 장애가 발생했거나 문제의 징후가 보일 경우 이 파일의 내용은 자세히 분석해보면 해답을 찾을 수 있다.
-
파일 주소
$ORACLE_BASE/diag/rdbms/인스턴스 이름/인스턴스 이름/trace
-
스토리지 용량 문제가 생긴다면 trc, trm 파일은 삭제해도 상관 없다.
-
alert log 파일은 절대 삭제해서는 안된다.
-
화면에는 항상 alert log 파일을 띄어놓고 모니터링 해야한다.
- F 옵션은 실시간 상황을 보여준다
tail -F alert_인스턴스 이름.log

ORACLE 실행단계
startup 단계
- startup 기본모드는 read write 이다.

1. nomount
-
instance 시작(SGA영역과 Background process 생성)
- initialization parameter file (초기 파라미터 파일) open
- spfile<SID>.ora, init<SID>.ora
- $ORACLE_HOME/dbs
- sartup nomount 단계에서 $ORACLE_HOME/dbs 위치에 가서 제일 먼저 spfile<SID>.ora 파일을 찾고 없으면 init<SID>.ora 파일을 찾는데 없으면 오류 발생
- 오라클 시작시 초기파라미터 파일이 없을 경우 오류 발생

- 현재 DB STARTUP 시에 어떤 초기 파라미터 파일로 시작했는지 확인
show parameter spfile

- pfile로 초기 실행시 value값이 null 값이다.
-
alert<SID>.log, trace file open
-
nomount 단계에서 오라클 작업을 수행하는 일
- db 생성
- control file 재생성
- 백업, 복구
-
STARTUP 시 NOMOUNT로만 실행
STARTUP NOMOUNT;
-
v$instance 에서의 단계 확인
SELECT status FROM v$instance;
- STARTED 상태

2. mount
-
control file open
-
control file의 위치는 spfile에 저장되어있다.
-
초기 파라미터 파일 안에 있는 control_files 라는 파라미터에 설정된 control file 정보를 가지고 여는 작업을 수행한다.

-
mount 단계에서 오라클이 수행하는 일
- 데이터 파일 이름 바꾸기
- noarchive log mode를 archive log mode로 바꾸는 작업
- full database recovery
- RMAN을 이용해서 CLOSE BACKUP 할때
-
NOMOUNT 단계에서 MOUNT 단계로 올리는 방법
ALTER DATABASE MOUNT;


3. open
-
data file, redo log file open
-
data file, redo log file 위치는 control file에 저장되어 있다.
-
STARTUP 기본값은 STARTUP OPEN READ WRITE
-
MOUNT 단계에서 OPEN 단계로 올리는 방법
ALTER DATABASE OPEN;

-
database open_mode 확인

DB 읽기모드
STARTUP OPEN READ ONLY : 읽기 모드로만 DB OPEN
- 모드 확인하기
- read only 모드는 select 작업만 가능하다.

shutdown
1. shutdown [normal]
- 기본 종료 모드
- 새 연결을 생성할 수 없다.
- 새로운 session은 생성할 수 없다.
- 오라클 서버는 모든 유저가 연결을 끊을 때까지 종료하지 않고 대기한다.
- 체크포인트 발생한다.
- 데이터파일 , 리두로그 파일을 닫고, 컨트롤 파일 닫는다.
- instance 종료 (background process 종료, SGA메모리 제거)
- 데이터베이스를 시작할때 instance recovery가 필요하지 않습니다.
2. shutdown [transactional]
- 새 연결을 생성할 수 없다.
- 새로운 session은 생성할 수 없다.
- transaction 수행하는 유저는 계속 오라클에 접속상태로 유지시키고 접속은 했지만 아무 작업을 수행하지 않는 유저는 자동으로 session이 종료된다.
- 체크포인트 발생한다.
- 데이터파일 , 리두로그 파일을 닫고, 컨트롤 파일 닫는다.
- instance 종료 (background process 종료, SGA메모리 제거)
- 데이터베이스를 시작할때 instance recovery가 필요하지 않습니다.
- 새 연결을 생성할 수 없다.
- 새로운 session은 생성할 수 없다.
- 오라클 서버에 접속되어 있는 유저를 자동으로 session 종료 시킨다.(kill, 진행중인 transaction은 pmon이 rollback 작업을 한다.)
- 체크포인트 발생한다.
- 데이터파일 , 리두로그 파일을 닫고, 컨트롤 파일 닫는다.
- instance 종료 (background process 종료, SGA메모리 제거)
- 데이터베이스를 시작할때 instance recovery가 필요하지 않습니다.
4. shutdown [abort]
- 새 연결을 생성할 수 없다.
- 새로운 session은 생성할 수 없다.
- 비정상적인 종료
- 데이터베이스 시작 시에 instance recovery를 수행해야 한다.
5. startup [force]
- shutdown abort + startup
- 비정상적인 db 종료
- 데이터베이스 시작시 instance recovery를 수행해야한다.
초기 파라미터 파일(initialization parameter file)
서버 파라미터 파일(SPFILE)
- 9i 버전에서 새롭게 나은 파라미터 파일
- 일반적으로 사용되는 초기 파라미터 파일 유형
- 오라클 서버가 읽고 쓸수 있는 이진파일(binary file)이기 때문에 vi 편집기로 수정해서는 안된다.
- 이 파일은 오라클이 실행되는 서버에 있으며 종료 및 시작과는 관계 없이 계속 유지 관리된다.
- 기본 이름은 spfile<SID>.ora
텍스트 초기 파라미터 파일(PFILE, INITFILE)
- vi 편집기를 사용하여 수동으로 편집한다.
- 오라클 DB를 OPEN한 후에 수동으로 편집하더라도 변경한 값을 인식할 수 없다.
- DB OPEN 시점에 한번만 ACCESS하고 끝난다.
- 기본 이름은 init<SID>.ora
파라미터 값 변경
static parameter
- 초기 파라미터 파일에서만 변경해야 한다
- oracle을 다시 시작해야만 적용된다.
- 시스템 레벨(ALTER SYSTEM SET...), DBA 작업
- static parameter 확인하기
SELECT * FROM v$parameter WHERE issys_modifiable = 'FALSE';
- static parameter 값 변경
ALTER SYSTEM SET 파라미터 = 값 SCOPE = SPFILE;
dynamic parameter
-
데이터베이스 온라인 상태인 동안 변경 가능하다.
-
다음 레벨에서 수정가능
- 시스템 레벨(ALTER SYSTEM ST...), DBA작업
- 세션 레벨(ALTER SESSION SET...), 일반 유저 가능
-
dynamic parameter 확인하기
SELECT * FROM v$parameter WHERE issys_modifiable = 'IMMEDIATE';
SELECT * FROM v$parameter WHERE issys_modifiable = 'DEFERRED';
-
dynamic parameter 값 변경
- IMMEDIATE dynamic parameter
ALTER SYSTEM SET 파라미터 = 값 SCOPE = SPFILE | MEMORY | BOTH;
- DEFERRED dynamic parameter
- 즉시 변경은 하였지만 새롭게 재접속 해야지만 값이 반영되는 파라미터
ALTER SYSTEM SET 파라미터 = 값 DEFERRED SCOPE = SPFILE | MEMORY | BOTH;
-
세션 레벨에서 변경 가능한 파라미터
SELECT * FROM v$parameter WHERE isses_modifiable = 'TRUE';
ALTER SESSION SET 파라미터 = 값;
-
세션 레벨에서 변경 불가능한 파라미터, 시스템 레벨에서만 수행
SELECT * FROM v$parameter WHERE isses_modifiable = 'FALSE';
ALTER SYSTEM SET 파라미터 = 값 SCOPE = SPFILE | MEMORY | BOTH;
SCOPE = SPFIEL
- 파라미터의 변경한 값을 서버 파라미터 파일(spfile<SID>.ora)에만 적용되며 현재는 변경한 값을 인식 못한다.
- 변경한 값으로 인식되려면 오라클을 재시작해야 한다.
- static parameter는 무조건 scope = spfile로만 설정해야 한다.
SCOPE = MEMORY
- 파라미터의 변경한 값을 즉시 적용한다.
- 단 현재만 바꾸고 오라클을 재시작하면 변경전의 값으로 다시 설정된다.
- dynamic parameter 경우 사용한다.
SCOPE = BOTH
- scope 부분을 따로 명시해주지 않으면 기본값으로 사용된다.
- 파라미터의 변경값을 즉시 반영하고 서버 파라미터 파일에도 적용한다.
- 오라클을 재시작 하더라도 변경한 값을 계속 사용한다.
dynamic parameter 중에 DEFERRED 되어 있는 파라미터는 꼭 DEFERRED 옵션을 설정해야 한다. 그리고 변경된 값을 인식하려면 새롭게 접속하는 유저에 대해서만 인식 된다.