记录Oracle用户的登录信息

php中文网
发布: 2016-06-07 17:13:08
原创
1342人浏览过

为了统计哪些用户在登录使用数据库,以及其他用途,需要记录登录数据库的信息,以及尝试登录数据库失败的信息,以下几个trigger可

为了统计哪些用户在登录使用数据库,以及其他用途,需要记录登录数据库的信息,以及尝试登录数据库失败的信息,以下几个trigger可以搞定。
创建记录用户信息的table
CREATE TABLE oram.LOGIN_LOG
(
AUDSID       NUMBER,
SID          NUMBER,
SERIAL#      NUMBER,
LOGIN_TIME   DATE,
LOGOUT_TIME  DATE,
USERNAME     VARCHAR2(30 BYTE),
MACHINE      VARCHAR2(64 BYTE),
IP           VARCHAR2(20 BYTE),
PROGRAM      VARCHAR2(48 BYTE)
);
通过trigger记录Oracle用户的登录信息
CREATE OR REPLACE TRIGGER login_on_info
/*******************************************************
author:dbabc.net
time  :2011/12/14
功能:记录登录数据库的用户信息
说明:要以sys用户创建触发器,insert 的表可以是任意用户的
********************************************************/
AFTER LOGON
ON DATABASE
BEGIN
INSERT INTO oram.login_log
SELECT   audsid,
SID,
serial#,
SYSDATE,
NULL,
username,
machine,
SYS_CONTEXT ('USERENV', 'IP_ADDRESS'),
program
FROM   v$session
WHERE       SID IN (SELECT   SID
FROM   v$mystat
WHERE   ROWNUM = 1)
AND audsid = SYS_CONTEXT ('USERENV', 'SESSIONID')
AND program NOT LIKE 'JDBC%'
AND username 'SYSMAN'
AND TYPE 'BACKGROUND';
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
/
通过trigger更新用户登出数据库的时间
CREATE OR REPLACE TRIGGER login_off_info
/*******************************************************
author:dbabc.net
time  :2011/12/14
功能:更新用户登出数据库的时间
说明:要以sys用户创建触发器
********************************************************/
BEFORE LOGOFF
ON DATABASE
BEGIN
UPDATE   oram.login_log
SET   LOGOUT_TIME = SYSDATE
WHERE       audsid = USERENV ('SESSIONID')
AND SID = (SELECT   SID
FROM   v$session s
WHERE   SID IN (SELECT   SID
FROM   v$mystat
WHERE   ROWNUM = 1))
AND serial# = (SELECT   serial#
FROM   v$session s
WHERE   SID IN (SELECT   SID
FROM   v$mystat
WHERE   ROWNUM = 1));
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
/
通过trigger记录登录数据库失败哦信息到alert日志
CREATE OR REPLACE TRIGGER logon_denied_to_alert
/*******************************************************
author:dbabc.net
time  :2011/12/14
功能:记录登录数据库失败哦信息到alert日志中
说明:要以sys用户创建触发器
********************************************************/
AFTER SERVERERROR
ON DATABASE
DECLARE
MESSAGE     VARCHAR2 (120);
IP          VARCHAR2 (15);
v_os_user   VARCHAR2 (80);
v_module    VARCHAR2 (50);
v_action    VARCHAR2 (50);
v_pid       VARCHAR2 (10);
v_sid       NUMBER;
BEGIN
IF (ora_is_servererror (1017))
THEN
IF SYS_CONTEXT ('userenv', 'network_protocol') = 'tcp'
THEN
IP := SYS_CONTEXT ('userenv', 'ip_address');
ELSE
SELECT   DISTINCT sid INTO v_sid FROM sys.v_$mystat;
SELECT   p.SPID
INTO   v_pid
FROM   V$PROCESS p, V$SESSION v
WHERE   p.ADDR = v.PADDR AND v.sid = v_sid;
END IF;
v_os_user := SYS_CONTEXT ('userenv', 'os_user');
DBMS_APPLICATION_INFO.READ_MODULE (v_module, v_action);
MESSAGE :=
TO_CHAR (SYSDATE, 'Dy Mon dd HH24:MI:SS YYYY')
|| ' logon denied from '
|| NVL (IP, v_pid)
|| ' '
|| v_os_user
|| ' with '
|| v_module
|| ' '
|| v_action;
sys.DBMS_SYSTEM.ksdwrt (2, MESSAGE);
END IF;
END;
/
通过trigger将登录失败的信息记录到表中,先创建table,当然也可以用上面的table,这里新建了一个表跟上面区分
CREATE TABLE USER_LOGIN_AUDIT
(
  SESSION_ID    NUMBER(10),
  SESSION_USER  VARCHAR2(30 BYTE),
  HOST          VARCHAR2(30 BYTE),
  IP            VARCHAR2(30 BYTE),
  CLIENT        VARCHAR2(50 BYTE),
  OS_USER       VARCHAR2(50 BYTE),
  STATUS        CHAR(1 BYTE),
  LOGIN_TIME    DATE
);
通过trigger记录登录数据库失败哦信息到table中
CREATE OR REPLACE TRIGGER TRI_USER_LOGIN_DENIED_AUDIT
   AFTER SERVERERROR
   ON DATABASE
BEGIN
   IF (ora_is_servererror (1017))
   THEN
      INSERT INTO oram.user_login_audit
        VALUES   (SYS_CONTEXT ('USERENV', 'SESSIONID'),
                  SYS_CONTEXT ('USERENV', 'SESSION_USER'),
                  SYS_CONTEXT ('USERENV', 'HOST'),
                  SYS_CONTEXT ('USERENV', 'IP_ADDRESS'),
                  SYS_CONTEXT ('USERENV', 'MODULE'),
                  SYS_CONTEXT ('USERENV', 'OS_USER'),
                  '9',
                  SYSDATE);
   END IF;
END TRI_USER_LOGIN_DENIED_AUDIT;
/

更多Oracle相关信息见Oracle 专题页面 ?tid=12

简灰服装商城整站 For SHOPEX
简灰服装商城整站 For SHOPEX

SHOPEX简灰服装商城整站源码下载。 安装方法:1.解压上传程序至网站根目录.. 访问:域名/bak.(用户名:admin 密码:123456)2.进入帝国备份王后,配置数据库数据库信息.选择-www.taomoban.net目录.还原数据库.3.修改FTP目录下的config/config.phpphp 数据库连接信息.4.登陆网站后台--清空缓存..5.删除bak文件夹 后台:shopadm

简灰服装商城整站 For SHOPEX 0
查看详情 简灰服装商城整站 For SHOPEX

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号