HOME   로그인   회원가입
    
회원가입
비밀번호 찾기 자동로긴
이전게시판
   free_board
   건강게시판
   오라클DB
   Linux
   HTML/javascript
   질문과 답
호서기
   이미지게시판  
   건강게시판  
   음악자료  
   성준이 게시판  
[일반] 오라클에서 pfile과 spfile의 특징
  호석 님께서 쓴 글입니다 - 211.♡.74.31 읽음:4552  
오라클에서 pfile과 spfile의 특징???
나도 평가하기 00
hunymoon
조회348 답변1
기간 안에 완료하지 못한 질문입니다. (2006-06-02 17:46 작성)
신고
오라클에서 pfile과 spfile의 특징을 알고싶어요...? 임시 게재중단 안내
본 게시물은 현재 지식iN 회원의 신고 또는 게시물 내용 분석 시스템에 의해 검수대상 게시물로 분류되어 작성자 본인 이외에는볼 수 없도록 임시 게재 중지된 상태입니다.

최대 48시간 이내에 지식iN 관리자가 검수를 진행할 예정이며 검수 결과 게재 복원되거나 최종 삭제될 예정입니다.

re: 오라클에서 pfile과 spfile의 특징???
magicdba (2006-06-09 19:28 작성)
신고|이의제기
Oracle9i부터는 database의 initial parameter를 지정하는 initSID.ora file외에
server parameter file이라고 불리는 spfileSID.ora가 새로 소개되었다.
이 spfile을 사용하게 되면 alter system을 통해 database가 운영 중에
parameter를 수정할 수 있게 되면서 parameter 수정때마다 database를 restart
시켜야 하는 필요을 줄여주고, 앞으로 소개될 dynamic한 server tuning에
중요한 역할을 할 수 있다.

Explanation
-----------

이 문서에서는 이러한 spfile에 대해서 실제 사용하면서 알아두어야 할 다음과
같은 내용에 대해서 정리하였다.


1. spfile을 vi로 직접 변경한 경우의 영향
2. db open시 spfile을 읽었는지 확인하는 방법
3. initSID.ora를 spfileSID.ora로 migration하거나 그 반대의 방법
4. alter system으로 parameter변경시 scope에 대해서
5. v$parameter와 v$spparameter에 대해서 (static parameter 확인)


1. spfileSID.ora 화일을 vi로 직접 변경한 경우의 영향

   spfile이 크기 않은 관계로 vi등으로 읽으면 마치 text 화일처럼 parameter가
   보이는데 이 화일은 실제로는 binary file로 직접 변경하면 안된다.
   특히 이 화일의 header에는 checksum과 기본적인 meta-data 정보등을
   포함하여 manual하게 변경하게 되면 이 checksum의 값이 맞지 않게 되면서,
   이후 startup시 이 화일을 읽지 않고 initSID.ora file을 읽게 된다.

   db를 운영하면서 spfile에 계속 parameter가 변경된 경우라면 이러한 문제로
   tuning등을 통해 변경된 parameter value를 모두 잃게될 수 있는것이다.


2. db open 시 spfile을 읽었는지 확인하는 방법

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

      SQL> show parameter pfile

      NAME                            TYPE        VALUE
      ------------------------------ ----------- ---------------------
      spfile                          string      ?/dbs/spfile@.ora ;


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


3. initSID.ora를 spfileSID.ora로 migration하거나 그 반대의 방법

   spfile을 사용하다가 그 화일의 내용을 initSID.ora에 backup 차원에서
   반영시켜 두거나, 혹은 spfile대신 initSID.ora를 사용하고자 하는 경우,
   또는 반대로 initSID.ora를 참조하여 spfileSID.ora를 생성하고 하는
   경우 다음과 같이 간단히 작업하면 된다.

      SQL>connect / as sysdba
      SQL>create pfile='initORA9i.ora' from spfile='spfileORA9i.ora';
      SQL>create spfile='spfileORA9i.ora' from pfile='initORA9i.ora';

   위 문장에서 화일명 대신 직접 directory까지 절대 path로 지정할 수 있고,
   화일명은 임의로 지정 후 나중에 사용시 initSID.ora나 spfileSID.ora 형태로
   만들어줄 수 있다.
  
   default인 $ORACLE_HOME/dbs directory이고 SID가 붙는 이름 형태이면 간단히,
   다음과 같이 지정하여도 된다.

      SQL>create pfile from spfile;
      SQL>create spfile from pfile;

   sysdba 권한이 없으면 권한 부족 오류가 발생한다.

