ITPub博客

首页 > 数据库 > Oracle > 数据库登录留痕功能添加

数据库登录留痕功能添加

原创 Oracle 作者:zhcunique 时间:2021-02-05 11:32:59 0 删除 编辑

使用场景:没有数据库审计相关产品辅助,数据库也不想开启审计功能,但想要统计数据库用户登录行为的数据。

解决办法:创建触发器,将每一条登录行为信息记录到数据库特定的表中,供随时查询分析。具体代码如下:

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博客 ” ,链接:https://blog.itpub.net/69994536/viewspace-2756261/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
先后就职于银行、券商等金融机构科技部门,从事数据库管理、自动化运维管理与系统运维相关工作,拥有Oracle 11g OCM/OCP证书,通过CFA二级考试。

注册时间:2021-02-04

  • 博文量
    73
  • 访问量
    499663