2026년 08월 10일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-02096 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-02096 specified initialization parameter is not modifiable with this option 는?
ORA-02096 에러는 Oracle 데이터베이스에서 특정 초기화 파라미터를 변경하려고 할 때, 해당 파라미터가 현재 사용 중인 옵션(SCOPE 또는 세션/시스템 레벨)으로는 수정이 불가능할 때 발생하는 에러입니다. 예를 들어, 일부 파라미터는 ALTER SYSTEM 명령어로만 변경이 가능하거나, 데이터베이스 재시작이 필요한 SPFILE 방식으로만 수정할 수 있도록 제한되어 있습니다. 이 에러는 주로 DBA가 운영 중인 시스템에서 동적으로 파라미터를 변경하려 할 때 빈번히 발생하며, 파라미터의 수정 가능 범위(Modifiable Scope)를 정확히 이해하지 못한 경우 혼란을 야기할 수 있습니다.
주요 발생 원인
- SCOPE=MEMORY 또는 SCOPE=BOTH로 변경 불가능한 파라미터를 수정하려는 경우
Oracle의 초기화 파라미터 중 일부는 동적으로 변경이 불가능(Static Parameter)하며, 반드시 SPFILE을 통해 설정한 후 데이터베이스를 재시작해야만 적용됩니다. 이러한 파라미터에 SCOPE=MEMORY 또는 SCOPE=BOTH 옵션을 사용하면 ORA-02096 에러가 발생합니다. 예를 들어 DB_BLOCK_SIZE, CLUSTER_DATABASE, UNDO_MANAGEMENT 등이 대표적인 Static Parameter에 해당합니다.
- ALTER SESSION으로 시스템 레벨 전용 파라미터를 변경하려는 경우
일부 파라미터는 세션 레벨에서의 변경을 허용하지 않고 오직 시스템 전체(ALTER SYSTEM)에만 적용 가능한 파라미터입니다. DBA 혹은 개발자가 세션 단위로 특정 파라미터를 튜닝하려 할 때, 해당 파라미터가 세션 레벨 변경을 지원하지 않으면 이 에러가 발생합니다. V$PARAMETER 뷰의 ISSYS_MODIFIABLE 및 ISSES_MODIFIABLE 컬럼을 통해 사전에 확인이 가능합니다.
- PFILE 환경에서 SPFILE 전용 SCOPE 옵션을 사용한 경우
데이터베이스가 PFILE(init.ora)로 기동된 경우, SCOPE=SPFILE 또는 SCOPE=BOTH 옵션은 사용할 수 없습니다. SPFILE이 존재하지 않는 환경에서 이러한 SCOPE 옵션을 지정하면 ORA-02096이 아닌 ORA-32001이 발생할 수도 있으나, 파라미터 수정 가능성 자체와 맞물려 ORA-02096이 함께 유발되는 경우도 있습니다. 운영 환경에서는 반드시 SPFILE 사용 여부를 사전에 확인해야 합니다.
해결 방법
원인 1 해결: Static Parameter는 SCOPE=SPFILE로 변경 후 재시작
Static Parameter는 메모리에 즉시 반영할 수 없으므로, 반드시 SCOPE=SPFILE로 지정하여 SPFILE에만 기록한 뒤 데이터베이스를 재시작해야 합니다.
-- 잘못된 방법 (ORA-02096 발생)
ALTER SYSTEM SET DB_BLOCK_SIZE = 16384 SCOPE=MEMORY;
-- ORA-02096: specified initialization parameter is not modifiable with this option
-- 올바른 방법: SPFILE에 기록 후 DB 재시작
ALTER SYSTEM SET DB_BLOCK_SIZE = 16384 SCOPE=SPFILE;
-- 데이터베이스 재시작
SHUTDOWN IMMEDIATE;
STARTUP;
-- 적용 확인
SHOW PARAMETER DB_BLOCK_SIZE;
원인 2 해결: 파라미터의 수정 가능 범위 사전 확인 후 적절한 명령 사용
파라미터 변경 전에 V$PARAMETER 뷰를 조회하여 세션/시스템 레벨 수정 가능 여부를 반드시 확인하세요.
-- 파라미터의 수정 가능 범위 확인
SELECT name,
value,
isses_modifiable, -- TRUE: ALTER SESSION 가능
issys_modifiable, -- IMMEDIATE/DEFERRED/FALSE
isinstance_modifiable
FROM v$parameter
WHERE name = 'optimizer_mode';
-- ISSES_MODIFIABLE = FALSE인 파라미터를 ALTER SESSION으로 변경 시 에러 발생
-- 잘못된 방법 (세션 레벨 변경 불가 파라미터 예시)
ALTER SESSION SET UNDO_MANAGEMENT = 'AUTO';
-- ORA-02096 발생
-- 올바른 방법: ALTER SYSTEM으로 시스템 레벨에서 변경
ALTER SYSTEM SET UNDO_MANAGEMENT = 'AUTO' SCOPE=SPFILE;
-- Static인지 Dynamic인지 한눈에 확인하는 쿼리
SELECT name,
value,
issys_modifiable,
isses_modifiable,
description
FROM v$parameter
WHERE issys_modifiable = 'FALSE'
ORDER BY name;
원인 3 해결: PFILE/SPFILE 사용 여부 확인 및 환경에 맞는 SCOPE 사용
-- 현재 SPFILE 사용 여부 확인
SELECT value FROM v$parameter WHERE name = 'spfile';
-- value가 NULL이 아니면 SPFILE 사용 중
-- 또는 아래 방법으로도 확인 가능
SHOW PARAMETER SPFILE;
-- PFILE 환경에서는 SCOPE=MEMORY만 사용 가능한 Dynamic 파라미터 변경
ALTER SYSTEM SET PROCESSES = 300 SCOPE=MEMORY;
-- SPFILE이 없는 환경에서 SPFILE 생성 (이후 SPFILE 환경으로 전환)
CREATE SPFILE FROM PFILE='/u01/app/oracle/product/19c/db_1/dbs/initORCL.ora';
-- SPFILE 생성 후 재시작하면 이후 SCOPE=SPFILE, SCOPE=BOTH 사용 가능
SHUTDOWN IMMEDIATE;
STARTUP;
-- 변경 이력 모니터링 (12c 이상)
SELECT start_time, end_time, name, value, con_id
FROM v$parameter_valid_values
WHERE name LIKE '%processes%';
예방 방법
- 파라미터 변경 전 V$PARAMETER 뷰를 통한 수정 가능 범위 표준화 점검 절차 수립
모든 파라미터 변경 작업 전에 V$PARAMETER 뷰의 ISSES_MODIFIABLE, ISSYS_MODIFIABLE 컬럼을 조회하는 표준 점검 절차를 팀 내에 정착시키세요. 특히 Static Parameter 목록을 별도로 관리하고, 해당 파라미터 변경 시에는 항상 변경 관리(Change Management) 프로세스를 통해 DB 재시작 일정을 사전에 확보하는 것이 중요합니다. 아래 쿼리를 점검 체크리스트에 포함시키면 실수를 줄일 수 있습니다.
“`sql
— 변경 전 필수 점검 쿼리
SELECT name,
value,
CASE issys_modifiable
WHEN ‘IMMEDIATE’ THEN ‘ALTER SYSTEM 즉시 적용 가능’
WHEN ‘DEFERRED’ THEN ‘ALTER SYSTEM 이후 접속 세션부터 적용’
WHEN ‘FALSE’ THEN ‘재시작 필요 (SCOPE=SPFILE만 허용)’
END AS modifiable_info,
isses_modifiable
FROM v$parameter
WHERE name = :param_name;
“`
- SPFILE 기반 운영 환경 표준화 및 정기적인 SPFILE 백업
모든 운영 환경에서 PFILE 대신 SPFILE을 사용하도록 표준화하고, SPFILE을 주기적으로 백업하여 파라미터 변경 이력을 보존하세요. RMAN을 활용하여 SPFILE을 정기적으로 백업하면, 잘못된 파라미터 변경 후 신속하게 복구할 수 있습니다.
“`sql
— RMAN을 통한 SPFILE 백업
— RMAN> BACKUP SPFILE;
— 또는 수동으로 PFILE 형태로 백업 (가독성 있는 텍스트 형태)
CREATE PFILE=’/backup/pfile_backup_20240101.ora’ FROM SPFILE;
“`
관련 에러
- ORA-32001:
WRITE TO SPFILE REQUESTED BUT NO SPFILE IS IN USE— SPFILE 없이SCOPE=SPFILE을 사용할 때 발생하며, ORA-02096과 유사한 상황에서 함께 접할 수 있습니다. - ORA-02097:
parameter cannot be modified because specified value is invalid— 파라미터 값 자체가 유효하지 않을 때 발생하는 에러로, ORA-02096과 혼동하기 쉽습니다. - ORA-00069: 파라미터 관련 잠금(Lock) 이슈로, 시스템 파라미터 변경 중 발생할 수 있습니다.
- ORA-01034:
ORACLE NOT AVAILABLE— Static Parameter 변경 후 재시작 과정에서 DB 기동 실패 시 함께 발생할 수 있어 주의가 필요합니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.