spfile에 관해(퍼온글)

출처 : http://blog.empas.com/imakeme/read.html?a=15262143&c=1142137
——————————————————————————-

SPFILE에 관해

spfile은 Oracle 9i에서 새로 소개된 파라미터 파일 이며 ALTER SYSTEM 명령을 통해 데이터베이스가 운영 중 이라도 파라미터를 수정할 수 있고 서버를 다시 시작하지 않아도 파라미터의 변경이 적용 되는 구조를 가지고 있으며 Binary 파일 이므로 직접 수정해서는 안됩니다.(오라클이 내부적으로 spfile을 관리)

Spfile은 spfileSID.ora라는 파일 이름을 가지며 $ORACLE_HOME/dbs 디렉토리에 위치합니다. 즉 default 저장 위치는 pfile의 위치와 동일

참고로 pfile은 오라클을 시작 하는데 필수적인 파라미터들이 정의되어 있고 text 형식으로 운영체제의 에디터로 수정 가능 하며 pfile 파라미터의 내용을 변경하여 적용하기 위해서는 데이터베이스를 종료하고 다시 시작해야 한다.    

pfile 및 spfile의 위치는 아래를 참고 하세요~

UNIX  :  $ORACLE_HOME/dbs
Windows NT/2000 -> %ORACLE_HOME%database

spfile은 pfile로부터 생성되는데 (pfile없이 spfile을 만들 수 없습니다) 아래의 예를 참고 하세요~ (spfile을 만들기 위해서는 sysdba 권한을 가진 사용자만 가능 즉 sys User만 가능)

c:/>sqlplus /nolog
SQL>connect / as sysdba
SQL>create spfile from pfile;
File Created.

Alter 명령을 이용하여 임의의 서버 파라미터 값을 변경 가능한데 이때 기존의 인스턴스에 대해 변경된 값을 적용 시키며 아울러 spfile의 실제 값까지도 변경 시켜 줍니다. 한편 pfile의 경우엔 alter 명령을 사용하더라도 기존 인스턴스에는 영향을 미치지만 실제 pfile 내부의 파라미터는 변경되지 않는 다고 이전의 pfile 강좌에서 말씀 드렸습니다.

참고로 아래는 alter system을 사용할 때의 option 이니 참고 하세요~

ALTER SYSTEM SET 파라미터명=변경값 [SCOPE=BOTH, MEMORY, SPFILE]

–        memory : 기존 떠있는 인스턴스에 변경된 값을 반영, spfile은 변경 안됨, 데이터베이스가 다시 시작되면 변경 이전 값으로 되돌아 갑니다.

–        spfile : 기존 떠있는 인스턴스에 변경된 값을 반영안함, spfile은 변경, Static 파마리터의 경우에 주로 사용되며 static 파라미터는 데이터베이스 운영 중에 값을 변경하더라도 다시 시작하지 않으면 반영되지 않습니다.

–        both : 기존 떠있는 인스턴스에 변경된 값을 반영, spfile도 변경되므로 데이터베이스를 다시 시작후에도 반영된 파라미터 값이 적용 됩니다.

아래는 alter system 명령으로 기존 인스턴스도 변경하고 spfile의 파라미터도 변경해주는 예 이니 참고 하세요~

Alter system 명령으로 spfile의 내용도 변경 가능하게 하려면 반드시 DB가 spfile을 사용하여 시작되어야 하고 만약 pfile을 가지고 DB를 시작 한 후 pfile을 통해 spfile을 생성한 상태라면 현재 인스턴스는 spfile이 아닌 pfile을 기본으로 하여 생성되어 진 것 입니다. 이 경우엔 DB를 shutdown 후 다시 startup 해야 하며 이 경우엔 DB가 spfile의 존재를 확인하는데 존재하고 있으므로 이를 통해 인스턴스를 만듭니다. 만약 spfile이 없다면 pfile을 통해 인스턴스를 생성 합니다.

——————————————————————-
1.        위의 경우처럼 pfile을 통해 DB가 시작 되었다면 spfile을 통해 DB가 시작 하도록 spfile을 생성 후 DB를 restart
——————————————————————–

c:/>sqlplus /nolog
SQL>connect / as sysdba
SQL>create spfile from pfile;
File Created.
SQL>shutdown immediate (오라클 중지)
….
——————————————————————-
2.        alter system 명령으로 open_cursors의 값을 300에서 900으로 늘여 보겠습니다. 위에서 언급한데로 spfile을 통해 DB를 시작했다는 가정을 하고 간단히 Editor를 통해 spfile을 확인하며 아래와 같이 binary형태로 되어 있음을 알 수 있습니다. (저의 경우 제 NoteBook에 오라클 9i를 설치 했으며 c:oracledatabase에 spfile이 위치하고 있습니다. DB SID는 wink)
——————————————————————–

–        spfileWINK.ora 파일의 내용

*.java_pool_size=33554432

*.job_queue_processes=10

*.large_pool_size=8388608

*.open_cursors=300   이 값을 900으로 변경 할 겁니다.

*.pga_aggregate_target=25165824

*.processes=150

*.query_rewrite_enabled=’FALSE’

*.remote_login_passwordfile=’EXCLUSIVE’

*.shared_pool_size=50331648

*.sort_area_size=524288

*.star_transformation_enabled=’FALSE’

*.timed_statistics=TRUE

*.undo_management=’AUTO’

*.undo_retention=10800

*.undo_tablespace=’UNDOTBS1′

*.user_dump_dest=’c:oracleadminwinkudump’

—————————————–
3.        open_cursors값을 300에서 900으로 변경
—————————————–

C:Documents and Settings이종철>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 – Production on 토 Jan 28 17:24:41 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn / as sysdba
연결되었습니다.

SQL> alter system set open_cursors=900 scope=both;

시스템이 변경되었습니다.

—————————————————
4.        spfile이 변경된 것을 확인(c:oracledatabase)
—————————————————

*.java_pool_size=33554432

*.job_queue_processes=10

*.large_pool_size=8388608

*.open_cursors=900   900으로 변경

*.pga_aggregate_target=25165824

*.processes=150

*.query_rewrite_enabled=’FALSE’

*.remote_login_passwordfile=’EXCLUSIVE’

*.shared_pool_size=50331648

*.sort_area_size=524288

*.star_transformation_enabled=’FALSE’

*.timed_statistics=TRUE

*.undo_management=’AUTO’

*.undo_retention=10800

*.undo_tablespace=’UNDOTBS1′

*.user_dump_dest=’c:oracleadminwinkudump’

—< 추가 >———————————————————–
db open 시 spfile을 읽었는지 확인하는 방법

   db가 open 시에 참조한 initial parameter file이 무엇인지를 확인하기
   위해서는 다음과 같이 조회하면 된다.

      SQL> show parameter pfile

      NAME                            TYPE        VALUE
      —————————— ———– ———————
      spfile                          string      ?/dbs/spfile@.ora  

   여기에서 ?는 ORACLE_HOME을 나타내고 @는 SID를 나타낸다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.