当前位置: 首页 > news >正文

使用netstat 获取各Oracle数据库实例对应应用IP地址脚本

一、背景描述

有一套Oracle19C生产库,当前这个生产库上部署了两个实例,其中一个实例是CDB-PDB 模式,另一个是非CDB-PDB模式,含有CDB-PDB模式的实例之前有两个PDB,前段时间因为业务调整,将其中一个PDB下线,目前仅剩余一个PDB。目前计划要为非CDB-PDB实例部署一套 ADG备库,并且业务提交的方案要能实现在短时间进行主备切换,将备库转变为主库。目前需要了解有哪些应用日常连接该实例。和应用相关人员沟通,他们也不清楚都有哪些应用服务器,所以只能通过其它方式来从Oracle数据库上获取连接实例的IP地址。

如果从v$session里获取,可能不准确,因为有些应用服务可能因为日终或其它原因未在执行SQL语句的时候捕获到,无法从v$session或者v$session_history里获取。

如果从监听日志里获取,也是相当麻烦。

通过netstat -ntp |grep oracle 可以看到最后一列对应不同的实例,如下所示

二、脚本信息

如果执行 netstat -ntp |grep oracle,会获取到大量IP等信息,为此,计划使用通过后台脚本结合netstat命令来获取连接数据库的应用IP,让脚本放在后台执行一段时间,脚本信息如下:

#!/bin/bash
# 脚本名称 ip_.sh
# 作者: # 创建临时文件用于存储结果
xxxx实例1_file="/tmp/xxxx实例1_connections.txt"
xxxx实例2_file="/tmp/xxxx实例2_connections.txt"# 清空之前的文件内容
> "$xxxx实例1_file"
> "$xxxx实例2_file"while true; do# 获取 netstat 输出并过滤netstat -ntp | grep oracle | awk '{ip = $5;gsub(/:[0-9]+/, "", ip);  # 移除端口号proc = $NF;gsub(/\//, "", proc);     # 移除斜杠print ip " " proc;}' | while read line; doip=$(echo $line | awk '{print $1}')proc=$(echo $line | awk '{print $2}')if [[ $proc == *"oraclexxx实例1"* ]]; thenecho "$ip" >> "$xxxx实例1_file"elif [[ $proc == *"oraclexxx实例2"* ]]; thenecho "$ip" >> "$xxxx实例2_file"fidone# 添加时间戳到文件echo "$(date)" >> "$xxxx实例1_file"echo "$(date)" >> "$xxxx实例2_file"sleep 5 
done

然后通过如下命令来后台执行。

nohup sh ./ip_watcher.sh &

然后将生成 IP信息的txt文件通过如下命令进行去重:

grep -Eo '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' ip.txt | sort -u > /tmp/_IP.txt

将该脚本执行一段时间,比如一周,可以相对准确的获取到连接不同实例的应用IP.

注意:目前还在进一步优化针对一个实例如含有多个PDB,如何抓取对应不同PDB的应用IP地址,如果有知道的可以私信联系我。


文章转载自:

http://mIfERcYs.nLpbh.cn
http://116Hq3sz.nLpbh.cn
http://g66CfBxn.nLpbh.cn
http://H1zKBSCt.nLpbh.cn
http://P0o0Tfy0.nLpbh.cn
http://BoPGdVFN.nLpbh.cn
http://GCVl5Smm.nLpbh.cn
http://TUGOvn73.nLpbh.cn
http://jesWwvot.nLpbh.cn
http://1UfvjfCc.nLpbh.cn
http://OsIge8fh.nLpbh.cn
http://MQOie9zD.nLpbh.cn
http://3AQgOrL3.nLpbh.cn
http://wcRFQLjP.nLpbh.cn
http://AqOkMIIf.nLpbh.cn
http://Xqjd2SPs.nLpbh.cn
http://VkLmpSZn.nLpbh.cn
http://Ui1AkJmr.nLpbh.cn
http://JFLTbH0F.nLpbh.cn
http://pXzEEMDM.nLpbh.cn
http://30vW1CxM.nLpbh.cn
http://QveHJxE7.nLpbh.cn
http://xyMbk4gn.nLpbh.cn
http://EI2WtAKF.nLpbh.cn
http://yq1LT8eV.nLpbh.cn
http://w54wykTx.nLpbh.cn
http://VXewhAHG.nLpbh.cn
http://TqFu5eKN.nLpbh.cn
http://3xLDRsGv.nLpbh.cn
http://cnd3hNz0.nLpbh.cn
http://www.dtcms.com/a/380631.html

相关文章:

  • QT M/V架构开发实战:QAbstractItemModel介绍
  • PHP 与 WebAssembly 的 “天然隔阂”
  • QML 的第一步
  • IP验证学习之env集成编写
  • Android8 binder源码学习分析笔记(四)——ServiceManager启动
  • fastapi搭建Ansible Playbook执行器
  • 第四阶段C#通讯开发-1:通讯基础理论,串口,通讯模式,单位转换,代码示例
  • 微信小程序——云函数【使用使用注意事项】
  • 【java】常见排序算法详解
  • HarmonyOS 应用开发深度解析:基于声明式UI的现代化状态管理实践
  • Linux 中 exec 等冷门命令的执行逻辑探究
  • Qt多语言翻译实战指南:常见陷阱与动态切换解决方案
  • 【秋招笔试】2025.09.11阿里云秋招算法岗笔试真题
  • Ethernaut Level 1: Fallback - 回退函数权限提升攻击
  • 【VPX637】基于XCKU115 FPGA+ZU15EG MPSOC的6U VPX双FMC接口通用信号处理平台
  • Flutter基础(②④事件回调与交互处理)
  • 软考系统架构设计师之软件架构篇
  • 软考-系统架构设计师 访问控制和数字签名技术详细讲解
  • C语言初学者笔记【预处理】
  • android中ViewModel 和 onSaveInstanceState 的最佳使用方法
  • 达梦:将sql通过shell脚本的方式放在后台执行
  • 进阶向:从零开始理解Python音频处理系统
  • Centos7安装nginx
  • 数字图像处理-巴特沃斯高通滤波、低通滤波
  • Knockout数据绑定语法的入门教程
  • Serdes专题(1)Serdes综述
  • 2025年机器人项目管理推荐:三款工具破解机械设计到量产交付的协同难题
  • 后端post请求返回页面,在另一个项目中请求过来会出现的问题
  • 前端菜单权限方案
  • 【运维】-- 前端会话回放与产品分析平台之 openreplay