행위

오라클 pfile spfile

DB CAFE

thumb_up 추천메뉴 바로가기


1 init<SID>.ora 와 spfile<SID>.ora[편집]

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

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

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

1.1 초기화 파일의 기본 위치[편집]

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

1.1.1 초기화 파일이 선택되는 순서[편집]

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

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

1.2 현재 SPFILE 이 사용되는지 확인[편집]

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

1.2.1 현재 SPFILE 위치 확인[편집]

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

1.3 PFILE (Parameter FILE)[편집]

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

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


1.4 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';

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

1.4.1 spfile의 장점[편집]

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


1.5 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;

1.6 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;

1.7 STATIC PARAMETER 확인 방법[편집]

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

▷ FALSE: static parameter 이다.

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

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

1.8 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에서는 변경 전 값이 나타나게 된다.

1.9 Oracle 기동 시 init.ora 파일을 명시적으로 지정하는 방법[편집]

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

1.10 Oracle 기동 시 spfile 파일을 명시적으로 지정하는 방법[편집]

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

사용하고자 하는 spfile을 지정하고자 할 경우에는 init.ora 파일을 사용하여야 하며, init.ora 파일 내 에는 spfile의 절대 경로만 지정되어 있어야 한다. ===> spfile=\app\oracle\database\spfiletest.ora