資料庫登入留痕功能新增

zhcunique發表於2021-02-05

使用場景:沒有資料庫審計相關產品輔助,資料庫也不想開啟審計功能,但想要統計資料庫使用者登入行為的資料。

解決辦法:建立觸發器,將每一條登入行為資訊記錄到資料庫特定的表中,供隨時查詢分析。具體程式碼如下:

1.建立資訊記錄表。

/* Formatted on 2021/2/5 11:25:14*/

CREATE TABLE login_ip_record

(

   ip         VARCHAR ( 30 ),

   u_name     VARCHAR ( 30 ),

   hostname   VARCHAR ( 60 ),

   OS_USER    VARCHAR ( 30 ),

   t_time     DATE

);


2.建立觸發器。

/* Formatted on 2021/2/5 11:25:32*/

CREATE OR REPLACE TRIGGER logon_ip_control

   AFTER LOGON

   ON DATABASE

DECLARE

   ip         STRING ( 30 );

   USER        STRING ( 30 );

   hostname   STRING ( 60 );

   OS_USER    STRING ( 30 );

   t_time     DATE ;

BEGIN

   SELECT SYS_CONTEXT ( 'USERENV' , 'SESSION_USER' ) INTO USER FROM DUAL ;

 

   SELECT SYS_CONTEXT ( 'USERENV' , 'IP_ADDRESS' ) INTO ip FROM DUAL ;

 

   SELECT REPLACE (SUBSTR (SYS_CONTEXT ( 'USERENV' , 'HOST' ), 1 , 30 ), '\' , ':' )

     INTO hostname

     FROM DUAL ;

 

   SELECT SYS_CONTEXT ( 'USERENV' , 'OS_USER' ) INTO OS_USER FROM DUAL ;

 

   SELECT SYSDATE INTO t_time FROM DUAL ;

 

   INSERT INTO login_ip_record

        VALUES ( ip ,

                USER,

                hostname ,

                OS_USER ,

                t_time );

 

   COMMIT;

END;

/




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994536/viewspace-2756261/,如需轉載,請註明出處,否則將追究法律責任。

相關文章