데이터베이스 연구실.log

테이블스페이스 운영 (상태 변경, 삭제, 조회)

테이블스페이스의 읽기 쓰기, 읽기 전용 및 오프라인 상태, 크기 조정과 데이터 파일을 포함한 삭제

READ ONLYOFFLINENORMALIMMEDIATEDROP TABLESPACEINCLUDING CONTENTS AND DATAFILESV$TABLESPACE

#핵심 요약

테이블스페이스는 처음에 읽기, 쓰기 상태로 만들어짐
ALTER TABLESPACE로 읽기 전용이나 오프라인으로 바꿈

오프라인 옵션은 NORMAL(기본값), TEMPORARY, IMMEDIATE임
IMMEDIATE로 내리면 다시 온라인으로 올리기 전에 매체 복구가 필요하고, NOARCHIVELOG 모드에서는 쓸 수 없음

DROP TABLESPACE는 기본적으로 컨트롤 파일의 파일 포인터만 지움
OMF가 아니면 INCLUDING CONTENTS AND DATAFILES를 붙여야 운영체제 파일까지 지워짐

V$TABLESPACE, V$DATAFILE, V$TEMPFILE은 컨트롤 파일 정보를 보여 줌

#개념과 동작 원리

#세 가지 상태

상태 의미 바꿀 수 없는 테이블스페이스
읽기, 쓰기(READ WRITE) 온라인이며 읽기와 쓰기가 모두 가능한 기본 상태
읽기 전용(READ ONLY) 진행 중이던 트랜잭션은 마무리할 수 있지만 이후 DML은 허용되지 않음
여전히 온라인
공식 문서: SYSTEM, 활성 UNDO, 임시 테이블스페이스
온라인이어야 하고 온라인 백업 중이 아니어야 함
오프라인(OFFLINE) 그 테이블스페이스만 쓸 수 없고 나머지 데이터베이스는 계속 열려 있음 공식 문서: SYSTEM, UNDO, 임시 테이블스페이스

실습에서는 읽기 전용으로 바꿀 수 없는 테이블스페이스에 SYSAUX를 넣었음
공식 문서의 조건 목록에는 SYSAUX가 없음

실습에서는 오프라인 제외 대상으로 SYSTEM만 적었음

공식 문서: 읽기 전용 전환 명령은 그 전에 시작된 미완료 트랜잭션이 커밋이나 롤백될 때까지 기다림
전환하려면 ALTER TABLESPACE 또는 MANAGE TABLESPACE 권한이 필요함

#오프라인 옵션

옵션 체크포인트 다시 온라인으로 올릴 때
NORMAL(기본값) 모든 데이터 파일에 수행
오류 난 데이터 파일이 없어야 함
복구 필요 없음
TEMPORARY 오프라인이 아닌 파일에만 수행
일부 파일에 오류가 있어도 가능
쓰기 오류로 이미 오프라인이던 파일이 있었다면 복구 필요
IMMEDIATE 수행하지 않음 매체 복구 필요
NOARCHIVELOG 모드에서는 사용 불가

공식 문서는 가능하면 NORMAL을 쓰고, TEMPORARY는 NORMAL이 안 될 때만, IMMEDIATE는 두 가지를 모두 시도한 뒤에만 쓰라고 권함
수업 자료도 같은 취지로 IMMEDIATE를 습관적으로 쓰지 말라고 적었음

#크기 조정

늘리려면 데이터 파일을 추가하거나 기존 파일 크기를 키움
빅파일에는 파일을 추가할 수 없음

줄일 수도 있지만 파일 안에서 이미 쓰는 공간보다 작게 줄이면 오류가 남

공식 문서: 빅파일 테이블스페이스는 ADD DATAFILE 밖에서 ALTER TABLESPACE ... AUTOEXTEND를 바로 쓸 수 있고, ADD DATAFILE을 지정하면 오류가 남

#삭제

DROP TABLESPACE 시스템 권한이 필요함

삭제하면 컨트롤 파일의 파일 포인터가 지워짐
OMF를 쓰면 운영체제 파일도 함께 지워짐
OMF가 아니면 INCLUDING CONTENTS AND DATAFILES로 지시하거나 나중에 운영체제 명령으로 직접 지워야 함

