메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

오라클 로그인 실패 기록 트리거

DB CAFE

오라클 로그인 실패 기록 트리거

  • DBA 업무 수행 중 로그인 실패 하는 유저를 추적하기 위한 용도
  • 가급적 SYS 계정으로 생성할 것(타계정시 권한 부여 해야함)

실패 로그 테이블 생성

CREATE TABLE FAILED_LOGON_HISTORY ( 
LOGONDT DATE,
USERNAME VARCHAR2(20),
IPADDR VARCHAR2(15),
DBNAME VARCHAR2(15),
OSUSER VARCHAR2(20),
MACINE VARCHAR2(50),
PROGRAM VARCHAR2(50));

트리거 생성

  • 'ORA-1017: invalid username/password; logon denied' 를 IS_SERVERERROR(1017)로 감지
  • V$SESSION 사용자 정보를 에서 캡쳐하여 로그 테이블에 기록함.
CREATE OR REPLACE TRIGGER TRG_FAILED_LOGON 
                    AFTER SERVERERROR ON DATABASE
BEGIN
-- ORA-1017: invalid username/password; logon denied
IF (IS_SERVERERROR(1017)) THEN
INSERT INTO FAILED_LOGON_HISTORY
SELECT SYSDATE AS LOGONDT, SYS_CONTEXT('USERENV' ,'AUTHENTICATED_IDENTITY') AS USERNAME
     , NVL(SYS_CONTEXT ('USERENV', 'IP_ADDRESS'),'Unknown IP') AS IPADDR
     , ORA_DATABASE_NAME AS DBNAME
     , OSUSER
     , MACHINE
     , PROGRAM
  FROM V$SESSION
 WHERE SID = TO_NUMBER(SUBSTR(DBMS_SESSION.UNIQUE_SESSION_ID,1 ,4), 'xxxx')
   AND SERIAL# = TO_NUMBER(SUBSTR(DBMS_SESSION.UNIQUE_SESSION_ID,5 ,4), 'xxxx');

COMMIT;
END IF;
END;
/