[Oracle] Oracle 시작/종료

HYEOB KIM·2022년 10월 17일
0

Oracle

목록 보기
7/58
post-custom-banner

이전 포스트: [Oracle] Oracle Background Process
다음 포스트: [Oracle] Control File 관리하기

Oracle 시작하기와 종료하기

Parameter File

Startup 명령을 치면 Oracle Server Process는 가장 먼저 Parameter File을 찾아 읽습니다.

Parameter File에는 pfile, spfile이 있습니다.

  • pfile: 정적 파라미터 파일. 관리자가 수동으로 파일 내용을 변경.
  • spfile: 동적 파라미터 파일. 서버 프로세스가 자동으로 변경 가능.

No Mount

No Mount 단계에서 Server Process는 Parameter File을 읽고 Instance를 생성합니다. 메모리를 할당 받게 되고, Alert Log 파일을 열어서 로깅을 시작합니다.

Alert Log
: 인스턴스가 시작/운영/종료될 때까지 중요한 내용들을 모두 저장하고 있습니다. 예를 들어 서버에서 어떤 장애가 발생했거나 문제의 징후가 보일 경우 Alert Log의 내용을 살펴보면 답을 찾을 수 있습니다.
10g에서 Alert Log의 경로는
$ORACLE_BASE/admin/<SID>/bdump/alert_<SID>.log 입니다.
11g 이상에서 Alert Log의 경로는
$ORACLE_BASE/diag/rdbms/<SID>/<SID>/trace/alert_<SID>.log 입니다.

Control File

Control File의 위치 정보는 Parameter File에 적혀 있습니다.

Database 전체의 상태 정보가 들어 있습니다.

Mount

Database의 이상 유무를 확인합니다. 만약 Instance Crash로 판단될 경우 smon이 Instance Recovery를 수행합니다. 복구하려는 내용이 Online Redo Log File에 존재할 경우 Instance Recovery를 수행하지만, Archived Redo Log File에 존재할 경우 복구를 수행할 수 없습니다. 이때는 Media Recovery 상태가 되고 관리자가 직접 복구를 수행해야 합니다.

이 단계에서는 단순히 Control File에 적혀 있는 여러 파일의 경로들에 해당 파일이 있는지만 확인합니다.
(데이터의 정합성은 Open 단계에서 따집니다)

1. Parameter File(초기화 파라미터 파일)

어떤 값을 Oracle에게 전해주기 위해 사용하는 변수 같은 역할을 하는 것이 파라미터입니다. 파라미터에는 묵시적 파라미터명시적 파라미터가 있습니다. 묵시적 파라미터는 값을 지정하지 않아도 자동으로 기본값을 가지는 파라미터입니다. 명시적 파라미터는 값을 지정해주어야 값을 가지는 파라미터입니다.

파라미터 파일은 설계도와 같은 역할을 합니다. startup 명령을 수행하게 되면 Oracle Server는 파라미터 파일을 토대로 SGA를 생성하게 됩니다.

항목/파일pfilespfile
파일이 존재하는 기본경로$ORACLE_HOME/dbs$ORACLE_HOME/dbs
파일 이름init<SID>.oraspfile<SID>.ora
내용 변경관리자(사람)서버 프로세스
파일 형태Text (OS 편집기로 편집 가능)Binary (편집 불가능)

파라미터 파일은 꼭 정해진 경로($ORACLE_HOEM/dbs)에 존재해야만 startup될 때 Oracle Server가 내용을 찾아서 읽을 수 있습니다.
(startup할 때 다른 경로나 이름의 파라미터 파일을 직접 지정할 수도 있습니다)

SIDSite IDentifier의 약자입니다. Instance 이름으로 쓰입니다.
예를 들어 SID = TEST일 경우 pfile의 이름은 initTEST.ora로 되고 spfile일 경우 SpfileTEST.ora가 됩니다.

