위의 예처럼 화일명 대신 직접 directory까지 절대 path로 지정할 수 있고,
화일명은 임의로 지정 후 나중에 사용시 initSID.ora나 spfileSID.ora 형태로 만들어줄 수 있다.
default인 $ORACLE_HOME/dbs directory이고 SID가 붙는 이름 형태이면 간단히,다음과 같이 지정하여도 된다.
SQL>CREATE pfile FROM spfile;
SQL>CREATE spfile FROM pfile;
parameter 변경시 scope 정하기
spfile을 사용하게 되면 spfile을 직접 변경하는 대신 alter system 명령을 통해 initial parameter를 수정할 수 있다.
이때 alter system 명령 뒤에 scope를 지정할 수 있는 데 scope 값은 memory/spfile/both 세가지 중 하나를 선택할 수 있다.
scope를 지정하지 않으면 default 값인 memory가 적용된다.
memory
변경이 현재 상태에만 영향을 미치며 데이타베이스가 재시작되면, 변경 이전 값으로 돌아간다.
spfile
변경 내용을 spfile에만 저장하고 현재 상태에는 영향을 미치지 않는다.
static parameter의 경우는 이 scope만이 지정가능하다.
즉, spfile을 사용하더라도 static parameter에 대해서는
db 운영중에 바로 값을 변경하여 restartup없이 반영하는 것은 불가능하다.
both
변경 내용을 현재상태에도 바로 반영하고 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;
단, spfile을 참조하지 않고 init.ora를 참조하여 db가 open한 경우
이러한 alter system 명령을 통해 initial parameter를 변경하려고 하면
다음과 같은 오류가 발생한다. 특히 spfile에 외부의 변경이 가해져 spfile이 참조되지 않은 경우에 주로 다음 오류를 만날 수 있다.
ORA-02095: specified initialization parameter cannot be modified
v$parameter와 v$spparameter에 대해서 (static parameter 확인)
initial parameter의 종류에는 db가 운영중에는 바로 그 값을 변경하여 반영시킬 수 없고,
다음 startup 후에만 변경된 값이 영향을 주게되는 parameter가 있다.
이러한 parameter를 static parameter라고 부른다.
static parameter의 경우는 그래서 alter system으로 변경하더라도 scope=spfile 로만 지정 가능한 것이다.
이러한 sttic parameter를 scope를 지정 안해서 memory로 하거나 both로 하게 되면 위의 ORA-2095 오류가 발생하게 된다.
static parameter 확인방법
다음 명령을 실행해보자.
SQL>SELECT name, issys_modifiable FROM v$parameter;
issys_modifiable의 값으로 다음 세가지가 나타난다.
FLASE
static parameter로 scope=spfile로만 값을 변경 가능하다.
즉 값을 변경해도 이후 startup 시부터 영향을 미치게 된다.
IMMEDIATE
값을 변경하면 현재 session부터 바로 영향을 받게된다.
DEFERRED
변경된 값이 이후 접속되는 session부터 영향을 준다.
parameter 반영 확인방법
alter system을 통해 parameter를 변경하는 경우 변경된 값이 반영이 잘 되었는가를 확인하려면
다음과 같이 show parameter나 v$prameter를 조회하고,
현재 반영은 안 되었더라도 spfile에 저장은 되었는지를 확인하려면 v$spparameter를 조회하면 된다.
SQL>SHOW parameter open_cursors
SQL>SELECTVALUEFROM v$prameter WHERE name ='open_cursors';
SQL>SELECTVALUEFROM v$spparameter WHERE name ='open_cursors';
즉, scope=spfile로 parmaeter를 변경한 경우는
v$spparameter에만 변경된 값이 나타나고,
show parameter나 v$parameter에서는 변경전 값이 나타나게 된다.
Hidden Parameter 까지 조회가능하다.
SQL>SELECT n.ksppinm name , v.ksppstvl VALUEFROM x$ksppi n , x$ksppsv v
WHERE n.indx=v.indx
AND n.ksppinm LIKE'%';
dbms/oracle/admin/oracleparameterfile.1312121414.txt.gz · 마지막으로 수정됨: (바깥 편집)