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 로 적용
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 사용 여부 확인
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.
==> 정상 확인