데이터베이스 연구실.log

Quota와 공간 사용 권한 (RESUMABLE 포함)

테이블스페이스 Quota 조회와 할당, ORA-01536 및 RESUMABLE_TIMEOUT을 이용한 공간 부족 대기 실습

QUOTAUNLIMITED TABLESPACEDBA_TS_QUOTASORA-01536RESUMABLE_TIMEOUT

#핵심 요약

Quota는 사용자가 특정 테이블스페이스에 쓸 수 있는 공간 한도임
테이블스페이스별로 크기나 UNLIMITED를 주고, UNLIMITED TABLESPACE 시스템 권한은 모든 테이블스페이스를 제한 없이 쓰게 함

한도를 넘으면 ORA-01536: space quota exceeded for tablespace가 남
실습에서는 긴 배치가 이 오류로 실패하지 않도록 RESUMABLE_TIMEOUT을 설정해 오류 대신 대기하게 한다고 설명함

RESUMABLE_TIMEOUT은 시스템 수준에서 재개 가능한 문장을 켜고 대기 시간(초)을 정함
기본값은 0임

#필수 명령어 또는 SQL

#Quota 조회

SQL*Plus조회만 함
SELECT username, tablespace_name, max_bytes
  FROM dba_ts_quotas
 WHERE username = '<USERNAME>';

결과 해석:

MAX_BYTES가 사용 한도임
UNLIMITED일 때 표시되는 값은 기재 없음

#Quota 할당

SQL*Plus객체 또는 설정을 변경함
ALTER USER <USERNAME> QUOTA 100M ON users;
ALTER USER <USERNAME> QUOTA UNLIMITED ON users;
GRANT UNLIMITED TABLESPACE TO <USERNAME>;

결과 해석:

수업 자료에는 UNLIMITIED로 철자가 틀려 있어 바로잡았음
UNLIMITED TABLESPACE는 모든 테이블스페이스에 적용되므로 범위가 넓음

#ORA-01536 대응

SQL*Plus객체 또는 설정을 변경함
ALTER USER sales QUOTA 50M ON sales_q1;
SQL*Plus객체 또는 설정을 변경함
ALTER SYSTEM SET resumable_timeout = 7200;
ALTER SYSTEM SET deferred_segment_creation = FALSE;

결과 해석:

Quota 증설은 원인 해소이고, RESUMABLE_TIMEOUT=7200은 공간 할당 실패 시 7200초(2시간) 동안 문장을 멈춰 기다리게 하는 설정으로 Quota 증설과 별개임
DEFERRED_SEGMENT_CREATION 변경은 실습 설정 기록이며 Quota 문제와 혼동하지 않음
실제 적용 결과는 수업 자료에서도 검증되지 않았음

#구문과 옵션 설명

구문 의미 바꿀 입력값
QUOTA <크기> ON <테이블스페이스> 테이블스페이스별 한도 크기, 테이블스페이스
QUOTA UNLIMITED ON <테이블스페이스> 그 테이블스페이스는 무제한 테이블스페이스
GRANT UNLIMITED TABLESPACE 모든 테이블스페이스 무제한 사용자
RESUMABLE_TIMEOUT 재개 가능한 문장의 대기 시간(초)
0이면 사용 안 함
초

RESUMABLE_TIMEOUT은 ALTER SESSION과 ALTER SYSTEM으로 바꿀 수 있고 PDB에서도 바꿀 수 있음
범위는 0부터 2^31-1초임(Oracle Database Reference 19c E96196-45, RESUMABLE_TIMEOUT)

#사용 조건과 주의사항

재개 가능한 문장이 실제로 멈췄을 때 확인하고 처리하는 방법(관련 뷰, 권한)은 기재 없음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

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

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