제3장 DBMS_APPLICATION_INFO

내용 목차

3.1. 개요
3.2. 프러시저
3.2.1. READ_CLIENT_INFO
3.2.2. READ_MODULE
3.2.3. SET_ACTION
3.2.4. SET_CLIENT_INFO
3.2.5. SET_MODULE
3.2.6. SET_SESSION_LONGOPS

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

3.1. 개요

DBMS_APPLICATION_INFO는 V$SESSION, SYS._VT_SESSION_LONGOPS 뷰의 값을 변경하는 패키지이다.

3.2. 프러시저

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

3.2.1. READ_CLIENT_INFO

현재 세션의 client_info 값을 읽는다.

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

  • 프로토타입

    DBMS_APPLICATION_INFO.READ_CLIENT_INFO
    (
        client_info         OUT         VARCHAR2
    );
  • 파라미터

    파라미터설명
    client_info세션으로부터 읽을 client info 값이다.
  • 예제

    DECLARE
       client_info VARCHAR2(64);
    BEGIN
       DBMS_APPLICATION_INFO.READ_CLIENT_INFO(client_info);
       DBMS_OUTPUT.PUT_LINE(client_info);
    END;
    /

3.2.2. READ_MODULE

현재 세션의 모듈 정보와 액션 정보를 읽는 프러시저이다.

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

  • 프로토타입

    DBMS_APPLICATION_INFO.READ_MODULE
    (
        module_name         OUT         VARCHAR2, 
        action_name         OUT         VARCHAR2
    );
  • 파라미터

    파라미터설명
    module_name현재 세션의 module 값이다.
    action_name현재 세션의 action 값이다.
  • 예제

    DECLARE
        module_name VARCHAR(64);                                                       
        action_name VARCHAR(64);                                                      
    BEGIN
        DBMS_APPLICATION_INFO.READ_MODULE(module_name, action_name);
        DBMS_OUTPUT.PUT_LINE(module_name);
        DBMS_OUTPUT.PUT_LINE(action_name);                                                    
    END;
    /

3.2.3. SET_ACTION

현재 세션의 액션 이름을 지정한다.

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

  • 프로토타입

    DBMS_APPLICATION_INFO.SET_ACTION
    (
        action_name         IN          VARCHAR2
    );
  • 파라미터

    파라미터설명
    action_name세션에 저장할 액션 이름이다. 64bytes 이상의 값은 잘린다.
  • 예제

    CREATE TABLE NEW_DATA_TBL(DATA NUMBER)
    /
    
    BEGIN 
        DBMS_APPLICATION_INFO.SET_ACTION('데이터 추가');
        INSERT INTO NEW_DATA_TBL VALUES(1);
        INSERT INTO NEW_DATA_TBL VALUES(2);
        COMMIT;
        DBMS_APPLICATION_INFO.SET_ACTION(NULL);
    END;
    /

3.2.4. SET_CLIENT_INFO

현재 세션의 클라이언트 정보를 지정한다.

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

  • 프로토타입

    DBMS_APPLICATION_INFO.SET_CLIENT_INFO
    (
        client_info         IN          VARCHAR2
    );
  • 파라미터

    파라미터설명
    client_info현재 세션 내에 저장될 client_info이다. 64bytes 이상의 값은 잘린다.
  • 예제

    BEGIN 
        DBMS_APPLICATION_INFO.SET_CLIENT_INFO('my_client_info');
    END; 
    /
    
    SELECT sid, client_info FROM V$SESSION WHERE client_info = 'my_client_info';

3.2.5. SET_MODULE

현재 세션의 모듈 이름을 지정한다.

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

  • 프로토타입

    DBMS_APPLICATION_INFO.SET_MODULE
    (
        module_name         IN          VARCHAR2, 
        action_name         IN          VARCHAR2
    );
  • 파라미터

    파라미터설명
    module_name세션에 저장할 모듈 이름이다. 64bytes 이상의 값은 잘린다.
    action_name세션에 저장할 액션 이름이다. 64bytes 이상의 값은 잘린다.
  • 예제

    CREATE TABLE NEW_DATA_TBL(DATA NUMBER)
    /
    
    BEGIN 
        DBMS_APPLICATION_INFO.SET_MODULE('데이터 추가', '새로운 데이터 인서트');
        INSERT INTO NEW_DATA_TBL VALUES(1);
        INSERT INTO NEW_DATA_TBL VALUES(2);
        COMMIT;
        DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL);
    END;
    /

3.2.6. SET_SESSION_LONGOPS

SYS._VT_SESSION_LONGOPS 뷰의 값을 변경한다.

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

  • 프로토타입

    DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS
    (
         id                  IN OUT      PLS_INTEGER,
         op_name             IN          VARCHAR     DEFAULT NULL,
         sofar               IN          NUMBER      DEFAULT 0,
         totalwork           IN          NUMBER      DEFAULT 0,
         target_desc         IN          VARCHAR2    DEFAULT 'unknown target',
         units               IN          VARCHAR2    DEFAULT NULL
    );
  • 파라미터

    파라미터설명
    id

    사용할 longops의 ID이다.

    -1을 넣은 경우 새로운 ID를 할당 받는다.

    op_name

    SYS._VT_SESSION_LONGOPS에 저장될 opname column 값이다.

    128bytes 이상은 무시된다.

    sofarSYS._VT_SESSION_LONGOPS에 저장될 sofar column 값이다.
    totalworkSYS._VT_SESSION_LONGOPS에 저장될 totalwork column 값이다.
    target_desc

    SYS._VT_SESSION_LONGOPS에 저장될 target_desc column 값이다.

    128bytes 이상은 무시된다.

    units 값이다.

    SYS._VT_SESSION_LONGOPS에 저장될 units column 값이다.

    128bytes 이상은 무시된다.

  • 예제

    DECLARE
        idx PLS_INTERGER := -1;
    
    BEGIN 
    DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS(idx);
    END;
    / 
    SELECT * FROM SYS._VT_SESSION_LONGOPS;