다른 명령
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'