2026년 07월 21일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-01539 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-01539 tablespace is not online 는?
ORA-01539 에러는 사용자가 특정 테이블스페이스에 접근하거나 해당 테이블스페이스에 속한 오브젝트를 사용하려 할 때, 대상 테이블스페이스가 ONLINE 상태가 아닐 경우 발생하는 에러입니다. 테이블스페이스는 ONLINE, OFFLINE, READ ONLY 등 다양한 상태를 가질 수 있으며, OFFLINE 상태에서는 해당 테이블스페이스 내의 세그먼트에 접근하는 모든 DML/DDL 작업이 차단됩니다. 이 에러는 주로 DBA가 의도적으로 테이블스페이스를 OFFLINE으로 전환했거나, 데이터파일 손상 혹은 디스크 문제로 인해 Oracle이 자동으로 테이블스페이스를 OFFLINE 처리한 상황에서 발생합니다.
주요 발생 원인
- DBA의 의도적인 OFFLINE 전환
운영 중 테이블스페이스 유지보수(데이터파일 이동, 백업, 재구성 등)를 위해 DBA가 직접 ALTER TABLESPACE ... OFFLINE 명령을 실행한 경우입니다. 이 작업 이후 관련 애플리케이션이나 다른 세션에서 해당 테이블스페이스의 오브젝트에 접근하면 ORA-01539가 발생합니다. 특히 배치 작업 중 또는 야간 유지보수 작업 이후 복구를 누락했을 때 많이 발생합니다.
- 데이터파일 손상 또는 디스크 장애
테이블스페이스에 속한 하나 이상의 데이터파일이 OS 레벨에서 삭제되었거나, 디스크 장애로 인해 접근이 불가능해진 경우 Oracle은 해당 테이블스페이스를 자동으로 OFFLINE 상태로 전환합니다. 이 경우는 단순한 ALTER TABLESPACE ... ONLINE 명령만으로는 해결되지 않으며, 반드시 데이터파일 복구 절차가 선행되어야 합니다. 이런 상황에서 RMAN 백업이 존재하는지 먼저 확인해야 합니다.
- 잘못된 테이블스페이스 상태로 DB 재기동
데이터베이스가 비정상적으로 종료(SHUTDOWN ABORT 등)된 이후 재기동 시, 불완전 복구로 인해 특정 테이블스페이스가 OFFLINE 또는 RECOVER 상태로 마운트될 수 있습니다. 이 경우 해당 테이블스페이스의 데이터파일에 대한 미디어 복구가 필요하며, 복구 없이 강제로 ONLINE 전환을 시도하면 추가적인 에러(ORA-01113, ORA-01110 등)가 연쇄 발생할 수 있습니다.
해결 방법
1단계: 현재 테이블스페이스 상태 확인
먼저 문제가 되는 테이블스페이스의 현재 상태를 반드시 확인하세요.
-- 테이블스페이스 상태 전체 조회
SELECT tablespace_name, status
FROM dba_tablespaces
ORDER BY tablespace_name;
-- 특정 테이블스페이스 데이터파일 상태 확인
SELECT file#, name, status, enabled
FROM v$datafile
WHERE ts# = (SELECT ts# FROM v$tablespace WHERE name = 'USERS');
-- 테이블스페이스와 데이터파일 통합 조회
SELECT t.name AS tablespace_name,
d.name AS datafile_name,
d.status,
d.enabled
FROM v$tablespace t
JOIN v$datafile d ON t.ts# = d.ts#
ORDER BY t.name;
2단계: 단순 OFFLINE 상태인 경우 (데이터파일 정상)
데이터파일이 정상적으로 존재하고 손상이 없는 경우, 아래 명령으로 즉시 ONLINE 전환이 가능합니다.
-- 테이블스페이스를 ONLINE으로 전환
ALTER TABLESPACE users ONLINE;
-- 전환 후 상태 재확인
SELECT tablespace_name, status
FROM dba_tablespaces
WHERE tablespace_name = 'USERS';
3단계: 데이터파일 복구가 필요한 경우
데이터파일 손상 또는 미디어 장애가 의심되는 경우 RMAN을 통한 복구를 수행합니다.
-- RMAN을 통한 테이블스페이스 복구
-- (RMAN 환경에서 실행)
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
-- 복구 완료 후 ONLINE 전환
ALTER TABLESPACE users ONLINE;
SQL*Plus에서 수동 복구가 필요한 경우:
-- 미디어 복구 수행 (SQL*Plus)
RECOVER TABLESPACE users;
-- 또는 특정 데이터파일 복구
RECOVER DATAFILE '/oradata/users01.dbf';
-- 복구 완료 후 ONLINE 전환
ALTER TABLESPACE users ONLINE;
4단계: 데이터파일 경로 변경 후 재연결
데이터파일이 이동되었거나 경로가 변경된 경우:
-- DB를 MOUNT 상태로 시작 (필요 시)
-- STARTUP MOUNT;
-- 데이터파일 경로 재지정
ALTER DATABASE RENAME FILE '/old_path/users01.dbf'
TO '/new_path/users01.dbf';
-- 테이블스페이스 ONLINE 전환
ALTER TABLESPACE users ONLINE;
-- 변경된 정보 확인
SELECT file#, name, status
FROM v$datafile
WHERE name LIKE '%users%';
5단계: SYSTEM 또는 UNDO 테이블스페이스가 OFFLINE인 경우
SYSTEM 또는 UNDO 테이블스페이스는 일반적인 방법으로 OFFLINE/ONLINE 전환이 불가하므로, 데이터베이스 자체를 복구해야 합니다.
-- SYSTEM 테이블스페이스 상태 확인
SELECT tablespace_name, status
FROM dba_tablespaces
WHERE tablespace_name IN ('SYSTEM', 'SYSAUX', 'UNDOTBS1');
-- 비상 복구 모드로 DB 오픈 (최후 수단)
ALTER DATABASE OPEN RESETLOGS;
예방 방법
- 테이블스페이스 상태 모니터링 자동화
OEM(Oracle Enterprise Manager) 또는 커스텀 스크립트를 활용하여 테이블스페이스 상태를 주기적으로 모니터링하고, ONLINE이 아닌 테이블스페이스가 감지될 경우 즉시 알림이 발송되도록 설정하세요. 아래 스크립트를 Cron Job 또는 Oracle Scheduler에 등록하여 주기적으로 실행하면 선제적 대응이 가능합니다.
-- 비정상 상태 테이블스페이스 감지 스크립트 (모니터링 용도)
SELECT tablespace_name,
status,
SYSDATE AS check_time
FROM dba_tablespaces
WHERE status != 'ONLINE'
AND tablespace_name NOT IN ('TEMP'); -- TEMP는 예외 처리
- 유지보수 작업 후 반드시 체크리스트 적용
테이블스페이스 관련 유지보수 작업(OFFLINE 전환, 데이터파일 이동, 백업 등) 수행 시 반드시 작업 완료 후 ONLINE 전환 여부를 체크리스트로 관리하세요. 특히 야간 배치 작업이나 긴급 유지보수 후에는 아래 쿼리를 실행하여 모든 테이블스페이스가 정상 상태인지 검증하는 절차를 표준화하는 것이 중요합니다.
-- 유지보수 후 최종 상태 검증 쿼리
SELECT t.tablespace_name,
t.status AS ts_status,
d.status AS file_status,
d.name AS datafile_path
FROM dba_tablespaces t
JOIN v$datafile d ON t.tablespace_name = (
SELECT name FROM v$tablespace WHERE ts# = d.ts#
)
WHERE t.status != 'ONLINE'
OR d.status NOT IN ('ONLINE', 'SYSTEM');
관련 에러
- ORA-01110: 데이터파일 식별 에러로, ORA-01539와 함께 자주 발생하며 문제가 된 데이터파일의 번호와 경로를 알려줍니다.
- ORA-01113: 데이터파일에 미디어 복구가 필요함을 나타내며, OFFLINE 상태의 테이블스페이스를 ONLINE으로 전환하려 할 때 병행 발생합니다.
- ORA-00376: 현재 읽을 수 없는 데이터파일을 가리키는 에러로, 데이터파일이 OFFLINE 상태일 때 해당 파일에 접근 시 발생합니다.
- ORA-01033: Oracle 초기화 또는 종료 진행 중 에러로, DB 기동 중 테이블스페이스 복구가 필요한 상황에서 연관되어 나타날 수 있습니다.
- ORA-01157: 데이터파일을 식별하거나 잠글 수 없을 때 발생하며, 디스크 장애로 테이블스페이스가 OFFLINE 된 경우 함께 기록됩니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.