审记所有数据库帐户登录,记录成功或失败事件.

当你遇到不明身份的用户非法尝试登录而导致帐户锁定而影响正常的开发用户或生产环境时,是否会因为找不到那个不法份子而感到抓狂和无耐,那就试试下面的方法吧。

create table tab_logon
(
USERID VARCHAR2(30),
WHO VARCHAR2(30),
PTS VARCHAR2(30),
SERVICE_USER VARCHAR2(30),
IP VARCHAR2(30),
LOGONDATE DATE,
SERVERERROR VARCHAR2(10)
);

CREATE or replace TRIGGER tri_logerror AFTER SERVERERROR ON DATABASE
BEGIN
IF (IS_SERVERERROR (1017)) THEN
INSERT INTO TAB_LOGON VALUES (SYS_CONTEXT('USERENV', 'SESSIONID'),SYS_CONTEXT(
'USERENV', 'SESSION_USER'),SYS_CONTEXT('USERENV', 'TERMINAL'),SYS_CONTEXT('USERE
NV', 'OS_USER'),SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYSDATE,'ORA-1017');
END IF;
END;
/

CREATE or replace TRIGGER TRI_LOGON AFTER LOGON ON DATABASE
BEGIN
INSERT INTO TAB_LOGON VALUES (SYS_CONTEXT('USERENV', 'SESSIONID'),SYS_CONTEXT(
'USERENV', 'SESSION_USER'),SYS_CONTEXT('USERENV', 'TERMINAL'),SYS_CONTEXT('USERE
NV', 'OS_USER'),SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYSDATE,'ORA-0000');
END;
/

如果想记录客户端使用的程序名,可以使用以下查询:

select
SYS_CONTEXT('USERENV', 'SESSIONID'),SYS_CONTEXT(
'USERENV', 'SESSION_USER'),SYS_CONTEXT('USERENV', 'TERMINAL'),SYS_CONTEXT('USERE
NV', 'OS_USER'),SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYSDATE,'ORA-1017',
program, module from v$session where audsid=SYS_CONTEXT('USERENV', 'SESSIONID') ;

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1054835/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/350519/viewspace-1054835/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值