새싹 DBA/Oracle

[오라클] 오라클 RAC scope= spfile sid= '*' 적용안됨

LIMMI 2025. 4. 10. 17:35

오라클 RAC 환경에서 서버 메모리 증설 작업을 하게되어
sga_max_size, sga_target 파라미터 변경 작업을 하던 중 마주한 문제.

ALTER SYSTEM SET SGA_MAX_SIZE=27G scope=spfile sid =‘*’ ;

파라미터를 변경했는데도 1번 인스턴스의 파라미터 값이 요지부동인거..
이유를 찾아서 pfile 을 열어보니

현재 상황 요약
• DB는 SPFILE로 부팅됨
• ALTER SYSTEM SET sga_max_size = 26G SCOPE=SPFILE SID='*'; 수행했지만
• SPFILE을 PFILE로 내려보니
→ *.sga_max_size=...이 아니라
→ inst1.sga_max_size=26G 이런 식으로 박힘
• 결과적으로 인스턴스 1만 반영되고 인스턴스 2는 기존 값 유지

원인
Oracle RAC 환경에서는 SID='*'를 명시했더라도,
SGA_MAX_SIZE처럼 인스턴스별로 관리 가능한 파라미터는 자동으로 inst1.sga_max_size처럼 저장되기도 한다.

즉, Oracle이 해당 파라미터를 **instance-specific(인스턴스 전용)**으로 인식하고
SID='*'를 무시하거나 inst1에만 반영한 것임.

RAC 환경에서 SPFILE에 설정된 인스턴스별 파라미터(예: inst1.sga_max_size)를 지우려면 어떻게 해야할까?

인스턴스별 설정 삭제 방법

ALTER SYSTEM RESET sga_max_size SCOPE=SPFILE SID='inst1';

• 이 명령은 inst1에만 설정된 sga_max_size 값을 SPFILE에서 제거
• 기본값 또는 SID='*'로 지정된 공통값이 있다면, 그것이 적용

두 인스턴스 모두 삭제하려면?

ALTER SYSTEM RESET sga_max_size SCOPE=SPFILE SID='inst1';
ALTER SYSTEM RESET sga_max_size SCOPE=SPFILE SID='inst2';

물론 db 한번 내렸다 올려야함.

확인

SELECT sid, name, value, isspecified FROM v$spparameter WHERE name = 'sga_max_size';

SID 컬럼이 ‘*’로 변경되어있으면 잘 적용된것.

참고
v$spparameter 의 isspecified 컬럼 값이 TRUE 인 파라미터는 인스턴스별로 값을 다르게 설정할 수 있다.