SW/Database / / 2025. 1. 30. 13:44

ORA-16000: database open for read-only access / 원인과 해결 방법

반응형

ORA-16000: database open for read-only access

ORA-16000 오류는 데이터베이스가 읽기 전용(read-only) 모드로 열려 있어 DML(INSERT, UPDATE, DELETE) 작업을 수행할 수 없을 때 발생합니다.

 

 

ORA-16000: database open for read-only access / 원인과 해결 방법

 

 

오류 원인

ORA-16000 오류의 주요 원인은 다음과 같습니다:

  1. 데이터베이스가 읽기 전용 모드로 마운트됨: 보조 데이터베이스(Standby DB) 또는 복제된 데이터베이스가 읽기 전용 상태로 열려 있을 수 있습니다.
  2. ALTER DATABASE 명령을 사용하여 읽기 전용 모드로 설정됨: 데이터베이스 관리자가 유지보수 또는 특정 작업을 위해 읽기 전용 모드로 변경했을 수 있습니다.
  3. 데이터베이스가 읽기 전용 스냅샷(Snapshot Standby)으로 운영됨: Data Guard 환경에서 읽기 전용 모드로 설정된 경우입니다.

해결 방법

ORA-16000 오류를 해결하려면 데이터베이스를 읽기/쓰기(read-write) 모드로 변경해야 합니다. 다음 단계를 수행하세요:

  1. 데이터베이스 모드 확인: 데이터베이스의 현재 모드를 확인하려면 다음 SQL 명령을 실행하세요.
    SELECT name, open_mode FROM v$database;
    
    만약 `OPEN_MODE`가 `READ ONLY`로 설정되어 있다면 데이터베이스가 읽기 전용 상태임을 의미합니다.
  2. 읽기/쓰기 모드로 변경: 데이터베이스를 읽기/쓰기 모드로 변경하려면 데이터베이스를 마운트한 후 다시 열어야 합니다.
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE OPEN READ WRITE;
    
    이 작업을 수행하려면 데이터베이스 관리자 권한이 필요합니다.
  3. Data Guard 환경에서 Standby 모드 해제: 만약 Data Guard를 사용 중이라면 `FORCE LOGGING` 옵션을 해제해야 할 수도 있습니다.
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    ALTER DATABASE OPEN READ WRITE;
    
  4. 제한된 환경에서 작업 수행: 읽기 전용 상태에서 작업을 수행해야 한다면, `DBMS_SNAPSHOT.REFRESH` 또는 `DBMS_MVIEW.REFRESH`를 사용하여 데이터를 갱신할 수 있습니다.

간단 요약

  • ORA-16000 오류는 데이터베이스가 읽기 전용 모드일 때 발생합니다.
  • 해결 방법: 데이터베이스를 읽기/쓰기 모드로 변경하거나, 필요한 경우 읽기 전용 상태에서 적절한 대체 방법을 사용하세요.
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유