監控database上的客戶端ip地址

zhanglei_itput發表於2009-04-02

v$session 中記錄著客戶端的機器名稱,但是沒有IP , 如果記錄clinet ip 呢,可以考慮用建立觸發器的辦法:

create or replace trigger on_logon_trigger
after logon on database
begin
    dbms_application_info.set_client_info(sys_context( 'userenv', 'ip_address' ) );
end;

這樣當客戶端登陸後,在v$session的client_info列會記錄其相應的IP資訊。
這裡才查詢v$session ,你會發現 v$session 多了一列 記錄客戶端的IP.
select client_info from v$session;
---------------------------------
CLIENT_INFO 
192.16.1.66
弊端:1.如果是中介軟體連線的話,意義不大
            2.當客戶發出conn時,可能會稍慢一些。

2. 利用 DBMS_SESSION 過程包. (未測試)

BEGIN
DBMS_SESSION.set_identifier(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));
END;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9252210/viewspace-584425/,如需轉載,請註明出處,否則將追究法律責任。

相關文章