oracle 添加登陆数据库触发器--记录IP 地址
----觸發(fā)器--- ---創(chuàng)建中間插入的表
create table session_history tablespace bap_data as (select sid,username,program,machine,'000.000.000.000'ipadd,sysdate moditime from v$session where 0=1);
---創(chuàng)建觸發(fā)器---只要登陸數(shù)據(jù)庫(kù)就觸發(fā)
create or replace trigger on_logon_trigger ?after logon on database ?begin insert into session_history select sid,username,program,machine,sys_context('userenv','ip_address'),sysdate from v$session where audsid = userenv('sessionid'); end;
---查詢(xún)登陸信息
select * from? session_history q where q.username not in ('SYS')
------------直接在數(shù)據(jù)庫(kù)SYS用戶層面修改----(實(shí)際操作是步驟3)
-- 1. 利用triger
begin ???
dbms_application_info.set_client_info(sys_context( 'userenv', 'ip_address' ) );
end;
2. 利用 DBMS_SESSION 過(guò)程包.
BEGIN
DBMS_SESSION.set_identifier(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));
END;
3.我們可以通過(guò)觸發(fā)器
create or replace trigger on_logon_trigger
after logon on database
begin ???
dbms_application_info.set_client_info(sys_context( 'userenv', 'ip_address' ) );
end;
/
4.驗(yàn)證 這樣當(dāng)客戶端登陸后,在v$session的client_info列會(huì)記錄其相應(yīng)的IP信息。
這里才查詢(xún)v$session ,你會(huì)發(fā)現(xiàn) v$session 多了一列 記錄客戶端的IP.
select client_info from v$session;
select count(client_info) from v$session;
?set pagesize 1000 line 1000 select a.description,a.trigger_body from dba_triggers a where a.owner='SYS' AND A.status='ENABLED';
select count(1) from dba_triggers a where a.owner='SYS' AND A.status='ENABLED';
select client_info from v$session where client_info is not? null ;
?
----11G 直接添加就行;12C 需要給 CDB 和每個(gè)PDB 單獨(dú)添加
轉(zhuǎn)載于:https://www.cnblogs.com/ss-33/p/8931889.html
總結(jié)
以上是生活随笔為你收集整理的oracle 添加登陆数据库触发器--记录IP 地址的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20155227《网络对抗》Exp5 M
- 下一篇: 微信背单词类小程序,小鸡单词源码下载,打