ORACLE - DAY 4

BUMSOO·2024년 8월 1일

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가 필요하지 않습니다.

3. shutdown [immediate]

  • 새 연결을 생성할 수 없다.
  • 새로운 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 옵션을 설정해야 한다. 그리고 변경된 값을 인식하려면 새롭게 접속하는 유저에 대해서만 인식 된다.

0개의 댓글