[Oracle Admin]/oracle관리실무

ch4. oracle 시작하기와 종료하기

JJ* 2014. 10. 20. 11:58

ch4. oracle 시작하기와 종료하기.

 

* Oracle Server 시작하는 단계.

 

 0. STARTUP

  startup 명령어를 치면 server process는 가장 먼저 parameter file(설계도)을 찾아서 읽고 nomount단계로 넘어간다.

  ** parameter file : pfile(8i기본)(정적:관리자가 수동변경) / spfile(9i추가)(동적:server process가 자동변경)

 1. NOMOUNT

 ① 인스턴트 생성 : SGA와 백그라운드 프로세스들로 구성되어 있다.

 ② Alert log 기록 : 사용자가 어떤 작업을 언제 해왔는지에 대해. 고장과 경고를 기록한다.

    ** Alert log 파일 : 인스턴스가 시작되어서 운영되고 종료될 때까지 중요한 내용들을 모두 저장하고 있는 파일.

       → 조회시 : tail -f /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log

        10g : $ORACLE_BASE/admin/SID/bdump/aert_SID.log ★

        11g : $ORACLE_BASE/diag/rdbms/SID/SID/trace/alert_SID.log ★

  → control file을 읽고 mount 단계로 넘어간다.

 2. MOUNT

 ③ DB 이상 유무검사 : 정상적으로 꺼졌는지 비정상적으로 꺼졌는지 검사후 수정한다.

 -> datafile과 redolog file을 읽고 open한다.

 3. OPEN

 ④ open한다.

 → 만약, Instance crash로 판단되면 open하기 전에 SMON이 Instance recovery를 수행하는데, 이 때 복구 내용을 redo log file에서 찾는다. 만약 복구하려는 내용이 redo log file에 없거나 archived log file에 있을 경우 SMON이 instance recovery를 수행하지 못하고, 관리자가 직접 recovery를 수행해야 하는 media recovery 상태가 된다.

 

 

1. parameter file (초기화 파라미터 파일) ★★

(1) Parameter(파라미터)란?  : 일종의 변수와 비슷한 개념.

 explicit (명시적)

 관리자가 지정한 값

 implicit (묵시적)

 관리자가 지정하지 않을 경우 자동으로 지정되어있는 default 값.(기본값)

 - server process가 파라미터파일을 복사해서 PGA로 가져온다.

 

 

Pfile (정적 파라미터 파일) 

Spfile (동적 파라미터 파일)

 파일이 존재하는 기본 경로

$ORACLE_HOME/dbs (두 파일 모두 공통)  -> STARTUP후에 무조건 이경로로 간다!

 파일 이름

 initSID.ora

ex) inittestdb.ora , initORCL.ora (유닉스는 대소문자 구분★)

spfileSID.ora

ex) spfiletestdb.ora, spfileORCL.ora

 내용 변경

관리자(사람) 

서버 프로세스 

 파일 형태

Text(OS편집기로 편집가능) → 더 편리

Binary(OS편집기로 편집안됨.)

 기타

 8i버전까지 기본 파라미터 파일

9i버전 부터 기본 파라미터 파일 

- SID : Site IDentifier (사이트 구분자)의 약자로, DB이름과 다르다. 특히 RAC같은 환경에서는 SID가 Instance name으로 동작하기 때문에 dB이름과 확실하게 구분이 되지만, single환경에서는 SID와 DB이름을 서로 혼용해서 많이 사용하고 있다.

 

(2) 파라미터 파일의 내용 확인하기.

** pfile과 spfile둘다 존재할 경우 Spfile내용만 사용한다.★

 ▶ spfile 내용 확인

 

 - spfile의 경우 Binary file이므로 사용자가 일반적인 OS편집기로 파일 안에 있는 내용을 변경하는 것은 불가능하며 관리자나 DB사용자가 SQL명령을 수행하면 server process가 그 내용을 받아서 대신 수정해준다. (절대 변경해서 저장하면 안된다!!)

 - ③번 부분 : ②번부분을 사용자가 보기 쉽게 요약해둔 내용. (특히 3번 부분은 절대로 수정하면 안됨.)

 

▶ pfile 내용 확인

:9i 이후 버전부터는 spfile만 있기 때문에 pfile은 기본적으로 없으므로, 수동으로 생성시킨 것이다.

 

(3) 파라미터 파일 내용 변경하기.