4. alter system으로 parameter 변경 시 scope에 대해서

   spfile을 사용하게 되면 앞에서도 언급한 것과 같이 spfile을 직접 변경하는
   대신 alter system command를 통해 initial parameter를 수정할 수 있다.

   단 이때 alter system command 뒤에 scope를 지정할 수 있는 데 scope로
   지정가능한 값은 memory/spfile/both 세가지가 된다.
   memory가 이중 default여서 scope를 지정하지 않으면 memory가 된다.

   memory: 변경이 현재 상태에만 영향을 미치며 db가 restartup되면,
           변경 이전값으로 돌아간다.
   spfile: 변경 내용을 spfile에만 저장하고 현재 상태에는 영향을 미치지
           않게 한다.
           static parameter의 경우는 이 scope만이 지정가능하다.
           즉, spfile을 사용하더라도 static parameter에 대해서는 db
           운영중에 바로 값을 변경하여 restartup없이 반영하는 것은 불가능
           한 것이다.
   both:   변경 내용을 현재상태에도 바로 반영하고, spfile에도 반영시켜,
           이후 rebooting시에도 영향을 미치도록 한다.

   지정하는 방법은 다음과 같다.

   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


5. v$parameter와 v$spparameter에 대해서 (static parameter 확인)

   initial parameter의 종류에는 db가 운영 중에는 바로 그 값을 변경하여
   반영시킬 수 없고, 다음 startup 후에만 변경된 값이 영향을 주게되는
   parameter가 있다.
   이러한 parameter를 static parameter라고 부른다.
 
   이 static parameter의 경우는 그래서 alter system으로 변경하더라도,
   scope=spfile 로만 지정 가능한 것이다.
   이러한 static parameter를 scope를 지정 안 해서 memory로 하거나 both로
   하게 되면 4번에서 설명한 ORA-2095 오류가 발생하게 된다.

   그럼 static parameter는 어떻게 확인할 수 있는가?

      SQL>select name, issys_modifiable from v$parameter;

   여기에서 보면, issys_modifiable의 값으로 다음 세 가지가 나타난다.

   FLASE:     static parameter로 scope=spfile로만 값을 변경 가능하다.
              즉 값을 변경해도 이후 startup 시부터 영향을 미치게 된다.
   IMMEDIATE: 값을 변경하면 현재 session부터 바로 영향을 받게된다.
   DEFERRED:  변경된 값이 이후 접속되는 session부터 영향을 준다.

  
   alter system을 통해 parameter를 변경하는 경우 변경된 값이 반영이 잘
   되었는가를 확인하려면 다음과 같이 show parameter나 v$parameter를
   조회하고, 현재 반영은 안 되었더라도 spfile에 저장은 되었는지를 확인하
   려면 v$spparameter를 조회하면 된다.

      SQL>show parameter open_cursors
      SQL>select value from v$prameter where name = 'open_cursors';
      SQL>select value from v$spparameter where name = 'open_cursors';

   즉, scope=spfile로 parameter를 변경한 경우는 v$spparameter에만 변경
   된 값이 나타나고, show parameter나 v$parameter에서는 변경 전 값이
   나타나게 된다.


목록

분류 선택
일반 오라클에서 pfile과 spfile의 특징 호석 07-03-09 4553
70 일반 RHEL4 리눅스에서 오라클설치 ★★★★★ (1) 호석 07-03-09 5003
71 일반 ORA-27123 에러 메타링크 참조 호석 07-03-19 4736
72 일반 ORU-10027 에러 -> dbms_output.enable('10000000000') 사용 호석 07-03-19 4417
73 일반 오라클 커널 shared max 값 적용하기 호석 07-03-26 4272
74 일반 decode 활용쿼리 비교연산자 대용 sign() 호석 07-03-29 4919
75 일반 [펌]롤백 세그먼트 , 템포러리 세그먼트 다루기 호석 07-04-04 4592
76 일반 undotbs01가 너무 커졌을 경우 초기화 오라클 9i 호석 07-04-04 5366
77 일반 오라클에서 임의로 범위의 날짜를 가져오는 쿼리문 호석 07-04-05 4545
78 일반 [sql] select case when then 를 이용한 쿼리문 호석 07-04-26 6566
79 일반 oracle10g + php5.1.2 error [OCIEnvNlsCreate() failed] 호석 07-04-27 7900
80 일반 mysql DB 및 사용자 생성 (1) 호석 07-05-18 4696
81 일반 오라클 8i DB 재시작 호석 07-06-12 4741
82 일반 오라클 8i ORA-00604 ,ORA-04031 에러 처리 호석 07-06-12 7058
83 일반 개발자가 범하기 쉬운 튜닝 이슈 10가지 유형 분석 호석 07-06-22 5836
처음이전  [1] [2] [3] [4] [5] [6] 7 [8] [9] [10]  다음맨끝

 
Copyright © zenos.pe.kr. All rights reserved.