热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实战篇:Oracle巧记登录用户IP,无所遁形

作者简介作者:LuciferLiu,中国DBA联盟(ACDU)成员。目前主要从事OracleDBA工作,曾从事Oracle数据库开发工作&

作者简介


  • 作者:LuciferLiu,中国DBA联盟(ACDU)成员。
  • 目前主要从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。
  • 现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。


前言


  • 日常工作生产,我们一般都通过监听连接Oracle数据库。如果想要记录访问过数据库的用户IP地址,常规方式是无法做到的,但是可以通过一些非常规方式来实现。

在这里插入图片描述


实现

这里提供几种方式:


  • 通过触发器实现
  • 查看监听日志
  • 通过PLSQL包 DBMS_SESSION


1 触发器实现


  • 创建单独表空间存放记录

sqlplus / as sysdba
create tablespace test datafile;

在这里插入图片描述


  • 通过ctas从v$session创建session历史记录表指定表空间test

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);

在这里插入图片描述


  • 创建触发器,当有用户登录时,将记录插入session历史记录表

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;
/

在这里插入图片描述


  • 本机通过lucifer用户登录

sqlplus lucifer/lucifer@10.211.55.110/orcl


  • 查询非SYS用户的登录记录

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地址。


2 查看监听日志


  • 查看监听日志位置

su - oracle
lsnrctl status

在这里插入图片描述


  • 查看监听日志

tail -100 log.xml

在这里插入图片描述
这种方式也是可以实现查看登录IP,但是查询起来过于麻烦,不推荐使用。


3 PLSQL包 DBMS_SESSION


  • 为方便后面测试,先删除第一种方式创建的 触发器和表空间

sqlplus / as sysdba
drop trigger on_logon_trigger;
drop tablespace test;

在这里插入图片描述


  • 测试是否还能看到IP

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。


  • 使用DBMS_SESSION程序包设置可以查询IP地址

sqlplus / as sysdba
exec DBMS_SESSION.set_identifier(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));
/

在这里插入图片描述


  • 主机测试用户登录是否能查看IP地址

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地址
    在这里插入图片描述

从上述实验可以看出,客户端已经可以查询IP地址,说明plsql包但生效,但是不会记录到v$session中,需要创建一个触发器来实现。


  • 创建触发器,记录客户端登录IP

sqlplus / as sysdba
create or replace trigger on_logon_triggerafter logon on database
begindbms_application_info.set_client_info(sys_context('userenv','ip_address'));
end;
/

在这里插入图片描述


  • 查询v$session查看是否有记录IP地址

sqlplus / as sysdba
select username,machine,terminal,program,client_info,logon_time from v$session where username is not null;

在这里插入图片描述
可以看到,IP地址已经被记录了。

通过以上几种方式,我们可以跟踪记录到登录用户的IP地址。至于有什么作用,自己脑补吧。



本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。


推荐阅读
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文介绍了 Python 中的基本数据类型,包括不可变数据类型(数字、字符串、元组)和可变数据类型(列表、字典、集合),并详细解释了每种数据类型的使用方法和常见操作。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
author-avatar
手机用户2502899267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有