* 오라클 서버를 시작하려면 SYSDBA 권한을 가지고 있는 계정으로 로그인을 해야 함
* 기본적으로 SYS 계정으로 접속한 후 아래와 같이 시작
oracle]$ sqlplus sys/oracle as sysdba
SQL> STARTUP;
<오라클 서버의 시작 순서와 파일들>
▣ 오라클 서버를 시작하는 단계
① STARTUP을 하면 오라클 서버 프로세스는 Parameter File을 찾아 읽음
* Parameter file┌ Pfile (정적 : 내용을 변경하려면 관리자가 직접(수동) 변경해야함)
└ Spfile (동적 : 관리자가 변경하지 않아도 서버프로세스가 자동으로 변경 )
② NOMOUNT단계에서 파라미터 파일을 읽고 저장된 파라미터 값들을 참고하여 인스턴스 생성
(작업할 수 있는 메모리 공간이 확보됨)
③ Alert Log 파일을 로깅을 시작
- Alert Log File : 인스턴스가 시작되어서 운영되고 종료될 때가지 중요한 내용들을 모두 저장하고 있음
( 10g-$ORACLE_BASE/admin/SID/bdump/alert_SID.log
11g-$ORACLE_BASE/diag/rdbms/SID/SID/trace/alert_SID.log ) 실시간 확인 : tail –f alert_SID.log
③ NOMOUNT 단계가 마치면 Control File의 내용을 읽고 MOUNT단계를 진행(DB의 이상 유무를 확인)
* Control File의 위치는 Parameter File에 기록되어 있음
④ OPEN
* Instance Crash(Instance에 문제)로 판단되면 OPEN 단계로 가기 전에 SMON이 Instance Recovery를 수행
SMON이 복구할 때 복구 내용 ┌ Rodo Log file : SMON
└ Archive Log file : 관리자가 직접 recovery (Media recovery)
1. Parameter File(초기화 파라미터 파일)
(1) Parameter(파라미터)란?
: SGA를 생성할 때 각 SGA 구성요소 관련된 사항을 기록하고 있는 파일
항목 / 파일 |
Pfile |
Spfile |
파일이 존재하는 기본 경로 |
$ORACLE_HOME/dbs |
파일 이름 |
initSID.ora |
spfileSID.ora |
내용 변경 |
관리자(사람) |
서버 프로세스 |
파일 형태 |
Text(OS 편집기로 편집 가능) |
Binary(OS 편집기로 편집 불가) |
* Pfile과 Spfile이 둘다 존재할 경우 Spfile 내용만 사용, 정해진 디렉토리에 정해진 이름으로 존재해야 함
* 9i 버전부터 Spfile 등장, 기본 파라미터 파일이 Spfile
(2) 파라미터 파일의 내용 확인하기
▣ Spfile로부터 Pfile을 생성하는 방법
① SQL> create pfile from spfile;
② ]$ rm –rf spfileSID.ora ← Spfile을 삭제
(3) 파라미터 파일의 내용 변경하기
- 9i 이후부터는 pfile을 사용하더라도 alter system set 명령을 이용하면 재부팅 없이 즉시 적용 가능(Dynamic SGA)
▣ Database Buffer Cache 값을 변경 시키는 예를 가지고 Spfile 내용을 변경하는 방법
SYS> alter system set db_cache_size=30m scope=memory;
▣ Alter system set의 Scope에 올 수 있는 옵션
┌ Memory : Spfile의 내용은 변경하지 말고 현재 작동중인 인스턴스에만 적용(재부팅시 적용 X, 테스트 등의 목적)
├ Spfile : 현재 운영중인 인스턴스에는 적용하지 말고 Spfile의 내용만 변경(재부팅시 적용)
└ Both : 기본 모드, 두 가지 모두에 적용
(4) 주요 파라미터들의 의미
(5) 10g 설치 후 변경해야 하는 파라미터들
(6) 11g 설치 후 변경해야 하는 파라미터들
2. 다양한 방법으로 Instance Open하기
* DBA가 원하는 단계가지만 지정해서 Instance를 시작시킬 수 있다
* 반드시 NOMOUNT → MOUNT → OPEN 순을 거쳐야 한다
▣ NOMOUNT 단계까지만 시작 후 나머지 단계 진행하기
SYS> startup nomount;
SYS> alter database mount;
SYS> alter database open;
▣ MOUNT 단계까지만 시작 후 나머지 단계 진행하기
SYS> startup mount;
SYS> alter database open;
▣ 읽기전용인 상태로 OPEN하기
SYS> startup mount;
SYS> alter database open read only;
⇒ SELECT 외에 모든 작업은 할 수 없음. 데이터 변경 모드로 변경하려면 Instance 재시작
▣ Restricted Mode(제한된 모드)로 OPEN하기 ⇒ 허가받은(권한이 있는) 사용자만 접속 가능
SYS> startup restrict;
* 현재 OPEN 되어있는 Instance를 Restricted Mode로 변경하려면
SYS> alter system enable restricted session;
SYS> alter system disable restricted session;
3. Oracle instance 종료하기
* Instance를 종료하기 위해서는 SYSDBA 권한을 가지고 있어야 함
(1) Shutdown의 4가지 옵션 (이전에 접속되어 있던 사용자들을 어떻게 처리할것인지···)
① NORMAL (기본 옵션) : 스스로 접속을 종료할 때가지 기다렸다가 종료하는 옵션
SYS> shutdown normal; 또는 shutdown;
② TRANSACTIONAL : 사용자가 수행중인 Transaction이 끝나는 시점에 강제로 종료하는 옵션
* 사용자가 DML 작업을 수행중일 경우에는 기다리고 있다가 해당 트랜잭션을 종료하는 명령어(DDL, DCL, TCL)를
수행하면 접속을 강제로 종료시킨후 데이터를 저장하고 인스턴스를 종료
* 사용자가 업데이트 수행 후 commit이나 rollback 명령어나 DDL, DCL 명령어를 수행하지 않으면 종료 X
③ IMMEDIATE : 즉시 접속 강제 종료
* commit이 완료된 데이터를 Database Buffer Cache에서 찾아서 데이터 파일로 저장해주고 commit이 완료되지 않은 작업들은 모두 Rollback시킨 후 정상적으로 Instance 종료
④ ABORT : 즉시 접속 강제 종료
* 사용자가 수행한 작업을 저장하지도 Rollback하지도 않고 즉시 Instance 종료
* 비정상 종료, Instance Crash
* ABORT 옵션으로 꺼진 Instance는 다시 Startup 될 때 SMON이 Instance Recovery를 수행
실습 1. |
Parameter file 생성 및 관리하기 |
[oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Fri Jan 10 04:46:02 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning option
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> ! [oracle@localhost ~]$ cd $ORACLE_HOME/dbs [oracle@localhost dbs]$ ls hc_DBUA0.dat hc_testdb.dat init.ora lkTESTDB orapwtestdb spfiletestdb.ora [oracle@localhost dbs]$ rm -fr spfiletestdb.ora [oracle@localhost dbs]$ exit exit
SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/app/oracle/product/11g/dbs/inittestdb.ora'
Step 1. 현재 Parameter file 확인하기 ⇒ Parameter file이 없음.
[oracle@localhost dbs]$ ls hc_DBUA0.dat hc_testdb.dat init.ora lkTESTDB orapwtestdb
Step 2. 이미 만들어져 있는 원본 pfile 찾기 [oracle@localhost ~]$ ls $ORACLE_BASE/admin/testdb/pfile/ init.ora.104201311748
Step 3. 원본 pfile을 복사해 오기 [oracle@localhost ~]$ cd $ORACLE_HOME/dbs [oracle@localhost dbs]$ cp /app/oracle/admin/testdb/pfile/init.ora.104201311748 inittestdb.ora [oracle@localhost dbs]$ [oracle@localhost dbs]$ ls hc_DBUA0.dat hc_testdb.dat init.ora inittestdb.ora lkTESTDB orapwtestdb [oracle@localhost dbs]$ exit exit
Step 4. test SQL> startup ORACLE instance started.
Total System Global Area 422670336 bytes Fixed Size 1344616 bytes Variable Size 260049816 bytes Database Buffers 155189248 bytes Redo Buffers 6086656 bytes Database mounted. Database opened.
|
▣ Parameter 파일 확인하기 (VALUE 값이 없으면 pfile, 있으면 spfile)
SQL> show parameter spfile; NAME TYPE VALUE ------------------------------- ----------- ------------------------------ spfile string
SQL> show parameter pfile; NAME TYPE VALUE ------------------------------- ----------- ------------------------------ spfile string
SQL> show parameter spfile; NAME TYPE VALUE ------------------------------- ----------- -------------------------------------------------------- spfile string /app/oracle/product/11g/dbs/spfiletestdb.ora
SQL> show parameter pfile; NAME TYPE VALUE ------------------------------- ----------- -------------------------------------------------------- spfile string /app/oracle/product/11g/dbs/spfiletestdb.ora
|
SQL> !ls /app/oracle/product/11g/dbs hc_DBUA0.dat hc_testdb.dat init.ora inittestdb.ora lkTESTDB orapwtestdb
SQL> create spfile from pfile;
File created.
SQL> !ls /app/oracle/product/11g/dbs hc_DBUA0.dat init.ora lkTESTDB spfiletestdb.ora hc_testdb.dat inittestdb.ora orapwtestdb
SQL> !rm -rf /app/oracle/product/11g/dbs/inittestdb.ora
SQL> !ls /app/oracle/product/11g/dbs hc_DBUA0.dat hc_testdb.dat init.ora lkTESTDB orapwtestdb spfiletestdb.ora
SQL> create pfile from spfile;
File created.
SQL> !ls /app/oracle/product/11g/dbs hc_DBUA0.dat init.ora lkTESTDB spfiletestdb.ora hc_testdb.dat inittestdb.ora orapwtestdb
SQL> !rm -rf /app/oracle/product/11g/dbs/spfiletestdb.ora
SQL> !ls /app/oracle/product/11g/dbs hc_DBUA0.dat hc_testdb.dat init.ora inittestdb.ora lkTESTDB orapwtestdb |
서진수,『오라클 관리 실무』, 생능출판사, 2013, pp.90-129