DBMS 1

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

DBMS_ERRLOG

DBMS 1
Tibero 가이드
Tibero System Package Guide
DBMS_ERRLOG
작성자
dataonair
작성일
2021-02-18 10:30
조회
633



제4장DBMS_ERRLOG




내용 목차






4.1. 개요

4.2. 프로시저


4.2.1. CREATE_ERROR_LOG





4.1. 개요




DBMS_ERRLOG는 에러 로깅 테이블(error logging table)을 생성하는 하나의 프로시저를 제공한다.일반적인 DML에서는 에러가 발생하면 실패하고 롤백이 이루어진다. 하지만, DML문에 error_logging_clause를 명시하면 에러를 발생시키지 않고 에러의 내용과 데이터를 에러 로깅 테이블에 기록하고 수행을 계속하게 된다.




4.2. 프로시저







4.2.1. CREATE_ERROR_LOG




DML의 에러 로깅에 사용할 테이블을 만드는 함수이다.

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

  • 프로토타입
    DBMS_ERRLOG.DECRYPT(
    dml_table_name IN VARCHAR2,
    err_log_table_name IN VARCHAR2 DEFAULT NULL,
    err_log_table_owner IN VARCHAR2 DEFAULT NULL,
    err_log_table_space IN VARCHAR2 DEFAULT NULL,
    skip_unsupported IN BOOLEAN DEFAULT FALSE)
    RETURN RAW
  • 파라미터

    파라미터 설명
    dml_table_name DML의 대상 테이블명이다.
    err_log_table_name 에러 로깅 테이블명이다. 명시하지 않으면 ERR$_를 dml_table_name 앞에 붙여서 사용한다.
    err_log_table_owner 에러 로깅 테이블을 생성할 스키마명이다.
    err_log_table_space 에러 로깅 테이블을 생성할 테이블 스페이스명이다.
    skip_unsupported 현재, TRUE 값을 지원하지 않는다. FALSE 값으로 고정되어 있다.
  • 예제
    SQL> create table p (a number primary key);

    Table 'P' created.

    SQL> insert into p values (1);

    1 row inserted.

    SQL> insert into p values (2);

    1 row inserted.

    SQL> insert into p values (3);

    1 row inserted.

    SQL> insert into p values (4);

    1 row inserted.

    SQL> create table f (a number references p(a));

    Table 'F' created.

    SQL> insert into f values (1);

    1 row inserted.

    SQL> insert into f values (3);

    1 row inserted.

    SQL> exec dbms_errlog.create_error_log('f');

    PSM completed.

    SQL> commit;

    Commit completed.

    SQL> insert into f (select 1 from dual union all select 5 from dual)
    log errors reject limit 1;

    1 row inserted.

    SQL> select * from f;

    A
    ----------
    1
    3
    1

    3 rows selected.

    SQL> select * from err$_f;

    TIB_ERR_NUMBER$
    ---------------
    TIB_ERR_MESG$
    --------------------------------------------------------------------------------
    TIB_ERR_ROWID$ TIB_ERR_OPTYP$
    ------------------ --------------------
    TIB_ERR_TAG$
    --------------------------------------------------------------------------------
    A
    --------------------------------------------------------------------------------

    -10008
    INTEGRITY constraint ('SYS'.'SYS_CON25700497') violated: primary key not found.

    I

    5

    1 row selected.