: pfile의 경우 os편집기로 관리자가 내용을 직접 수정한 후 저장하면 되는데, 변경된 사항이 재부팅 해야만 적용이 된다. 일단, 기본적으로 pfile이나 spfile이나 재부팅 후 적용되는 것이 기본이다. 그러나 9i 이후 버전부터는 Dynamic SGA기능이 도입되어, pfile을 사용하더라도 "alter system set"명령을 이용하면 재부팅없이 즉시 적용시킬 수 있게 되었다. (일부 파라미터 값들 제외).

-> 그러나 pfile의 내용은 alter system set으로 변경할 수 없으므로, 만약 사람이 수정하지 않으면 DB를 재시작하고 나면 원래의 값으로 돌아간다.

 

 spfile 내용 변경 옵션 (scope 옵션)

 sys> alter system set db_cache=30m scope = memory ;

 memory 옵션

 지금만적용 / 재부팅후원위치

 spfile의 내용은 변경하지 말고, 현재 작동중인 인스턴스에만 적용.

 → 재부팅 하면 다시 spfile에 적혀있는 값으로 돌아간다.

  (주로 테스트 등의 목적으로, 일시적으로 적용해보는 작업할 때 쓰는 옵션)

 spfile 옵션

 지금적용안함 / 재부팅후부터 적용

 현재 운영중인 인스턴스에는 적용하지 말고, spfile의 내용만 변경.

 both 옵션

 지금도,재부팅후에도 둘다 적용(기본)

 현재 운영중인 인스턴스에도 즉시 적용하고, spfile에도 적용하여 재부팅 후에도 유지.

 

(4) 주요 파라미터들의 의미.

    

 BACKGROUND_DUMP_DEST

 각 백그라운드 프로세스들이 발생시키는 로그와 Alert log 가 기록될 경로 지정

 CLIENT_RESULT_CACHE_LAG(11g~)

 Client에 캐시 되어 있는 RESULT에 대해 얼마 동안 유효하게 사용 할지에 대한 설정값(Milliseconds 단위)

 CLIENT_RESULT_CACHE_SIZE(11g~)

 RESULT CACHE 크기 지정(바이트 단위)

 CLUSTER_DATABASE

 Real Application Cluster (RAC) 환경에서만 사용하는 파라미터로 RAC 기능 사용여부 지정(기본값은 FALSE)

 COMPATIBLE

 호환 가능한 이전 버전 지정

 CONTROL_FILES

 Control File 들의 경로 지정

 CURSOR_SHARING

 사용자에게 값을 입력을 받는 경우 자주 재 파싱이 발생하는 문제를 해결하기 위한 파라미터

- EXACT(기본값), SIMILAR, FORCE

 DB_BLOCK_SIZE

 Database 에서 사용될 Standard Block Size 지정

 DB_CACHE_ADVICE

 V$DB_CACHE_ADVICE 뷰에서 서로 다른 캐시 사이즈에 대한 통계정보를 모을지 아닐지 결정

- Off, Ready, On

 DB_CACHE_SIZE

 데이터의 변경이나 조회에 반드시 필요한 Default Database Buffer Cache  크기 결정

 DB_CREATE_FILE_DEST

 Oracle Managed File(OMF) 환경에서 데이터 파일이 생성될 위치 지정

 DB_CREATE_ONLINE_LOG_DEST_n

 OMF 환경에서 Redo Log File 과 Control File 이 생성될 위치 지정

 DB_DOMAIN

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

 DB_FILE_MULTIBLOCK_READ_COUNT

 Full Scan이나 Index Full Scan을 할 경우 HDD의 데이터 파일에서 Database Buffer Cache로 한번에 읽어 올릴 수 있는 블록 개수 지정

 DB_KEEP_CACHE_SIZE

 LRU 알고리즘의 적용 안받는 Keep Buffer Cache 크기 지정

 DB_NAME

 Database Name 지정

 DB_nK_CAHCE_SIZE

 데이터베이스 버퍼 캐시를 생성할 때 Non-Standard Block Size 로 생성할 크기를 지정하는 파라미터

 DB_RECOVERY_FILE_DEST

 Flash Recovery Area 경로 지정

 DB_RECOVERY_FILE_DEST_SIZE

 Flash Recover Area 의 크기 지정

 DB_UNIQUE_NAME

 유일한 데이터베이스 이름

 

 DB_WRITER_PROCESSES

 Database Writer (DBWR)의 개수 지정

 INSTANCE_NUMBER

 RAC 환경에서 해당 인스턴스의 번호 지정

 LDAP_DIRECTORY_SYSAUTH

 SYSDBA나 SYSOPER 권한의 디렉토리 인증기능을 사용 가능하게함(기본값은 NO)

 LOG_ARCHIVE_DEST_n

 아카이브 리두 로그 파일의 저장 경로를 지정하는 파라미터

 LOG_ARCHIVE_DEST_STATE_n

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