pfiletext 형식이기 때문에 파일의 내용을 편집기로 편집할 수 있습니다.
하지만 spfile은 바이너리 파일이기 때문에 관리자가 변경하는 것이 불가능하고, SQL 명령을 수행하면 Server Process가 그 내용을 받아서 대신 수정합니다.
(즉, pfile, spfile 모두 수정이 가능하나 spfile은 직접 수정이 불가능합니다. 바이너리 파일은 직접 수정하면 절대 안됩니다.)

spfile이 등장한 이유는 아래와 같습니다.
9i 버전부터 Oracle이 자체적으로 튜닝할 수 있는 기능이 생기면서 Server Process가 파라미터 파일의 내용을 수정해야 할 필요성이 느껴지게 되었습니다. 기존의 pfile은 사람만이 변경 가능했기에 Server Process가 수정할 수 있는 spfile이 생겨나게 된 것입니다.

반드시 알아둬야 할 것은 pfilespfile이 모두 존재하면 spfile의 내용이 적용된다는 것입니다.

spfile 변경법

SQL> alter system set <파라미터 이름>=<파라미터 값> scope=<scope 값>

scope 옵션을 명시하지 않으면 기본값으로 Both가 적용됩니다.

scope 옵션인스턴스 적용spfile 내용 변경
MemoryOX
SpfileXO
Both(default)OO

주요 파라미터

BACKGROUND_DUMP_DEST

백그라운드 프로세스들이 발생시키는 로그Alert Log의 경로.

CLIENT_RESULT_CACHE_LAG

Client에 캐시 되어 있는 RESULT CACHE에 대해서 얼마 동안 유효한 지에 대한 시간 설정값.
Milliseconds 단위.

CLIENT_RESULT_CACHE_SIZE

Client에 캐시 되어 있는 RESULT CACHE의 크기.

CLUSTER_DATABASE

RAC 환경에서만 사용가능한 파라미터.
RAC 기능을 사용할 경우 TRUE, 사용하지 않을 경우 FALSE

COMPATIBLE

현재 인스턴스와 호환 가능한 이전 버전.

CONTROL_FILES

Control File의 경로.
최대 8개까지 지정 가능.

CURSOR_SHARING

Shared Pool 내 Library Cache의 경합을 줄이기 위해서 사용합니다.

Soft Parse를 위해 동일한 SQL 문장으로 판별하는 기준을 설정합니다.

  • EXACT: 문장과 Bind 변수값이 모두 동일해야 같은 문장으로 취급.
  • SIMILAR: 문장은 동일하면서 Bind 변수값은 달라도 됨.
  • FORCE: 문장은 동일하면서 Bind 변수가 아닌 상수값이 달라도 됨.

DB_BLOCK_SIZE

Block의 크기.
일반적으로 4096(4k)나 8192(8k)를 사용하며 DATABASE를 생성하는 시점에 지정합니다.

~ 9i까지는 4k, 10g ~부터는 8k가 기본값입니다.

DB_CACHE_ADVICE

v$db_cache_advice 뷰에서 서로 다른 캐시 사이즈에 대한 통계정보를 모을 것일지 아닐 것일지를 결정.

  • Off: 이 기능을 사용하지 않으며 메모리도 할당하지 않음.
  • Ready: 기능을 사용하진 않지만 메모리는 할당.
  • On: 기능을 사용. 메모리가 할당되지 않을 경우 에러가 발생. Off에서 On으로 바로 변경 시에도 에러가 발생.

DB_CACHE_SIZE

DB Buffer Cache의 Default Buffer Cache 크기.

블록 사이즈는 db_block_size를 따릅니다.

DB_CREATE_FILE_DEST

OMF 환경에서 Data File의 경로.

  • UMF(User Managed File): 사용자가 수동으로 파일 관리
  • OMF(Oracle Managed File): 오라클이 자동으로 파일 관리. DB 파일들(Data File, Redo Log File, Control File)이 저장될 경로를 지정해 주고 각 파일을 생성하라는 명령만 주면 Oracle이 자동으로 결정해서 관리합니다.

DB_CREATE_ONLINE_LOG_DEST_n

