Oracle Database 10g 부터 테이블스페이스의 디스크 공간 사용을 사전적으로 관리할 수 있도록 하는 기능을 제공한다.

  • 데이터베이스 alert를 통하여 DBA로 하여금 공간 부족 오류가 발생하기 전에 미리 필요한 조치를 취할 수 있도록 함.
  • 테이블스페이스의 공간 사용 기록을 AWR에 저장함으로써, 데이터베이스의 공간 사용 경향 분석 및 용량 계획을 도움.

테이블스페이스 임계값 (Tablespace threshold)

테이블스페이스 임계값은 테이블스페이스의 “가득 찬 정도”에 의해 정의된다. 이는 사용량/할당량의 백분율로 표현될 수 있다.

이러한 임계값은 다시 Warning 임계값과 Critical 임계값의 두 단계로 정의된다.

조건

  • 초기화 파라미터 COMPATIBLE >= 10.0 일 것.
  • 테이블스페이스는 Locally Managed 테이블스페이스일 것.

상세 기능

DBA는 테이블스페이스 별로 임계값을 지정할 수 있다. 만일 아무 것도 명시하지 않으면, 먼저 데이터베이스 전체에 대한 기본값이 적용되며,

그 값은 Warning 임계값 85%, Critical 임계값 97%이다.

다만 migrate된 데이터베이스의 경우 편의상 null로 자동 설정되어 alert 기능이 off 된다.

백그라운드 프로세스인 MMON이 매 10분마다 테이블스페이스의 공간 사용량을 정의된 임계값과 비교하는 계산을 수행하며 그 결과를 내부 테이블에 저장한다.

만일 사용량이 임계값을 초과하는 경우, 적절한 alert가 발생된다. (RAC 환경의 경우 인스턴스마다 MMON이 있지만 각자의 활동은 동기화되며,

임계값의 초과 상황을 제일 처음 발견한 MMON이 alert를 생성하게 된다.)

이제 DBA는 적절한 조치에 의해 해당 공간 문제를 미리 해결할 수 있다.

이때 그 액션을 수행한 세션이 앞서 언급한 내부 테이블을 업데이트하게 되며 이것이 MMON의 다음 번 체크에서 확인됨으로써 해당 alert가 해제될 수 있는 것이다.

사용 방법

크게 세가지의 사용자 인터페이스가 제공된다.

 

관련된 동적 성능 뷰 및 딕셔너리 뷰를 이용한 조회

테이블스페이스 임계값은 딕셔너리 뷰 DBA_THRESHOLDS로부터 확인할 수 있으며, 같은 정보가 WRI$_ALERT_THRESHOLD로부터도 제공된다.

다음은 DBA_THRESHOLDS에 대한 최초 조회이다.

SQL> select warning_operator wop,

2 warning_value warn,

3 critical_operator cop,

4 critical_value cri,

5 observation_period op,

6 consecutive_occurrences co,

7 instance_name,

8 object_type,

9 object_name,

10 status

11 from dba_thresholds

12 where metrics_name = ‘Tablespace Space Usage’;

WOP WARN COP CRI OP CO INSTANCE_NAME OBJECT_TYPE OBJECT_NAME STATUS

—- —- —- —- — — ————- ———– ————— ——

GT 85 GT 97 1 1 TABLESPACE VALID

>= 87%, >= 97%의 기본값 설정을 확인할 수 있다. Instance_name이 null임은 이 설정이 database-wide한 설정임을 나타내며,

object_type은 tablespace이되 object_name이 null임은 현재 어떤 테이블스페이스에 대해서도 데이터베이스 기본 설정이 override되지 않은 상태임을 보여준다.

 

 

패키지를 사용한 임계값의 읽기/쓰기

테이블스페이스 임계값에 대한 PL/SQL 인터페이스로서 DBMS_SERVER_ALERTS 패키지가 제공된다.

이 패키지의 여러 프로시저들의 파라미터는 DBA_THRESHOLDS / WRI$_ALERT_THRESHOLD 의 각 컬럼들과 대부분 매핑된다.

다음은 DBMS_SERVER_ALERT.SET_THRESHOLD 프로시저를 이용하여 USERS 테이블 스페이스의 임계값을 경고값 70%, 한계값 90%로 수정하는 예이다.

SQL> begin

2 dbms_server_alert.set_threshold(9000, 4, ’70’, 4, ’90’, 10, 1, null, 5, ‘USERS’);

3 end;

/

다시 DBA_THRESHOLDS
조회하여
수행
결과
확인

WOP WARN COP CRI OP CO INSTANCE_NAME OBJECT_TYPE OBJECT_NAME STATUS

—- —- —- —- — — ————- ———– ————— ——

GE 70 GE 90 10 1 TABLESPACE USERS VALID

GT 85 GT 97 1 1 TABLESPACE VALID

USERS 테이블스페이스에 대한 별도의 행이 생성된 것을 알 수 있다.

 

 

Enterprise Manager의 GUI

Enterprise Manager는 딕셔너리 뷰/동적 성능 뷰에 대한 조회 및 DBMS_SERVER_ALERT 패키지의 사용을 GUI로 제공한다.

다음은 “데이터베이스 -> 테이블스페이스 -> 테이블스페이스 편집” 화면의 “임계값” 탭을 통해 본 화면 예이다.

의견

테이블스페이스 임계값은 공간 부족 오류를 사전에 방지할 수 있을 만큼 충분한 시간을 확보할 수 있는 만큼 작게,

그러나 그리 급한 상황이 아님에도 불구하고 alert가 발생하는 것은 방지할 수 있을 정도로 크게 설정하는 것이 이상적일 것이다.

또한 테이블스페이스의 특징별로 다음과 같은 고려를 해야 할 것이다.

 

  • 읽기 전용/오프라인 테이블스페이스의 경우 공간 사용량이 증가하지 않을 것이므로 임계값이나 alert를 사용하지 않도록 해야 할 것이다.
  • Temporary 테이블스페이스 및 Undo 테이블스페이스의 사용량은 일반적인 테이블스페이스와는 달리 workload와 연관된 동적인 특성을 갖고 있으므로, 임계값 또한 보다 동적으로 관리해야 할 것이다.
  • AUTOEXTENSIBLE 데이터파일의 경우 임계값은 파일의 최대 크기로 지정한 값에 의거하여 정해질 것이며, 만일 UNLIMITED 데이터파일이라면 OS의 최대 파일 크기와 연관이 되어 지정되어야 할 것이다.

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

One thought on “[TIP] 테이블 스페이스 모니터링”
  1. Good day! I could have sworn I’ve been to this blog before but after browsing through a few of the posts I realized it’s new to me. Anyways, I’m certainly delighted I came across it and I’ll be bookmarking it and checking back often!

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다