Oracle DBA的Linux脚本

在日常的工作中,Linux系统作为服务器的基础操作系统,其重要性不言而喻。对于数据库管理员(DBA)来说,熟练掌握Linux命令是提升工作效率的关键。

图片

快速定位大文件,释放磁盘空间

du -k * | sort -nr | cut -f2 | xargs -d 
'\n' du -sh | more

这个命令可以帮你快速找到占用大量空间的文件,从而及时清理,避免磁盘空间不足的问题。

Oracle数据库连接追踪


# 按Oracle SID查询客户端IP

netstat -anpT | grep oracleSID | awk  '{print $5}' | grep -o -E  '1.*:' | awk -F  ':'  '{print $1}' | sort
# 按监听端口1521查询客户端IP
netstat -anpT | grep 1521 | awk  '{print $5}' | grep -o -E  '1.*:' | awk -F  ':'  '{print $1}' | sort

通过这两个命令,你可以轻松地找出连接到特定Oracle实例或端口的客户端IP地址,有助于安全审计和故障排查。

断开非本地连接的Oracle会话


kill -9 `ps -ef | grep oracleSID | grep LOCAL=NO | grep -v grep | awk 
'{print $2}'`

当需要强制断开某些客户端与数据库的连接时,这个命令非常有用,它可以帮助你迅速解决问题。

监控网络连接数量


# 查询连接1521端口的进程数

netstat -pan | grep 1521 | wc -l
# 查询来自某台服务器192.168.1.1的连接的进程数
netstat -pan | grep 192.168.1.1 | wc -l

这两个命令能够帮助你了解服务器上的网络活动,特别是对数据库服务器而言,这对于性能监控至关重要。

分析各客户端的连接频率

netstat -apnT | grep 1521 | awk 
'{print $5}' | sort -u | grep -v 1521 | grep -v 
'*' | awk -F 
':' 
'{print $4}' | uniq -c | sort -nr

这个命令可以帮助你了解哪些客户端最常访问你的数据库服务,从而优化资源分配。

显示占用空间最大的文件或目录

du -s * | sort -nr | head

通过这个命令,你可以快速找到磁盘上占用空间最多的前10个文件或目录,对于磁盘管理非常有帮助。

计算指定日期文件的总大小

ls --full-time `find ./* -name 
"log_*.bak"` | grep 
'2024-04-09' | awk 
'{print $9}' | xargs du -ck

如果你需要计算某个特定日期的日志文件总大小,这个命令可以派上用场。

文件清理


# 删除/oracle目录下所有.trc文件

find /oracle -name  "*trc" - print | xargs rm -rf
# 删除3天前/oracle目录下所有.log文件
find /oracle -name  "*.log" -mtime +3 - print | xargs rm -rf

定期清理不再需要的日志和跟踪文件,可以有效节省磁盘空间,同时保持系统的清洁。

进程资源占用分析


# CPU占用最多的前10个进程

ps auxw | head -1; ps auxw | sort -rn -k3 | head -10
# 内存消耗最多的前10个进程
ps auxw | head -1; ps auxw | sort -rn -k4 | head -10
# 虚拟内存使用最多的前10个进程
ps auxw | head -1; ps auxw | sort -rn -k5 | head -10

这三个命令分别用于查找CPU、内存和虚拟内存占用最高的进程,对于诊断系统性能问题非常有帮助。

实时监控I/O性能

iostat -d -x -m 1 3

通过 iostat命令,你可以实时监控磁盘I/O性能,这对于评估存储子系统的健康状况非常重要。

审计CPU使用率

sar -s 08:00:00 -e 10:00:00

sar命令可以用来回顾过去一段时间内的CPU使用情况,非常适合进行长期的趋势分析。




请使用浏览器的分享功能分享到微信等