当你遇到不明身份的用户非法尝试登录而导致帐户锁定而影响正常的开发用户或生产环境时,是否会因为找不到那个不法份子而感到抓狂和无耐,那就试试下面的方法吧。
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') ;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1054835/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/350519/viewspace-1054835/