日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等

發布時間:2024/9/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle通过sid远程登录,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;

在以上觸發器中需要注意以下幾點

1、該用戶有v_$session與v_$mystat的對象查詢權限,可以在sys下對該擁護顯式授權。

2、sp_write_log原本是一個寫日志的過程,可以置換為自己的需要,如null跳過。

3、必須在創建該觸發器之前創建一個log$information的表記錄登錄信息。

[Q]怎么捕獲整個數據庫的DDL語句或者是說對象結構變化與修改

[A]可以采用DDL觸發器,如

CREATE OR REPLACE TRIGGER tr_trace_ddl

AFTER DDL ON DATABASE

DECLARE

sql_text ora_name_list_t;

state_sql ddl$trace.ddl_sql%TYPE;

BEGIN

FOR i IN 1..ora_sql_txt(sql_text) LOOP

state_sql := state_sql||sql_text(i);

END LOOP;

INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid,

schema_user,schema_object,ddl_sql)

VALUES(ora_login_user,SYSDATE,userenv(‘SESSIONID‘),

sys_context(‘USERENV‘,‘IP_ADDRESS‘),

ora_dict_obj_owner,ora_dict_obj_name,state_sql);

EXCEPTION

WHEN OTHERS THEN

sp_write_log(‘Capture DDL Excption:‘||SQLERRM);

END tr_trace_ddl;

在創建以上觸發器時要注意幾點

1、必須創建一個ddl$trace的表,用來記錄ddl的記錄

2、sp_write_log原本是一個寫日志的過程,可以置換為自己的需要,如null跳過。

oracle怎么捕獲用戶登錄信息,如SID,IP地址等

標簽:declare???trigger???loop???exce???語句???logo???obj???users???ror

本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴 本文系統來源:https://www.cnblogs.com/fanweisheng/p/11113418.html

總結

以上是生活随笔為你收集整理的oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。