메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

오라클 pfile spfile

DB CAFE
Dbcafe (토론 | 기여)님의 2024년 9월 30일 (월) 23:18 판 (새 문서: = init<SID>.ora 와 spfile<SID>.ora = Oracle 9i 이전 버전에서는 오라클 인스턴스는 텍스트 파일인 init<SID>.ora 파일을 이용하여 구동, $ORACLE_HOME/dbs 디렉토리 아래 위치. Oracle 9i에서 SPFILE이라는 것이 새로 추가 , DB 서버 내에 저장되는 바이너리 파일이다. 인스턴스에 적용하고자 하는 파라미터값의 변동 사항이 인스턴스를 내리거나 구동시킬때마다 계속해서 적용될 수 있게...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

init<SID>.ora 와 spfile<SID>.ora

Oracle 9i 이전 버전에서는 오라클 인스턴스는 텍스트 파일인 init<SID>.ora 파일을 이용하여 구동, $ORACLE_HOME/dbs 디렉토리 아래 위치.

Oracle 9i에서 SPFILE이라는 것이 새로 추가 , DB 서버 내에 저장되는 바이너리 파일이다. 인스턴스에 적용하고자 하는 파라미터값의 변동 사항이 인스턴스를 내리거나 구동시킬때마다 계속해서 적용될 수 있게 할 수 있다.

인스턴스에 적용시킬 파라미터를 spfile 또는 init.ora 파일에 저장시킬 수 있다.

초기화 파일의 기본 위치

UNIX : $ORACLE_HOME/dbs
Windows : %ORACLE_HOME%\database

초기화 파일이 선택되는 순서

초기화 파일의 기본 위치 폴더에서 (ex. $ORACLE_HOME/dbs/) 아래의 순서대로 검색하여 초기화 파일 선택.

spfile$SID.ora
spfile.ora
init$SID.ora
init.ora

현재 SPFILE 이 사용되는지 확인

show parameter spfile;  -- 값이 있으면 SPFILE 사용

현재 SPFILE 위치 확인

select value from v$system_parameter where name ='spfile';

PFILE (Parameter FILE)

Oracle 8i 이전까지 text file형태로 database initialization parameters 보관.

일반적으로 $ORACLE_HOME/dbs/init_<SID>.ora 로 저장.
인스턴스가 기동될때 이 pfile을 읽어서 데이터베이스에 적용.
인스턴스 기동중 ALTER SYSTEM 이나 ALTER SESSION으로 파라미터를 변경할 수 있으나,
인스턴스를 재기동될 때는 pfile에 저장된 값으로 다시 적용된다.
따라서, 완전히 파라미터를 변경하고자 할 경우 pfile을 수정해야 한다.


SPFILE (Server Parameter FILE)

Oracle 9i부터 도입된 방식으로 binary file 형식으로 database initialization parameters 보관.
이 파일을 직접 변경하면 안된다.
인스턴스가 기동될 때 pfile이 아닌 spfile을 참고하여 데이터베이스에 적용된다.
최초 적용시에는 아래와 같이 pfile을 읽어 spfile을 만든다.
 CREATE SPFILE='/u01/oracle/product/920/dbs/racdb_spfile.ora'
   FROM PFILE='/u01/oracle/product/920/dbs/init_TEST.ora';
  • create spfile from memory
 CREATE SPFILE='/oracle/dbs/racdb_spfile.ora'
   FROM memory; -- 혹은 pfile

-- ASM 사용시 
CREATE SPFILE='+ASM'
  FROM memory; -- 혹은 pfile

이후, 파라메터 변경시에는 ALTER SYSTEM 명령어를 이용하여 변경.

spfile의 장점

RAC 구성시 공유 디스크에 spfile을 설정해 두면 한번의 파라미터 변경으로 모든 인스턴스가 동일한 파라미터로 적용.

PFILE ---> SPFILE, SPFILE ---> PFILE 생성하는 방법

 SQL> connect / as sysdba
 SQL> create pfile='initORA.ora' from spfile='spfileORA.ora';
 SQL> create spfile='spfileORA.ora' from pfile='initORA.ora';
 SQL> create pfile from spfile;
 SQL> create spfile from pfile;

ALTER SYSTEM parameter 명령 적용 범위

memory / spfile / both 세 가지 범위. (기본값은 memory 이다.)

  • memory : 변경이 현재 상태에만 영향을 미치며 db가 restartup되면, 변경 이전값으로 돌아간다.
  • spfile : 변경 내용을 spfile에만 저장하고 현재 상태에는 영향을 미치지 않게 한다. static parameter의 경우는 이 scope만이 지정가능하다.
  • both  : 변경 내용을 현재상태에도 바로 반영하고, spfile에도 반영시켜, 이후 rebooting시에도 영향을 미치도록 한다.
ALTER SYSTEM SET open_cursors=300;       
ALTER SYSTEM SET open_cursors=300 scope=spfile;
ALTER SYSTEM SET open_cursors=300 scope=both;

STATIC PARAMETER 확인 방법

SELECT name, issys_modifiable 
FROM v$parameter; -- issys_modifiable 값

▷ FALSE: static parameter 이다.

▷ IMMEDIATE: 값을 변경하면 현재 session부터 바로 영향을 받게 된다.

▷ DEFERRED: 값 변경 이후 접속되는 session부터 영향을 받게 된다.

parameter 변경 후 확인 방법

show parameter open_cursors
SELECT value FROM v$parameter WHERE name = 'open_cursors';
SELECT value FROM v$spparameter WHERE name = 'open_cursors';

scope=spfile로 parameter를 변경한 경우에는 v$spparameter에만 변경된 값이 나타나고

show parameter나 v$parameter에서는 변경 전 값이 나타나게 된다.

Oracle 기동 시 pfile (init<SID>.ora) 파일을 명시적으로 지정하는 방법

SQL> startup pfile='\app\oracle\database\init<SID>.ora'