- Enable, Defer, Alternate

 NLS_LANGUAGE

 데이터베이스 내에서 기본적으로 사용될 언어 지정

 NLS_TERRITORY

 해당 언어와 날짜(요일, 주)를 사용하는 지역 지정

 OPEN_CURSORS

 1개의 세션당 PL/SQL 등에서 사용하는 CURSOR 의 최대 Open 갯수 지정

 PGA_AGGREGATE_TARGET

 하나의 인스턴스에 접속한 전체 서버프로세스가 사용 가능한 총 PGA 크기 결정

 PROCESSES

 OS 상에 카운트 되는 오라클 관련 프로세스의 최대값 설정

 RECYCLEBIN

 10g 버전부터 등장한 휴지통 기능의 사용 유무 지정(기본값은 ON)

 REMOTE_LISTENER

 로컬 서버에서 작동하지 않고 원격지 서버에서 작동중인 리스너의 이름 지정

 REMOTE_LOGIN_PASSWORDFILE

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

- SHARED, EXCLUSIVE, NONE 

 RESULT_CACHE_MAX_RESULT (11g~)

 RESULT CACHE내에 저장되는 RESULT중 하나의 RESULT가 사용할 수 있는 최대 크기 지정

 RESULT_CACHE_MAX_SIZE (11g~)

 RESULT CACHE의 크기 지정

 RESULT_CACHE_MODE (11g~)

 RESULT CACHE를 어떻게 운영할 것인지에 대한 파라미터

- MANUAL, FORCE, AUTO

 SESSIONS

 오라클 서버에서 생성 가능한 최대 세션 수 지정

 SESSION_CACHED_CURSORS

 하나의 Session이 Cache할 수 있는 Cursor의 수

 SESSION_MAX_OPEN_FILES

 1개의 세션에서 열 수 있는 최대 BFILES의 갯수 지정

 SGA_TARGET

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

 UNDO_TABLESPACE

 인스턴스에서 사용할 UNDO Tablespace 이름 지정

 UNDO_MANAGEMENT

 UNDO Data 의 관리방법 지정

- AUTO, MANUAL

 USER_DUMP_DEST

 User Process 가 생성하는 trace file 저장할 경로 지정

 

 

 

(5) 10g 설치 후 변경해야 하는 파라미터들 (오라클 설치 후 꼭 변경해줘야된다 ★)

 __DG_BROKER_SERVICE_NAMES=''

 Data Guard를 사용 안할 경우 이 기능 불필요

 _B_TREE_BITMAP_PLANS=FALSE

 B-Tree 인덱스를 Bitmap 인덱스로 변환 한 후 실행계획을 세울 경우 대부분 성능 저하

강제로 Disable 시키는 것이 좋으며 파라미터의 값 False 로 설정 권장

 _BLOOM_FILTER_ENABLED=FALSE

 False로  변경 권장(기본값은 True) 버그있음

 _CLEANUP_ROLLBACK_ENTRIES=2000

 어떤 이유에서든지 강제로 종료된 세션 (Killed Session) 을 SMON 이 Rollback 작업을 수행할 때 한번에 Rollback 하는 건수 지정

 CLOSE_CACHED_OPEN_CURSORS=TRUE

 PL/SQL 에서 데이터를 처리할 때 주로 CURSOR 사용

해당 CURSOR 안의 내용을 자주 참조하는 프로그램이 있을 경우 False 권장

 _COMPLEX_VIEW_MERGING=FALSE

View 를 포함하고 있는 쿼리일 경우 옵티마이저가 실행계획을 세울 때 Merge 기능 사용

 기능 사용여부는 다양한 테스트를 통해서 결정 하길 권장

 _CURSOR_FEATURES_ENABLED=10

 특정 버그의 해결을 위해 적용하는 파라미터

 _FAST_START_INSTANCE_RECOVERY_TARGET=360

 RAC 환경일 경우 한쪽 노드가 장애로 Crash 되었을 경우 남아 있는 다른 노드에서 해당 Crash 를 Recovery 할 시간을 정해주는 파라미터

 _GBY_HASH_AGGREGATION_ENABLED=FALSE

GROUP BY 를 ORDER BY 가 되어서 나오도록 설정

 충분히 테스트 해본 후 사용 여부 결정(FALSE=정렬)

 _GC_AFFINITY_TIME=0

 RAC 가 아닌 환경에서는 0 으로 설정

