본문 바로가기

Oracle

[Oracle] spfile에서 pfile로 복사해서 비교하기

 

1. spfile에서 pfile로 복사해서 비교하는 이유

  • spfile은 바이너리 파일이라 컴퓨터 용어로 되어있어 사람이 읽을 수 없기에 우리가 확인할 수 있는 pfile로 내려서 확인

 

  1. 현재 인스턴스에서 사용 중인 파라미터 값을 확인하거나 변경 전/후 설정 비교를 할 때 spfile을 pfile 로 변환
  2. 인스턴스가 정상적으로 기동되지 않을 경우, spfile을 로드할 수 없거나 손상인 경우 있어서 pfile로 변환 후 파라미터 분석 및 수정 진행
  3. 버전 차이 또는 원본 인스턴스와 대상 인스턴스의 파라미터 차이 확인
  4. 문서화

 

2. spfile에서 pfile로 복사하기

  • 서버(linux)에서 진행
CREATE PFILE='/u01/app/oracle/product/12.1.0.2/db/dbs/파일이름(파일위치/파일이름).pfile' from spfile;

 


 

3. pfile과 spfile 구분

  • pfile : init<SID>.ora
  • spfile : spfile<SID>.ora

 

4. pfile 수정하기

  • init<SID>.ora 파일에 접속해서 수정. 위치는 직접 만든 경우는 지정한 경로에 있고, Windows환경이라면 C:\app\oracle\product\19.0.0\db\dbs에 있을 수 있음
  • 파일 직접 수정
vi init<SID>.ora

 


 

5. spfile 수정하기

 

  5-1. pfile을 내린 것에 수정해 spfile로 만들어도 됨. 이런 경우 spfile을 새로 지정해줘야함.

 

  5-2. DB에서 쿼리로 수정

ALTER SYSTEM SET 파라미터='파라미터값' SCOPE=[SPFILE/MEMORY/BOTH] SID='*';
  • _로 시작하는 파라미터는 hidden parameter이므로 ALTER 명령어 사용 시 SET "_hidden 파라미터명" = "파라미터값"으로 나타내야햠.
  • SCOPE 종류
    1. MEMORY : 현재 인스턴스 메모리에만 반영 (즉시 적용되지만 재기동 시 사라짐)
    2. SPFILE : spfile에만 저장 (현재 인스턴스에는 영향 없음). 재기동시 적용됨
    3. BOTH : 현재 메모리에도 적용되고, spfile에도 적용됨(동적 파라미터만 가능)
  • 정적 파라미터 : db_block_size, control_files, db_name 등은 인스턴스 재기동 필요
  • SID는 RAC의 환경인 경우 SID='*'이면 모든 DB에 적용