파라미터 파일과 설정 (PFILE, SPFILE)
PFILE과 SPFILE 변환, ALTER SYSTEM의 SCOPE 적용 범위와 SPFILE 설정 오류 대응 시 확인할 조건
#핵심 요약
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 서로 만들기
CREATE PFILE FROM SPFILE;
CREATE SPFILE FROM PFILE;결과 해석:
파일 이름을 주지 않으면 플랫폼 기본 이름과 기본 위치를 씀
#파라미터의 변경 가능 범위 확인
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에만 변경하고 주석 남기기
ALTER SYSTEM SET sec_max_failed_login_attempts = 2
COMMENT = 'tighter login policy' SCOPE = SPFILE;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를 내린 상태에서 진행함
cd $ORACLE_HOME/dbs
ls -l spfile<ORACLE_SID>.oraCREATE PFILE FROM SPFILE;ls -l init<ORACLE_SID>.ora
vi init<ORACLE_SID>.oraCREATE SPFILE FROM PFILE;결과 해석:
#사용 조건과 주의사항
SPFILE은 편집기로 고치지 않음
공식 문서는 직접 수정하면 파일이 손상되어 인스턴스를 기동할 수 없다고 경고함
정적 파라미터는 SCOPE=SPFILE로 바꾸고 재기동해야 적용됨