RAC 일 경우에는 신중하게 조사한 후 지정(기본값은 10분)

 _GC_UNDO_AFFINITY=FALSE

 RAC에서 Undo Segment 를 활성화 한 노드가 자동으로 마스터 노드가 되는 기능(리마스터링)을 사용 안 함으로 변경하는 파라미터

 RAC 가 아닐 경우에는 이 값을 FALSE 로 하시길 권장

 _IN_MEMORY_UNDO=FALSE

 IN MOMORY UNDO 기능 사용 여부 결정

작은 트랜잭션이 많을 경우 사용 권장, 대량의 데이터가 변경되는 경우가 많을 경우 오히려 성능 저하 유발

 _KKS_USE_MUTEX_PIN=FALSE

 기본값은 사용함이나 기존방법보다 성능 안좋은 경우 많음

사용 안 함(파라미터의 값 FALSE 지정) 권장

 _OPTIM_PEEK_USER_BINDS=FALSE

 Bind Peeking 기능 사용 유무 결정

 기본적으로 Enable 되어 있으므로 꼭 Disable 하기 권장

 _OPTIMIZER_COST_BASED_TRANSFORMATION=OFF

 정상적으로 변환이 일어나지 않아 실행계획이 잘 못 수립되는 경우 발생 대비

OFF 로 설정해 두고 사용

 _OPTIMIZER_PUSH_PRED_COST_BASED=FALSE

 특정 쿼리의 경우에 Push Predicate이 이루어지지 않음으로써 비효율적인 실행 계획을 수립하여 성능이 저하 될 수 있습니다

FALSE로 변경해 주어 9i 버전과 같이 Rule Base 기반에서 쿼리 변환이 일어나게 설정

 _PX_USE_LARGE_POOL=TRUE

 Parallel Query 를 수행할 경우 Large Pool 사용 유무 결정

True 사용 권장

 _ROW_CACHE_CURSORS=1000

 데이터 딕셔너리 캐시에 캐싱되는 양을 지정

충분히 크게 설정하기 권장

 

 

(5) 11g 설치 후 변경해야 하는 파라미터들 (10g 설치 후 변경해야 하는 파라미터들을 변경 한 후 추가로 반영해야 함)

 OPEN_LINKS

 하나의 세션에서 동시에 사용할 수 있는 데이터베이스 링크의 개수를 지정하는 파라미터

(초기값은 4) 이 개수가 부족한 경우가 많으므로 충분히 많이 지정하길 권장(예: 40개)

 OPEN_LINKS_PER_INSTANCE

 하나의 인스턴스에서 동시에 사용할 수 있는 데이터베이스 링크의 개수를 지정하는 파라미터

(초기값 4개) 충분히 많이 지정 권장(예:40개)

 MEMORY_TARGET

 총 메모리 량을 지정하는 파라미터 

파라미터의 크기 0 또는 주석처리로 사용하지 않음을 권장

(충분히 테스트 한 후 사용 유무 결정 권장)

 DB_WRITER_PROCESSES

 DBWR 의 기본 개수를 지정하는 파라미터

(기본값은 1) 2 로 변경 권장

 SESSION_CACHED_CURSORS

 하나의 세션 당 캐싱되는 커서의 개수를 지정하는 파라미터

(기본값은 50) 충분히 크게 지정하길 권장 (예: 500)

 _DIAG_DAEMON

 분석 데몬의 자동 시작 유무를 결정하는 파라미터

(기본값은 True) False 로 변경 권장

 

 

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

* startup을 하면 shutdown->nomount->mount->open까지 수행된다.

* oracle은 각 단계별로 시작할 수도 있다. ex) startup (단계)  : 그 단계까지만 올라간다.

▶ 현재 사용중인 파일은 절대로 이동 및 복사를 하면 안된다.★ (parameter file중에 pfile은 예외) (UNIX계열에서는 특히 주의)

 

- 즉, control file을 변경하고 싶으면 mount단계 이전단계인 shutdown상태이거나 nomount단계에서 해야한다.

 (다만 nomount상태에서 parameter file이 사용중이므로, nomount 상태에서 control file을 변경하면, db를 껐다가 다시 켜야 적용된다.)

 

▶ nomount나 mount상태 일 때, open하려면 alter database 명령어 써야한다. (startup쓰면안됨.)

NOMOUNT 단계까지만 시작한 후 나머지 단계 진행 

 sys> SYTARTUP NOMOUNT;

 sys> ALTER DATABASE OPEN;

MOUNT 단계까지만 시작한 후 나머지 단계 진행 

 sys> STARTUP MOUNT;

 sys> ALTER DATABASE OPEN;

 

 

▶ 읽기전용 모드

 sys> STARTUP MOUNT;

 sys> ALTER DATABSE OPEN READ ONLY