활성 세그먼트가 있으면 지울 수 없음
예를 들어 그 안의 테이블을 쓰는 중이거나, 커밋되지 않은 트랜잭션의 롤백에 필요한 UNDO를 담고 있으면 거부됨

지우기 전에 오프라인으로 바꿔 두는 것이 좋음

공식 문서: 삭제한 테이블스페이스의 데이터는 복구할 수 없으므로 삭제 직전과 직후에 데이터베이스 전체를 백업하라고 강하게 권함

공식 문서: 비어 있으면 INCLUDING CONTENTS가 필요 없음
운영체제 오류로 파일을 못 지워도 문장은 성공하고 경고 로그에 기록됨

#정보 조회 뷰

대상 데이터 딕셔너리 뷰 동적 성능 뷰
테이블스페이스 CDB_TABLESPACES, DBA_TABLESPACES V$TABLESPACE
데이터 파일 CDB_DATA_FILES, DBA_DATA_FILES V$DATAFILE
임시 파일 CDB_TEMP_FILES, DBA_TEMP_FILES V$TEMPFILE
테이블스페이스 안의 테이블 ALL_TABLES

실습 OCP 해설: V$ 뷰는 컨트롤 파일과 메모리에서 읽으므로 MOUNT 상태에서도 조회됨
DBA_TABLESPACES와 V$TABLESPACE에는 여유 공간이 없고, 여유 공간은 DBA_FREE_SPACE나 DBA_TABLESPACE_USAGE_METRICS에서 봄

#필수 명령어 또는 SQL

#오프라인 전환과 상태 확인

SQL*Plus (SYSDBA, 대상 PDB)인스턴스 또는 서비스 중단이 필요함
CREATE TABLESPACE offline_test
  DATAFILE '<DATAFILE_DIR>/offline_test01.dbf' SIZE 5M;

ALTER TABLESPACE offline_test OFFLINE NORMAL;
SQL*Plus (SYSDBA, 대상 PDB)조회만 함
SELECT tablespace_name, status
  FROM dba_tablespaces
 WHERE tablespace_name = 'OFFLINE_TEST';

SELECT file_name, bytes/1024/1024 AS mb
  FROM dba_data_files
 WHERE tablespace_name = 'OFFLINE_TEST';

결과 해석:

실습 기록: STATUS가 OFFLINE으로 나왔고, 데이터 파일 크기는 5MB였음

SQL*Plus (SYSDBA, 대상 PDB)객체 또는 설정을 변경함
ALTER TABLESPACE offline_test ONLINE;
SQL*Plus (SYSDBA, 대상 PDB)데이터 또는 파일을 삭제함, 되돌릴 수 없음
DROP TABLESPACE offline_test INCLUDING CONTENTS AND DATAFILES;

결과 해석: 개별 실행 출력은 기재 없음

#데이터 파일을 남기는 삭제

SQL*Plus (SYSDBA)데이터 또는 파일을 삭제함, 되돌릴 수 없음
CREATE TABLESPACE ts777
  DATAFILE '<DATAFILE_DIR>/ts777.dbf' SIZE 10M;

DROP TABLESPACE ts777 INCLUDING CONTENTS;
OS 셸 (oracle 사용자)조회만 함
ls -l <DATAFILE_DIR>/ts777.dbf

결과 해석:

실습 기록: AND DATAFILES 없이 지운 뒤에도 운영체제에 ts777.dbf 파일이 남아 있었음
실습에서는 데이터 파일 경로를 직접 지정해 만들었음(OMF 사용 여부 확인 불가)
남은 파일은 운영체제 명령으로 지워야 함

#읽기 전용 전환

수업 자료에는 읽기 전용 실습 명령이 없음
구문은 ALTER TABLESPACE <TABLESPACE_NAME> READ ONLY와 READ WRITE임

#사용 조건과 주의사항

IMMEDIATE 오프라인은 매체 복구가 따라오므로 NORMAL, TEMPORARY를 먼저 씀

기본 테이블스페이스로 배정된 사용자가 있는 테이블스페이스를 오프라인으로 바꾸기 전에 사용자 배정을 바꾸는 것을 검토하라고 공식 문서가 권함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기