데이터베이스/용어정리

"QUOTA "와 테이블스페이스 설명(종류와 사용 이유).

Blue_bull 2025. 1. 16. 21:16

테이블스페이스와 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 테이블스페이스만 사용하도록 제한.

4. 데이터베이스 성능 최적화

  • I/O 성능을 최적화:
    • 데이터를 여러 테이블스페이스에 나누어 저장하면 디스크 읽기/쓰기 작업을 병렬로 처리 가능.
  • 대규모 데이터베이스에서 테이블스페이스를 분리하면 병목 현상을 줄이고 성능을 향상.
    • 병목현상(Bottleneck) 은 시스템이나 프로세스에서 가장 느리거나 제한적인 부분이 전체 성능을 제한하는 상황.

5. 데이터 복구 및 백업 관리

  • 테이블스페이스 단위로 백업 및 복구가 가능.
    • 예: 특정 테이블스페이스에 문제가 생겼을 경우 해당 테이블스페이스만 복구 가능.
  • 데이터 손실 위험을 줄이고, 장애 복구 작업을 단순화.

6. 보안 및 접근 제어

  • 테이블스페이스 단위로 접근 권한을 설정하여 데이터를 보호.
    • 특정 테이블스페이스에 데이터 저장을 제한하거나 사용자를 차단 가능.
    • 예: ALTER USER 명령으로 사용자가 접근 가능한 테이블스페이스를 제한.

7. 임시 데이터 및 트랜잭션 관리

  • 임시 데이터를 TEMP 테이블스페이스에 저장하여 주 데이터 저장소와 분리.
    • 예: 대규모 정렬 작업, 인덱스 생성 등은 임시 데이터 저장소를 사용.
  • UNDO 테이블스페이스는 트랜잭션 롤백과 데이터 복구에 활용.

사용 사례

  1. 대규모 데이터베이스:
    • 대규모 애플리케이션에서 테이블스페이스를 분리하여 성능 최적화 및 데이터 관리.
  2. 사용자별 데이터 분리:
    • 여러 사용자가 같은 데이터베이스를 사용하는 경우, 데이터를 개별 테이블스페이스에 저장.
  3. 데이터 복구 전략:
    • 중요한 데이터와 덜 중요한 데이터를 다른 테이블스페이스에 저장하여 효율적으로 백업 및 복구.

결론

테이블스페이스는 데이터의 논리적 구분, 성능 최적화, 보안 강화, 효율적인 관리를 위해 꼭 필요하다. 특히 대규모 데이터베이스에서는 데이터 관리와 성능 향상을 위해 테이블스페이스를 적절히 사용하는 것이 필수적이다.


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 테이블스페이스를 사용하지 못함

권한 및 할당 확인

  1. 사용자의 할당량 확인

    SELECT tablespace_name, max_bytes
    FROM dba_ts_quotas
    WHERE username = 'JOHN';

    결과 예시:

    TABLESPACE_NAME   MAX_BYTES
    ----------------  ---------
    USERS             52428800   -- 50MB
    TEMP              -1         -- 무제한 (UNLIMITED)
  2. 현재 사용량 확인

    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 제한의 주요 사용 목적

  1. 테이블스페이스 리소스 관리:

    • 특정 사용자가 테이블스페이스 전체를 독점하지 못하도록 제한.
  2. 데이터베이스 성능 최적화:

    • 저장 공간의 과도한 사용으로 인한 성능 저하 방지.
  3. 사용자별 데이터 관리:

    • 각 사용자의 저장 공간을 독립적으로 제어.

결론

  • QUOTA는 테이블스페이스 내 저장 용량을 정량적 제한(예: 100MB), 무제한(UNLIMITED), 또는 사용 불가(0)로 설정할 수 있다. 이는 데이터 저장 관리 및 리소스 효율성을 높이는 데 중요한 역할을 한다.

'데이터베이스 > 용어정리' 카테고리의 다른 글

참조 무결성이란?  (0) 2025.01.27
User 와 Users 이해.  (0) 2025.01.16