오라클 pfile spfile
DB CAFE
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
- 1 init<SID>.ora 와 spfile<SID>.ora
- 1.1 초기화 파일의 기본 위치
- 1.2 현재 SPFILE 이 사용되는지 확인
- 1.3 PFILE (Parameter FILE)
- 1.4 SPFILE (Server Parameter FILE)
- 1.5 PFILE ---> SPFILE, SPFILE ---> PFILE 생성하는 방법
- 1.6 ALTER SYSTEM parameter 명령 적용 범위
- 1.7 STATIC PARAMETER 확인 방법
- 1.8 parameter 변경 후 확인 방법
- 1.9 Oracle 기동 시 init.ora 파일을 명시적으로 지정하는 방법
- 1.10 Oracle 기동 시 spfile 파일을 명시적으로 지정하는 방법
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.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 spfile='\app\oracle\database\spfile<SID>.ora'
사용하고자 하는 spfile을 지정하고자 할 경우에는 init.ora 파일을 사용하여야 하며, init.ora 파일 내 에는 spfile의 절대 경로만 지정되어 있어야 한다. ===> spfile=\app\oracle\database\spfiletest.ora