OMF 환경에서 Control FileRedo Log File의 경로.
여러 경로에 다중화를 하기를 권장하며 파라미터 이름 끝에 n은 최대 5까지 지정할 수 있으며, 최대 5곳까지 다중화 할 수 있다는 의미입니다.

DB_DOMAIN

물리적으로 서로 다른 네트워크에 떨어져 있는 오라클 인스턴스들을 하나의 논리적 그룹으로 묶어 주는 역할.

도메인: 물리적으로 떨어져 있는 경우라도 논리적으로 하나의 단위로 묶는 것을 의미

DB_FILE_MULTIBLOCK_READ_COUNT

DB_KEEP_CACHE_SIZE

DB Buffer Cache에서 LRU 알고리즘의 적용을 받지 않는 Keep Buffer Cache의 크기.

Keep Buffer Cache: Object(Table, Index)를 Keep Buffer Cache에 등록하면 해당 Object가 계속

DB_NAME

Database 이름.

Single 환경: Instance 이름Database 이름이 같을 수 있습니다.
RAC 환경: Instance 이름Database 이름이 다릅니다.

DB_nK_CACHE_SIZE

DW성, 이력 통계 데이터와 같은 대용량 데이터에 액세스해야 할 때는 Block Size가 클수록 유리합니다. 기존 Default Buffer Cache의 경우 DB_BLOCK_SIZE 파라미터를 따라 가기 때문에 대용량 데이터를 위한 Block Size를 따로 지정할 필요가 있습니다. 이때 이용하는 파라미터가 바로 DB_nK_CACHE_SIZE이고 이 파라미터를 통해 Non Default Buffer Pools가 만들어집니다.

DB_RECOVERY_FILE_DEST

Flash Recovery Area(RMAN 백업 파일, Flashback Log 파일, Archived Redo Log 파일)의 경로.

DB_RECOVERY_FILE_DEST_SIZE

Flash Recovery Area 경로의 크기.

DB_UNIQUE_NAME

유일한 DB 이름.

기본값

  • 일반 인스턴스: DB_NAME
  • ASM 인스턴스: +ASM

DB_WRITER_PROCESSES

DBWR의 개수.
1 또는 CPU 개수 / 8 중에서 큰 값의 개수가 사용.

INSTANCE_NUMBER

RAC 환경에서 사용하는 파라미터로 모든 인스턴스는 고유한 인스턴스 번호를 가져야만 합니다.
1부터 최대값까지 지정 가능하고 최대값은 OS 별로 다릅니다.

LOG_ARCHIVE_DEST_n

Archived Redo Log File의 저장 경로. 총 10개까지 지정 가능.
이 파라미터를 지정하지 않을 경우 DB_RECOVERY_FILE_DEST의 값에 따라 지정됩니다.

LOG_ARCHIVE_DEST_STATE_n

LOG_ARCHIVE_DEST_n에 지정된 디렉토리의 사용 여부

  • Enable: 기본 값. 해당 경로를 사용.
  • Defer: 정의된 경로와 값들은 유지. 다음 Enable 전까지 사용되지 않음.
  • Alternate: 다른 경로로 지정된 값들이 모두 실패할 경우 이 경로가 Enable.

NLS_LANGUAGE

데이터베이스 내에서 기본적으로 사용될 언어를 지정.
NLS_DATE_LANGUAGENLS_SORT 파라미터의 기본값에도 영향을 줍니다.

NLS_TERRITORY

NLS_LANGUAGE에서 사용하는 언어와 날짜를 사용하는 지역을 선택.
기본 날짜 형식, 기본 소수점 문자, 그룹 구분 기호, 기본 ISO, 지역 통화 기호가 설정됨.

OPEN_CURSOR

1개의 세션에서 사용하는 CURSOR의 최대 Open 개수.

PGA_AGGREGATE_TARGET

전체 Server Process가 사용 가능한 총 PGA 크기.

  • 0 초과: WORKAREA_SIZE_POLICY 값이 자동으로 AUTO로 설정.
  • 0: WORKAREA_SIZE_POLICY 값이 MANUAL로 설정되어 각 PGA의 개별 구성요소 값을 관리자가 직접 수동 설정.

