테이블스페이스와 QUOTA에 대한 이해.
비유하자면 테이블스페이스는 데이터를 저장하는 박스 종류이고, QUOTA는 사용자가 해당 박스에서 사용할 수 있는 크기 제한이다.
1. 테이블스페이스
테이블스페이스 이름 | 역할 및 특징 |
---|---|
SYSTEM | - 데이터 딕셔너리 및 시스템 메타데이터 저장. |
- 모든 데이터베이스에서 반드시 존재하며 필수적. | |
- 사용자 객체를 저장하지 않는 것이 권장됨. | |
SYSAUX | - SYSTEM 테이블스페이스를 보조하며 데이터베이스 구성 데이터를 저장. |
- AWR, Oracle Text 등의 구성 정보 저장. | |
- Oracle 10g 이상에서 도입됨. | |
USERS | - 일반 사용자의 데이터(테이블, 인덱스 등)를 저장하는 데 사용. |
- 기본적으로 사용자 데이터 저장소로 설정됨. | |
TEMP | - 임시 데이터를 저장(예: 정렬 작업, 임시 테이블 등). |
- 작업이 완료되면 데이터가 자동 삭제됨. | |
UNDO | - 트랜잭션 롤백 및 데이터 복구 정보를 저장. |
- 트랜잭션 일관성과 복구를 보장. | |
EXAMPLE (선택적) | - 샘플 스키마 데이터(HR, SCOTT 등)를 저장. |
- 학습 및 테스트 목적으로 제공됨. | |
### 테이블스페이스를 사용해야 하는 이유 | |
테이블스페이스는 Oracle 데이터베이스에서 데이터를 효율적으로 저장, 관리, 보호하기 위한 핵심 구조이다. 사용 이유는 아래와 같다: |
1. 데이터 관리의 논리적 구분
- 데이터를 논리적으로 구분하여 쉽게 관리할 수 있다.
- 예: 시스템 데이터(SYSTEM), 사용자 데이터(USERS), 임시 데이터(TEMP) 등을 별도로 분리.
- 목적별 분리:
- 시스템 데이터와 사용자 데이터를 별도로 저장하면 성능 관리와 보안이 용이하다.
2. 사용자 및 애플리케이션 데이터 격리
- 특정 사용자의 데이터를 별도의 테이블스페이스에 저장하여 독립적 관리 가능.
- 예: 각 사용자의 테이블과 인덱스를 개별 테이블스페이스에 저장.
- 애플리케이션별로 데이터 저장소를 분리하여 유지 보수를 단순화.
3. 저장소 할당 및 제어
- 사용자에게 할당된 저장 용량을 제한할 수 있다.
- 예:
QUOTA
명령어로 특정 테이블스페이스 내의 저장 용량 제한.
- 예:
- 특정 테이블스페이스를 사용하지 못하도록 설정 가능.
- 예: 사용자 A는
USERS
테이블스페이스만 사용하도록 제한.
- 예: 사용자 A는
4. 데이터베이스 성능 최적화
- I/O 성능을 최적화:
- 데이터를 여러 테이블스페이스에 나누어 저장하면 디스크 읽기/쓰기 작업을 병렬로 처리 가능.
- 대규모 데이터베이스에서 테이블스페이스를 분리하면 병목 현상을 줄이고 성능을 향상.
- 병목현상(Bottleneck) 은 시스템이나 프로세스에서 가장 느리거나 제한적인 부분이 전체 성능을 제한하는 상황.
5. 데이터 복구 및 백업 관리
- 테이블스페이스 단위로 백업 및 복구가 가능.
- 예: 특정 테이블스페이스에 문제가 생겼을 경우 해당 테이블스페이스만 복구 가능.
- 데이터 손실 위험을 줄이고, 장애 복구 작업을 단순화.
6. 보안 및 접근 제어
- 테이블스페이스 단위로 접근 권한을 설정하여 데이터를 보호.
- 특정 테이블스페이스에 데이터 저장을 제한하거나 사용자를 차단 가능.
- 예:
ALTER USER
명령으로 사용자가 접근 가능한 테이블스페이스를 제한.
7. 임시 데이터 및 트랜잭션 관리
- 임시 데이터를
TEMP
테이블스페이스에 저장하여 주 데이터 저장소와 분리.- 예: 대규모 정렬 작업, 인덱스 생성 등은 임시 데이터 저장소를 사용.
UNDO
테이블스페이스는 트랜잭션 롤백과 데이터 복구에 활용.
사용 사례
- 대규모 데이터베이스:
- 대규모 애플리케이션에서 테이블스페이스를 분리하여 성능 최적화 및 데이터 관리.
- 사용자별 데이터 분리:
- 여러 사용자가 같은 데이터베이스를 사용하는 경우, 데이터를 개별 테이블스페이스에 저장.
- 데이터 복구 전략:
- 중요한 데이터와 덜 중요한 데이터를 다른 테이블스페이스에 저장하여 효율적으로 백업 및 복구.
결론
테이블스페이스는 데이터의 논리적 구분, 성능 최적화, 보안 강화, 효율적인 관리를 위해 꼭 필요하다. 특히 대규모 데이터베이스에서는 데이터 관리와 성능 향상을 위해 테이블스페이스를 적절히 사용하는 것이 필수적이다.
Oracle에서 QUOTA를 사용한 용량 제한
QUOTA
는 Oracle 데이터베이스에서 사용자가 특정 테이블스페이스에 저장할 수 있는 데이터의 최대 용량을 제한하는 데 사용된다. 이를 통해 각 사용자의 데이터 저장을 제어하고, 특정 테이블스페이스의 과도한 사용을 방지할 수 있다.
용량 제한의 종류
1. 정량적 제한 (정해진 크기)
- 사용자가 테이블스페이스 내에서 사용할 수 있는 저장 공간을 정확한 크기(MB, GB)로 제한.
- 예:
ALTER USER username QUOTA 100M ON users; -- users 테이블스페이스에서 최대 100MB까지 사용 가능 ALTER USER username QUOTA 2G ON users; -- users 테이블스페이스에서 최대 2GB까지 사용 가능
2. 무제한 (UNLIMITED)
- 사용자가 테이블스페이스에서 저장 공간에 제한 없이 데이터를 저장할 수 있도록 설정.
- 예:
ALTER USER username QUOTA UNLIMITED ON users;
3. 제한 제거 (제거된 제한)
- 사용자가 특정 테이블스페이스를 더 이상 사용하지 못하도록 설정.
- 예:
ALTER USER username QUOTA 0 ON users; -- users 테이블스페이스 사용 불가
예제
1. 특정 크기 제한
ALTER USER john QUOTA 50M ON users; -- john은 users 테이블스페이스에서 50MB만 사용 가능
2. 무제한 할당
ALTER USER john QUOTA UNLIMITED ON users; -- john은 users 테이블스페이스를 제한 없이 사용 가능
3. 사용 불가
ALTER USER john QUOTA 0 ON users; -- john은 users 테이블스페이스를 사용하지 못함
권한 및 할당 확인
사용자의 할당량 확인
SELECT tablespace_name, max_bytes FROM dba_ts_quotas WHERE username = 'JOHN';
결과 예시:
TABLESPACE_NAME MAX_BYTES ---------------- --------- USERS 52428800 -- 50MB TEMP -1 -- 무제한 (UNLIMITED)
현재 사용량 확인
SELECT username, tablespace_name, bytes_used, bytes_left FROM dba_ts_quotas WHERE username = 'JOHN';
결과 예시:
USERNAME TABLESPACE_NAME BYTES_USED BYTES_LEFT --------- ---------------- ---------- ---------- JOHN USERS 10485760 41943040 -- 사용량: 10MB, 남은 용량: 40MB
QUOTA 제한의 주요 사용 목적
테이블스페이스 리소스 관리:
- 특정 사용자가 테이블스페이스 전체를 독점하지 못하도록 제한.
데이터베이스 성능 최적화:
- 저장 공간의 과도한 사용으로 인한 성능 저하 방지.
사용자별 데이터 관리:
- 각 사용자의 저장 공간을 독립적으로 제어.
결론
QUOTA
는 테이블스페이스 내 저장 용량을 정량적 제한(예: 100MB), 무제한(UNLIMITED), 또는 사용 불가(0)로 설정할 수 있다. 이는 데이터 저장 관리 및 리소스 효율성을 높이는 데 중요한 역할을 한다.
'데이터베이스 > 용어정리' 카테고리의 다른 글
참조 무결성이란? (0) | 2025.01.27 |
---|---|
User 와 Users 이해. (0) | 2025.01.16 |