请教高手oracle如何记录用户的登陆信息?如用户的IP. 谢谢x_xy(sunny),不知道v$sessin中的SADDR,PADDR记录的是什么信息呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.csdn.net/expert/topic/816/816385.xml?temp=.3292353说的比较清楚。 http://www.itpub.net/showthread.php?s=&threadid=39503&highlight=ORA02085 可以做一个触发器用以下的方式可以監控登入登出的用戶:創建如下的兩張表:create table login_log -- 登入登出信息表( session_id int not null, -- sessionid login_on_time date, -- 登入時間 login_off_time date, -- 登出時間 user_in_db varchar2(30), -- 登入的db user machine varchar2(20), -- 機器名 ip_address varchar2(20), -- ip地址 run_program varchar2(20) -- 以何程序登入);create table allow_user -- 網域用戶表( ip_address varchar2(20), -- ip地址 login_user_name nvarchar2(20) -- 操作者姓名);創建如下的兩個觸發器:create or replace trigger login_on_info -- 紀錄登入信息的觸發器after logon on database Begin insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program) select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program from v$session where AUDSID = USERENV('SESSIONID'); --當前SESSIONEND;create or replace trigger login_off_info -- 紀錄登出信息的觸發器before logoff on database Begin update login_log set login_off_time = sysdate where session_id = USERENV('SESSIONID'); --當前SESSION exception when others then null;END; 你好ttjd(ttjd) ,我就是看了这个帖子拿到数据库上实验,环境为oracle 8.0.6, 系统提示SYS_CONTEXT,USERENV非法,我估计可能8.0.6不支持这些函数.我想知道在v$session中有SADDR和PADDR到底代表什么. bluecetacean(蓝鲸) :好象是竹之草写的吧. 我是用sys.client_ip_address取得用户的ip的你可以试一下 dataguard 搭建出错-着急 请问有first_name last_name时怎么使用nvl方法? oracle10g中将内存参数修改后,不能启动实例了. 数据恢复问题 PLSQL Developer导出的tsv或csv格式的文件怎么导入进去哦? 请问一个关于字符&的问题 新手提问题 imp 和 exp 非常奇怪的问题 明天阿生日,诚邀各位兄弟姐妹进来坐坐,顺便给大家点分数和快乐~ 提问: mr,RT,CF,TS,TX,TM,ST,TT,DX 等等, ORA-02264: 名称已被一现有约束条件占用 树的问题
说的比较清楚。
用以下的方式可以監控登入登出的用戶:
創建如下的兩張表:
create table login_log -- 登入登出信息表
(
session_id int not null, -- sessionid
login_on_time date, -- 登入時間
login_off_time date, -- 登出時間
user_in_db varchar2(30), -- 登入的db user
machine varchar2(20), -- 機器名
ip_address varchar2(20), -- ip地址
run_program varchar2(20) -- 以何程序登入
);create table allow_user -- 網域用戶表
(
ip_address varchar2(20), -- ip地址
login_user_name nvarchar2(20) -- 操作者姓名
);創建如下的兩個觸發器:
create or replace trigger login_on_info -- 紀錄登入信息的觸發器
after logon on database
Begin
insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)
select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program
from v$session where AUDSID = USERENV('SESSIONID'); --當前SESSION
END;create or replace trigger login_off_info -- 紀錄登出信息的觸發器
before logoff on database
Begin
update login_log set login_off_time = sysdate
where session_id = USERENV('SESSIONID'); --當前SESSION
exception
when others then
null;
END;
你可以试一下