首页 > 数据库 > Oracle > 数据库登录留痕功能添加
使用场景:没有数据库审计相关产品辅助,数据库也不想开启审计功能,但想要统计数据库用户登录行为的数据。
解决办法:创建触发器,将每一条登录行为信息记录到数据库特定的表中,供随时查询分析。具体代码如下:
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/ ,如需转载,请注明出处,否则将追究法律责任。