oracle通过sid远程登录,【DB笔试面试235】在Oracle中,怎么捕获用户登录信息,如SID,IP地址等?...

CREATE OR REPLACE TRIGGER TR_LOGIN_RECORD

AFTER LOGON ON DATABASE

DECLARE

MIUSERSID NUMBER;

MTSESSION V$SESSION%ROWTYPE;

CURSOR CSESSION(IIUSERSID IN NUMBER) IS

SELECT * FROM V$SESSION

WHERE SID=IIUSERSID;

BEGIN

SELECT SID INTO MIUSERSID FROM V$MYSTAT WHERE ROWNUM<=1;

OPEN CSESSION(MIUSERSID);

FETCH CSESSION INTO MTSESSION;

--IF USER EXISTS THEN INSERT DATA

IF CSESSION%FOUND THEN

INSERT INTO LOG$INFORMATION(LOGIN_USER,LOGIN_TIME,IP_ADRESS,AUSID,TERMINAL,

OSUSER,MACHINE,PROGRAM,SID,SERIAL#)

VALUES(ORA_LOGIN_USER,SYSDATE,SYS_CONTEXT ('USERENV','IP_ADDRESS'),

USERENV('SESSIONID'),

MTSESSION.TERMINAL,MTSESSION.OSUSER,

MTSESSION.MACHINE,MTSESSION.PROGRAM,

MTSESSION.SID,MTSESSION.SERIAL#);

ELSE

--IF USER DON'T EXISTS THEN RETURN ERROR

SP_WRITE_LOG('SESSION INFORMATION ERROR:'||SQLERRM);

CLOSE CSESSION;

RAISE_APPLICATION_ERROR(-20099,'LOGIN EXCEPTION',FALSE);

END IF;

CLOSE CSESSION;

EXCEPTION

WHEN OTHERS THEN

SP_WRITE_LOG('LOGIN TRIGGER ERROR:'||SQLERRM);

END TR_LOGIN_RECORD;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值