→ select 외에 작업은 모두 할 수 없게 되므로 주로 감사 등의 작업과 같이 데이터의 변경을 막고 조회만 하는 경우 사용하면 유용하다.

→ 다시 데이터를 변경할 수 있는 모드로 변경하고 싶을 경우는 Instance 종료한 후 다시 정상적으로 시작하면 된다.

 

▶Restricted mode(제한된 모드)

: 데이터의 생성이나 수정등을 모두 할 수 있지만, 허가받은 사용자만 접속할 수 있도록 하는 mode (주로 제품 유지 관리작업)

 * restricted mode로 open.

 sys> startup restrict;  --restricted mode로 open된 Instance에 접속하려면 restricted session이란 권한을 가지고 있어야 한다.

 * 현재 open 되어 있는 Instance를 restricted mode로 변경.

 sys> alter system enable restricted session;

 sys> alter system disable restricted session;

 

 

3. Oracle Instance 종료하기.

(1) Shutdown의 4가지 옵션.

 1) NORMAL (기본옵션)

 : Shutdown 명령 전에 접속되어 있던 사용자가 있을 경우 강제종료시키지 않고, 해당 사용자들이 모두 스스로 종료할 때까지 기다렸다가 종료.

→ 사용자들이 스스로 접속을 종료하지 않으면 Instance가 종료되지 않는다.

 SYS> Syutdown normal;

 SYS> Shutdown; 

 2) TRANSACTIONAL

 : 사용자가 종료할 때까지 기다려주지 않고, 강제로 접속 중단시킨후 Instance를 종료시킨다.

 → 접속 중단시키는 시점이 수행중인 Transaction이 끝나는 시점이다.

 → 사용자가 트랜잭션을 종료하지 않으면 Instance를 종료할 수 없다.

 ** 트랜잭션 종료하는 명령어 :DDL, DCL, TCL(commit,rollback)

 3) IMMEDIATE

  : 즉시 강제 종료 → commit이 완료된 데이터는 저장해주고, commit이 완료되지 않은 작업들은 모두 rollback시킨 후 정상적으로 종료.

 4) ABORT

  : 즉시 강제 종료. -> 저장하지도 rollback하지도 않고, 그냥 즉시 Instance 종료. (비정상 종료 Instance Crash)

 - immediate가 안될 때만 써야한다. (mount상태에서 쓰는건 상관없는데, open상태에서는 절대 쓰면 안된다.)

 

 ** 제대로 종료되고 있는지 확인하고 싶으면 alert log file을 확인해본다.

 

 


 

 [실습1] Parameter file 생성 및 관리하기.

 

 1. sysdba에 접속하여 shutdown한 후 $ORACLE_HOME/dbs 안에 보면, spfile이 생성되어 있다.

 

 

 

 2. spfile을 강제로 삭제하는 장애를 만들고, 초기화 파라미터 파일이 없는 상태에서 startup하면 에러가 발생한다.

 

 

 

 3. $ORACLE_HOME/dbs 를 조회해보면 spfile이 삭제되어있고, 현재 parameter file이 존재 하지 않는다.

     -> 이미 만들어져 있는 원본 pfile을 찾는다. (원본 pfile의 위치 : $ORACLE_BASE/admin/testdb/pfile

     -> 원본 pfile을 $ORACLE_HOME/dbs 안에 복사해온다.

 

 

 4. test (startup하면 db가 잘 open되는 것을 확인할 수 있다.)

 

 

 

 

 ** 현재 spfile을 사용하는지 pfile을 사용하는지 알고 싶은 경우 조회 **

 

 

  : value부분에 값이 없으면 pfile / 있으면 spfile이다.

  -> pfile과 spfile 둘다 존재하는 경우 spfile만 사용되므로, pfile을 사용하려면 spfile을 삭제하거나 이름을 변경해야 한다.

  -> spfile을 생성하여 다시 재부팅(shutdown후 -> startup) 해보면, spfile을 사용한다고 조회된다.

 

 

 

 

 

 [실습2] pfile, spfile 만들기 (pfile 사용하여 spfile 생성 / spfile을 사용하여 pfile 생성)

 

 1. pfile 로부터 spfile 생성 : create spfile from pfile;

 

 

 

 2. spfile 로부터 pfile 생성 : create pfile from spfile;

 

 

 

 

 [실습3] Startup / shutdown 실습하기.

 

 * 현재 상태 조회 : select status from v$instance;

 * startup nomount 노마운트 상태로 startup 후에, open상태로 변경하려면, alter database mount -> alter database open 차례로 수행해야 한다.