PROCESSES

OS상에서 카운트되는 Oracle Process(User Process, Background Process 등)의 최대 개수.

이 값이 너무 작게 설정된다면 Client에서 Server로 접속할 수 없습니다.

SESSIONSTRANSACTIONS 파라미터의 기본값에 영향을 줍니다.

RECYCLEBIN

휴지통 기능의 사용 여부.

off일 경우 테이블을 Drop했을 때 휴지통으로 가지 않고 즉시 삭제.

REMOTE_LISTENER

로컬 서버가 아닌 원격지 서버에서 작동 중인 리스너의 이름.
로컬 서버의 tnsnames.ora 파일에 등록.

REMOTE_LOGIN_PASSWORDFILE

외부에서 접속할 때 암호 파일의 사용 여부.

  • SHARED: 하나 이상의 데이터베이스가 암호 파일을 공유해서 사용.
  • EXCLUSIVE: 한 개의 암호 파일은 한 개의 데이터베이스 만이 사용 가능.
  • NONE: 암호 파일을 무시하며 오직 OS 인증 방식 사용.

파라미터 값이 SHAREDEXCLUSIVE로 설정되어 있더라도 암호 파일이 없다면 동작하지 않습니다.

RESULT_CACHE_MAX_RESULT

Server Result Cache에서 결과값이 저장되는 개별적인 Result가 사용할 수 있는 최대 크기.
RESULT_CACHE_MAX_SIZE5%를 권장합니다.

RESULT_CACHE_MAX_SIZE

Server Result Cache의 전체 크기를 지정.
shared_pool_size1%, sga_target0.5%, memory_target0.25%를 권장합니다.

RESULT_CACHE_MODE

Server Result Cache를 어떤 Mode로 운영할 것인가.

  • MANUAL: /* result_cache */ 힌트를 사용한 쿼리에 대해서 Server Result Cache에 저장.
  • FORCE: 모든 쿼리에 대해서 Server Result Cache에 등록하고 /* no_result_cache */ 힌트를 사용한 쿼리는 등록하지 않습니다.
  • AUTO: 내부적으로 많이 사용되는 쿼리라고 Oracle이 판단할 경우 Server Result Cache에 등록합니다.

SESSIONS

Oracle Server에서 생성 가능한 최대 세션 수(최대 동시 접속자 수).
(전체 동시 접속 인원 수 + 백그라운드 프로세스 수) X 10%를 권장합니다.

ENQUEUE_RESOURCESTRANSACTIONS 파라미터에 영향을 줍니다.

SESSION_CACHED_CURSORS

하나의 세션이 캐싱할 수 있는 CURSOR의 수.

Session Cached Cursor는 한 세션 내에서 3번 이상 수행된 CURSOR를 캐싱하는 기능입니다. 3번 이상 실행된 SQL실행 계획을 Library Cache에서 아예 PGA로 가져와서 저장해놓고, 다음 실행부터는 SGA로 가지 않고 PGA에서 바로 찾아서 수행할 수 있도록 합니다.

SESSION_MAX_OPEN_FILES

하나의 세션이 열 수 있는 최대 BFILE 개수.

SGA_TARGET

자동 공유 메모리 튜닝 기능(Automatic Shared Memory Management: ASMM)을 사용할 경우 SGA의 전체 크기를 지정.

아래의 값들에 대해 자동으로 크기를 튜닝해줍니다.

  • DB_CACHE_SIZE
  • SHARED_POOL_SIZE
  • LARGE_POOL_SIZE
  • JAVA_POOL_SIZE
  • STREAMS_POOL_SIZE

자동으로 튜닝되는 파라미터 값들은 0으로 설정되어 있습니다. 특정값을 주게 되면 그 값을 최소값으로 인식합니다.

UNDO_TABLESPACE

인스턴스에서 사용할 Undo Tablespace의 이름.

