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

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

DB CAFE
Dbcafe (토론 | 기여)님의 2024년 10월 3일 (목) 19:54 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

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

  • 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;
/