제22장 DBMS_RESULT_CACHE

내용 목차

22.1. 개요
22.2. 프러시저와 함수
22.2.1. BYPASS
22.2.2. FLUSH
22.2.3. INVALIDATE
22.2.4. INVALIDATE_OBJECT
22.2.5. MEMORY_REPORT
22.2.6. STATUS

본 장에서는 DBMS_RESULT_CACHE 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명한다.

22.1. 개요

DBMS_RESULT_CACHE는 DBA가 데이터베이스의 공유 메모리에 존재하는 Result Cache를 제어할 수 있도록 인터페이스를 제공한다.

다음은 DBMS_RESULT_CACHE 패키지 내에 정의된 상수이다.

  • STATUS_BYPS

    STATUS_BYPS CONSTANT VARCHAR(10) := 'BYPASS'
  • STATUS_DISA

    STATUS_DISA CONSTANT VARCHAR(10) := 'DISABLED'
  • STATUS_ENAB

    STATUS_ENAB CONSTANT VARCHAR(10) := 'ENABLED'

22.2. 프러시저와 함수

본 절에서는 DBMS_RESULT_CACHE 패키지에서 제공하는 프러시저와 함수를 알파벳순으로 설명한다.

22.2.1. BYPASS

Result Cache의 BYPASS 모드를 설정하는 프러시저이다.

BYPASS 모드가 켜지면 저장된 결과를 더 이상 사용할 수 없고, 새로운 결과도 저장되지 않는다. 반대로 BYPASS 모드가 꺼지면 Result Cache를 정상적으로 사용할 수 있다.

BYPASS 프러시저의 세부 내용은 다음과 같다.

  • 프로토타입

    DBMS_RESULT_CACHE.BYPASS 
    (
        bypass_mode     IN      BOOLEAN
    );
  • 파라미터

    파라미터설명
    bypass_mode
    • TRUE: Result Cache를 사용할 수 없다.

    • FALSE: Result Cache를 사용할 수 있다.

  • 예제

    BEGIN
        DBMS_RESULT_CACHE.BYPASS(TRUE);
        DBMS_RESULT_CACHE.FLUSH;
    END;
    /

22.2.2. FLUSH

Result Cache에 저장된 모든 객체들을 지우려고 시도한다. 단, 항상 모든 객체가 지워지지는 않는다.

FLUSH 프러시저와 함수의 세부 내용은 다음과 같다.

  • 프로토타입

    • 함수

      DBMS_RESULT_CACHE.FLUSH 
      (
          retain_mem      IN      BOOLEAN DEFAULT FALSE,
          retain_stat     IN      BOOLEAN DEFAULT FALSE
      ) 
      RETURN BOOLEAN;
    • 프러시저

      DBMS_RESULT_CACHE.FLUSH 
      (
          retain_mem      IN      BOOLEAN DEFAULT FALSE,
          retain_stat     IN      BOOLEAN DEFAULT FALSE
      )
  • 파라미터

    파라미터설명
    retain_mem
    • TRUE: Result Cache에 존재하는 유휴 메모리를 유지한다.

    • FALSE: Result Cache에 존재하는 유휴 메모리를 해제한다.

    retain_stat
    • TRUE: 통계정보를 유지한다.

    • FALSE: 통계정보를 지운다.

  • 반환값

    반환값설명
    BOOLEAN모든 객체가 지워진 경우 TRUE를 반환한다.
  • 예제

    BEGIN
        DBMS_RESULT_CACHE.FLUSH;
    END;
    /

22.2.3. INVALIDATE

사용자가 지정한 객체에 종속된 모든 결과를 무효화시킨다.

INVALIDATE 프러시저와 함수의 세부 내용은 다음과 같다.

  • 프로토타입

    • 객체 이름인 경우

      DBMS_RESULT_CACHE.INVALIDATE 
      (
          owner       IN      VARCHAR2,
          name        IN      VARCHAR2
      ) 
      RETURN NUMBER; 
      DBMS_RESULT_CACHE.INVALIDATE 
      (
          owner       IN      VARCHAR2,
          name        IN      VARCHAR2
      );
    • 데이터 사전 번호인 경우

      DBMS_RESULT_CACHE.INVALIDATE 
      (
          obj_id      IN      NUMBER
      ) 
      RETURN NUMBER; 
      DBMS_RESULT_CACHE.INVALIDATE 
      (
          obj_id      IN      NUMBER
      );
  • 파라미터

    파라미터설명
    owner스키마 이름이다.
    name객체 이름이다.
    obj_id데이터 사전 번호이다.
  • 반환값

    반환값설명
    NUMBER무효화시킨 객체 수를 반환한다.
  • 예제

    BEGIN
        DBMS_RESULT_CACHE.INVALIDATE('TIBERO', 'EMP');
    END;
    /

22.2.4. INVALIDATE_OBJECT

사용자가 지정한 결과를 무효화시킨다.

INVALIDATE_OBJECT 프러시저의 세부 내용은 다음과 같다.

  • 프로토타입

    • 결과 객체의 주소인 경우

      DBMS_RESULT_CACHE.INVALIDATE_OBJECT 
      (
          id          IN      BINARY_INTEGER
      ) 
      RETURN NUMBER;
      DBMS_RESULT_CACHE.INVALIDATE_OBJECT 
      (
          id          IN      BINARY_INTEGER
      );
    • 결과 객체의 고유번호인 경우

      DBMS_RESULT_CACHE.INVALIDATE_OBJECT 
      (
          cache_id    IN      VARCHAR2
      ) 
      RETURN NUMBER; 
      DBMS_RESULT_CACHE.INVALIDATE_OBJECT 
      (
          cache_id    IN      VARCHAR2
      );
  • 파라미터

    파라미터설명
    id결과 객체의 주소이다.
    cache_id결과 객체의 고유번호이다.
  • 반환값

    반환값설명
    NUMBER무효화시킨 객체수를 반환한다.
  • 예제

    BEGIN
        DBMS_RESULT_CACHE.INVALIDATE_OBJECT(3);
    END;
    /

22.2.5. MEMORY_REPORT

Result Cache의 메모리 사용량 정보를 화면에 출력해 준다. 단, tbSQL의 serveroutput 옵션이 켜져있어야 한다.

MEMORY_REPORT 프러시저의 세부 내용은 다음과 같다.

  • 프로토타입

    DBMS_RESULT_CACHE.MEMORY_REPORT 
    (
        detailed    IN      BOOLEAN DEFAULT FALSE
    );
  • 파라미터

    파라미터설명
    detailed
    • TRUE: 더 자세한 결과가 출력된다.

    • FALSE: 일반적인 결과가 출력된다.

  • 예제

    BEGIN
        DBMS_RESULT_CACHE.MEMORY_REPORT;
    END;
    /

22.2.6. STATUS

Result Cache의 현재 상태를 반환한다.

STATUS 함수의 세부 내용은 다음과 같다.

  • 프로토타입

    DBMS_RESULT_CACHE.STATUS
    RETURN VARCHAR2;
  • 반환값

    반환값설명
    VARCHAR2
    • STATUS_DISA: Result Cache를 사용할 수 없다.

    • STATUS_ENAB: Result Cache를 사용할 수 있다.

    • STATUS_BYPS: Result Cache를 일시적으로 사용할 수 없다.

  • 예제

    BEGIN
        DBMS_OUTPUT.PUT_LINE(DBMS_RESULT_CACHE.STATUS);
    END;
    /