UNDO_MANAGEMENT

Undo Data를 관리하는 방법.

  • AUTO: AUM(Automatic Undo Management) 기능을 사용하는 것으로 Undo Data를 오라클 서버가 자동으로 관리하도록 하는 방법.
  • MANUAL: Undo Data를 관리자가 수동으로 관리하는 방법.

2. 다양한 방법으로 Instance Open 하기

오라클에서는 DBA가 원하는 단계까지만 지정해서 Instance를 시작할 수 있습니다.
나머지 단계를 진행하려면 alter database 명령어를 사용합니다. 나머지 단계를 시작할 때는 no mount - mount - open 단계를 순서대로 거쳐야 합니다.

no mount 단계까지만 시작 후 나머지 단계 진행하기

SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1660940992 bytes
Fixed Size		    8897216 bytes
Variable Size		  956301312 bytes
Database Buffers	  687865856 bytes
Redo Buffers		    7876608 bytes

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS
------------
OPEN

mount 단계까지만 시작 후 나머지 단계 진행하기

SQL> startup mount;
ORACLE instance started.

Total System Global Area 1660940992 bytes
Fixed Size		    8897216 bytes
Variable Size		  956301312 bytes
Database Buffers	  687865856 bytes
Redo Buffers		    7876608 bytes
Database mounted.
SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS
------------
OPEN

읽기 전용인 상태로 open 하기

읽기 전용인 상태로 open할 경우 select 이외의 작업은 수행할 수 없습니다.

SQL> startup mount;
ORACLE instance started.

Total System Global Area 1660940992 bytes
Fixed Size		    8897216 bytes
Variable Size		  956301312 bytes
Database Buffers	  687865856 bytes
Redo Buffers		    7876608 bytes
Database mounted.
SQL> alter database open read only;

Database altered.

제한된 모드(Restricted Mode)로 open 하기

허가 받은 사용자만 접속할 수 있도록 하는 기능입니다.

SQL> startup restrict;
ORACLE instance started.

Total System Global Area 1660940992 bytes
Fixed Size		    8897216 bytes
Variable Size		  956301312 bytes
Database Buffers	  687865856 bytes
Redo Buffers		    7876608 bytes
Database mounted.
Database opened.

현재 open 되어 있는 Instance를 Restricted Mode로 변경할 수 있습니다.

SQL> alter system enable restricted session;

System altered.

SQL> alter system disable restricted session;

System altered.

3. Instance 종료하기

Instance를 종료하기 위해서는 shutdown 명령어를 사용하며 4가지 옵션이 있습니다.

$ sqlplus / as sysdba

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

1) NORMAL(기본 옵션)

접속해 있는 사용자들이 있을 경우 모두 스스로 접속을 종료할 때 까지 기다렸다가 종료하는 옵션입니다.

SQL> shutdown normal;

또는

SQL> shutdown;

2) TRANSACTIONAL

접속해 있는 사용자들이 있더라도 기다려주지 않고 강제로 접속을 중단시킨 후 Instance를 종료하는 옵션입니다.

SQL> shutdown transactional

3) IMMEDIATE

즉시 접속을 강제 종료 시킵니다.

이후 접속이 종료되는 시점까지 commit이 완료된 데이터DB Buffer Cache에서 찾아 Data File로 저장해주고, commit되지 않은 데이터들은 모두 Rollback시킨 후 정상적으로 Instance를 종료하는 옵션입니다.

SQL> shutdown immediate;

4) ABORT

즉시 접속을 강제 종료 시킵니다.

IMMEDIATE와 다른 점은 사용자가 수행한 작업을 저장하지도 않고 Rollback해주지도 않습니다. 즉, 비정상 종료되며 Instance Crash가 됩니다. 이렇게 되면 다시 Instance를 시작할 때 Instance Recovery가 필요합니다.

운영 중인 서버에 치명적인 위험을 줄 수 있는 옵션이므로 아주 주의해야 하는 옵션입니다.

profile
Devops Engineer
post-custom-banner

0개의 댓글