이펙티브 오라클 (2008년)
SPFILE을 이용하여 데이터베이스 시작하기 0 0 6,588

by 구루비스터디 SPFILE PFILE [2009.04.30]


I. 초기화 화일(init parameter file)

  • PFILE 과 SPFILE(9I) 가 존재 한다.
  • Oracle Database 구동시 참조 하는 파라미터 화일로


기본 위치
  • UNIX --> $ORACLE_HOME/dbs
  • Windows NT / 2000 --> %ORACLE_HOME%\database 이고


아래 화일 순으로 우선 참조 하여 인스턴스를 구동하게 된다.
  • 1.spfile$ORACLE_SID.ora
  • 2.spfile.ora
  • 3.init$ORACLE_SID.ora


II. Pfile vs SPfile

1. Pfile -

  • 일반 편집 가능( vi )
  • Text file
  • DB 기동 중 설정 변경 불가 - 화일상 수정은 되고 적용(효과)없음
  • Alter system, Alter session - 일부 설정 변경 가능하나 alter system command ...
  • 기본 위치 : $ORACLE_HOME/dbs
  • DB Startup 시 pfile 사용 여부 확인
  • SQL> show parameters pfile ==> 의미 없다.
  • cd $ORACLE_HOME/dbs 후 pfile/spfile 의 존재 여부를 확인
  • 둘다 존재 시 spfile 로 적용, pfile 만 존재시 pfile 로 적용
  • SPfile 로부터 Pfile 생성방법

CREATE PFILE='/u01/oracle/product/920/dbs/racdb_init.ora' 
FROM SPFILE='/u01/oracle/product/dbs/racdb_spfile.ora';


2. SPfile -

  • Server Parameter File, Binary file
  • 일반 편집 불가( vi )
  • 만약 편집 , spfile 의 checksum 과 Datafile checksum 이 일치 하지않아 사용 불가
  • 9i 이상 부터 지원
  • DB 기동 중 설정 변경 가능
  • Alter system, Alter session - 영구 적용
  • 기본위치 : $ORACLE_HOME/dbs
  • DB Startup 시 spfile 사용 여부 확인
  • Pfile 로부터 SPfile 생성방법

CREATE SPFILE='/u01/oracle/product/920/dbs/racdb_spfile.ora' 
FROM PFILE='/u01/oracle/product/dbs/racdb_init.ora';


3. 기타

3-1. Pfile/Spfile 적용 여부 체크 방법
  • show parameter spfile 시 내용이 나올 경우 spfile 이 적용된 상태
 
sys@ARTDOM>show parameter spfile

NAME             TYPE        VALUE
--------------- ----------- ------------------------------
spfile           string      /app/oracle/product/10.1.0/dbs/spfileARTDOM.ora


3-2. SPfile 의 변경 방법

SQL>alter system set open_cursors=300;
SQL>alter system set open_cursors=300 scope=spfile;
SQL>alter system set open_cursors=300 scope=both;


  • memory: 변경이 현재 상태에만 영향을 미치며 db가 restartup되면, 변경 이전값으로 돌아간다.
  • spfile: 변경 내용을 spfile에만 저장하고 현재 상태에는 영향을 미치지 않게 한다.
    • static parameter의 경우는 이 scope만이 지정가능하다.
    • 즉, spfile을 사용하더라도 static parameter에 대해서는 db 운영중에 바로 값을 변경하여 restartup없이 반영하는 것은 불가능 한 것이다.
  • both: 변경 내용을 현재상태에도 바로 반영하고, spfile에도 반영시켜, 이후 rebooting시에도 영향을 미치도록 한다.


3-3. 관련 뷰

  • v$parameter : 현재 적용된 값
  • v$spparameter : spfile 에 적용된 값
  • 즉, scope=spfile로 parameter를 변경한 경우는 v$spparameter에만 변경된 값이 나타나고,
  • show parameter나 v$parameter에서는 변경 전 값이 나타나게 된다.


III. SPFILE 의 장점

1. 운영중에 변경이 가능하다.

  • 운영 중 바로 변경이 가능한 파라미터는 ISSYS_MODIFIABLE 값이 'IMMEDIATE' 와 'DEFERRED'일 경우이다.
  • 변경 가능한 파라미터 체크
 
SQL> Select name, issys_modifiable from v$parameter  ; 

  • FLASE: static parameter로 scope=spfile로만 값을 변경 가능하다.즉 값을 변경해도 이후 startup 시부터 영향을 미치게 된다.
  • IMMEDIATE: 값을 변경하면 현재 session부터 바로 영향을 받게된다.
  • DEFERRED: 변경된 값이 이후 접속되는 session부터 영향을 준다.


2. SGA_TARGET 사용시 최적으로 설정된 Memory Size 를 DB Restart시 다시 사용할 수 있다.

  • 확인)
 
sys@ARTDOM>create pfile from spfile ;
File created


# cd /app/oracle/product/10.1.0/dbs
# more initARTDOM.ora

SGA_TARGET=1166016512 #  1112M 
ARTDOM.__db_cache_size=855638016
ARTDOM.__java_pool_size=16777216
ARTDOM.__large_pool_size=16777216
ARTDOM.__shared_pool_size=268435456


IV. Trouble Shooting

1. SPFILE 을 잘못 수정하여 DB 가 기동 되지 않을 경우

  • 운영 중에 변경이 안되는 파라미터 수정 시도
 
sys@ARTDOM>alter system set processes =10000 scope=both ;               
alter system set processes =10000 scope=both                       
                 *                                                 
ERROR at line 1:                                                   
ORA-02095: specified initialization parameter cannot be modified   
                                                                   

-- SPFILE 적용                                                                   
sys@ARTDOM>alter system set processes =10000 scope=spfile ;        
                                                                   
System altered.                                                    

-- DB 재기동                                                                    
sys@ARTDOM>shutdown immediate ;                                    
Database closed.                                                   
Database dismounted.                                               
ORACLE instance shut down.                                         
sys@ARTDOM>startup                                                 
idle>startup nomount
ORA-00064: object is too large to allocate on this O/S (1,23242560)
idle>exit
Disconnected
[ARTDOM]> sqlplus ' /as sysdba'

SQL*Plus: Release 10.1.0.4.0 - Production on Mon Sep 1 13:49:17 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

idle>create pfile from spfile ;

File created.
==> 이후 pfile 을 통해서 수정한다. 
*.processes=10000
==> 아래 처럼 수정 
*.processes=100
==> DB 기동 시도 
SQL>startup pfile='/app/oracle/product/10.1.0/dbs/initARTDOM.ora';
ORACLE instance started.

Total System Global Area 1174405120 bytes
Fixed Size                  1329584 bytes
Variable Size             316913232 bytes
Database Buffers          855638016 bytes
Redo Buffers                 524288 bytes
Database mounted.
Database opened.
==> 정상 확인

"구루비 데이터베이스 스터디모임" 에서 2008년에 "이펙티브 오라클" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3540

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입