데이터베이스 연구실.log

파라미터 파일과 설정 (PFILE, SPFILE)

PFILE과 SPFILE 변환, ALTER SYSTEM의 SCOPE 적용 범위와 SPFILE 설정 오류 대응 시 확인할 조건

PFILESPFILEALTER SYSTEMSCOPEV$SPPARAMETER

#핵심 요약

PFILE은 텍스트 파일이고 SPFILE은 바이너리 파일임
SPFILE은 텍스트 편집기로 고치면 안 되고 ALTER SYSTEM으로 바꿈

CREATE PFILE FROM SPFILE과 CREATE SPFILE FROM PFILE로 서로 만듦

ALTER SYSTEM SET ... SCOPE는 변경을 SPFILE에만, 메모리에만, 둘 다에 적용할지 정함
정적 파라미터는 SCOPE=SPFILE만 쓸 수 있음

SPFILE에 잘못된 값을 넣어 기동이 안 되면 PFILE로 내려 고친 뒤 SPFILE을 다시 만드는 것이 실습의 조치임

#개념과 동작 원리

구분 PFILE SPFILE
형식 텍스트 바이너리
편집기로 열어 고치면 파일이 손상되어 인스턴스를 기동할 수 없게 됨
기본 이름(Linux) init<ORACLE_SID>.ora spfile<ORACLE_SID>.ora
기본 위치(Linux) $ORACLE_HOME/dbs 또는 데이터 파일과 같은 위치 ASM이 없으면 $ORACLE_HOME/dbs 또는 데이터 파일과 같은 위치
ASM이 있으면 데이터 파일과 같은 디스크 그룹(DBCA로 만든 경우)
바꾸는 방법 편집기 ALTER SYSTEM SET
재기동 후 유지 파일을 고친 만큼 SCOPE에 따라

STARTUP에 PFILE을 인자로 주면 기존 SPFILE 대신 그 PFILE로 기동할 수 있음

#SCOPE

SCOPE 적용 위치 효과
SPFILE SPFILE만 현재 인스턴스는 바뀌지 않고 다음 기동부터 적용
정적 파라미터에 허용되는 유일한 값
MEMORY 메모리만 즉시 적용되지만 SPFILE이 바뀌지 않아 재기동하면 사라짐
정적 파라미터에는 쓸 수 없음
BOTH 메모리와 SPFILE 즉시 적용되고 재기동 뒤에도 유지
정적 파라미터에는 쓸 수 없음

인스턴스가 SPFILE로 기동되지 않았으면 SCOPE=SPFILE이나 SCOPE=BOTH는 오류임

#필수 명령어 또는 SQL

#PFILE과 SPFILE 서로 만들기

SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE PFILE FROM SPFILE;
CREATE SPFILE FROM PFILE;

결과 해석:

파일 이름을 주지 않으면 플랫폼 기본 이름과 기본 위치를 씀

#파라미터의 변경 가능 범위 확인

SQL*Plus조회만 함
SELECT name, isses_modifiable, issys_modifiable, value
  FROM v$parameter WHERE name = 'sec_max_failed_login_attempts';

결과 해석:

실습에서는 ISSES_MODIFIABLE, ISSYS_MODIFIABLE 두 열로 세션 단위와 시스템 단위 변경 가능 여부를 확인했음
RAC 수업 자료의 설명: ISSYS_MODIFIABLE이 FALSE면 재기동이 필요한 정적 파라미터, IMMEDIATE면 바로 반영, DEFERRED면 새 세션부터 반영됨(RAC의 ASM과 파일 구성)

#SPFILE에만 변경하고 주석 남기기

SQL*Plus (SYSDBA)객체 또는 설정을 변경함
ALTER SYSTEM SET sec_max_failed_login_attempts = 2
  COMMENT = 'tighter login policy' SCOPE = SPFILE;
SQL*Plus조회만 함
SELECT name, value, update_comment
  FROM v$spparameter
 WHERE name = 'db_files';

결과 해석:

V$SPPARAMETER는 현재 SPFILE의 내용을 보여 주며, 인스턴스가 SPFILE을 쓰지 않으면 ISSPECIFIED가 FALSE임
실습에서는 sec_max_failed_login_attempts를 바꾼 뒤 db_files를 조회했음
바꾼 파라미터의 주석을 확인하려면 조회 조건도 같은 이름이어야 함

#SPFILE 설정 오류 시 PFILE로 고치기

DB를 내린 상태에서 진행함

셸 (oracle)조회만 함
cd $ORACLE_HOME/dbs
ls -l spfile<ORACLE_SID>.ora
SQL*Plus (SYSDBA, 인스턴스 종료 상태)객체 또는 설정을 변경함
CREATE PFILE FROM SPFILE;
셸 (oracle)객체 또는 설정을 변경함
ls -l init<ORACLE_SID>.ora
vi init<ORACLE_SID>.ora
SQL*Plus (SYSDBA, 인스턴스 종료 상태)객체 또는 설정을 변경함
CREATE SPFILE FROM PFILE;

결과 해석:

#사용 조건과 주의사항

SPFILE은 편집기로 고치지 않음
공식 문서는 직접 수정하면 파일이 손상되어 인스턴스를 기동할 수 없다고 경고함

정적 파라미터는 SCOPE=SPFILE로 바꾸고 재기동해야 적용됨

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기