当前位置 博文首页 > LuciferLiu_DBA:实战篇:Oracle巧记登录用户IP,无所遁形
- 作者:LuciferLiu,中国DBA联盟(ACDU)成员。
- 目前主要从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。
- 现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。
这里提供几种方式:
- 通过触发器实现
- 查看监听日志
- 通过PLSQL包 DBMS_SESSION
sqlplus / as sysdba
create tablespace test datafile;
sqlplus / as sysdba
create table session_history tablespace test as (select sid,username,program,machine,'000.000.000.000'ipadd,sysdate moditime from v$session where 0=1);
sqlplus / as sysdba
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;
/
sqlplus lucifer/lucifer@10.211.55.110/orcl
sqlplus / as sysdba
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select * from session_history q where q.username not in ('SYS');
至此,第一种方式已经介绍完毕。可以看到,已经可以记录到登录数据库的用户IP地址。
su - oracle
lsnrctl status
tail -100 log.xml
这种方式也是可以实现查看登录IP,但是查询起来过于麻烦,不推荐使用。
sqlplus / as sysdba
drop trigger on_logon_trigger;
drop tablespace test;
sqlplus lucifer/lucifer@10.211.55.110/orcl
sqlplus / as sysdba
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select username,machine,terminal,program,client_info,logon_time from v$session;
从上图的 client_info字段为空,可以看出v$session视图并没有记录到IP。
?
sqlplus / as sysdba
exec DBMS_SESSION.set_identifier(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));
/
sqlplus lucifer/lucifer@10.211.55.110/orcl
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select sys_context('userenv','ip_address') from dual;
从上述实验可以看出,客户端已经可以查询IP地址,说明plsql包但生效,但是不会记录到v$session中,需要创建一个触发器来实现。
sqlplus / as sysdba
create or replace trigger on_logon_trigger
after logon on database
begin
dbms_application_info.set_client_info(sys_context('userenv','ip_address'));
end;
/
sqlplus / as sysdba
select username,machine,terminal,program,client_info,logon_time from v$session where username is not null;
可以看到,IP地址已经被记录了。
通过以上几种方式,我们可以跟踪记录到登录用户的IP地址。至于有什么作用,自己脑补吧。
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
cs