Linux资料库
常用命令分类索引
常用命令分类整理(不包含详情)
用户及用户组管理
top命令的基本使用
命令大全示例
书籍学习笔记
菜鸟教程学习笔记
10个实用的shell脚本
linux服务器优化
监控应用服务端口并发量
记录正在执行的SQL
本文档使用 MrDoc 发布
-
+
首页
记录正在执行的SQL
```bash #!/bin/bash # 说明带有★需要现场进行修改的 # ★ 定义端口并发量大于多少值记录日志 MAX_PORT_RECORD=0 # ★ 定义变量 ORACLE_USER="jhemr" ORACLE_PASSWORD="jiahemk" ORACLE_HOST="192.168.104.70" ORACLE_PORT="1521" ORACLE_SID="jhemr" # ★ 定义SQL查询语句 QUERY="SELECT '['||B.USERNAME||']['||C.MODULE||']['||B.MACHINE||'] SQL: '||C.SQL_TEXT as myRecord FROM gV\$PROCESS A, gV\$SESSION B, gV\$SQL C WHERE A.ADDR = B.PADDR AND B.SQL_HASH_VALUE = C.HASH_VALUE;" # ★ 查询间隔时间,以秒为单位 INTERVAL=3 LOG_DIR="/work/log/" # 文件夹不存在创建 if [ ! -d "$LOG_DIR" ]; then mkdir -p "$LOG_DIR" fi # 检查sqlplus是否可用 if ! command -v sqlplus &> /dev/null; then echo "sqlplus could not be found. Please install Oracle client tools." >> $LOG_FILE exit 1 fi # 无限循环进行查询 while true; do # 按日期创建文件夹 current_date=$(date +"%Y-%m-%d") LOG_DIR_DAY=$LOG_DIR$current_date if [ ! -d "$LOG_DIR_DAY" ]; then mkdir -p "$LOG_DIR_DAY" fi NET63=$(netstat -an | grep :6003 | wc -l) # 获取当前时间戳 TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") current_date=$(date +"%Y-%m-%d") LOG_FILE="${LOG_DIR_DAY}/jhSQLMonitor${current_date}.log" if [ "$NET63" -gt "$MAX_PORT_RECORD" ]; then # 使用sqlplus执行查询并将结果写入日志文件 ( echo "SET HEADING OFF" # 关闭SQL*Plus的列标题输出 echo "SET FEEDBACK OFF" # 关闭SQL*Plus的行计数反馈 echo "SET PAGESIZE 0" # 设置SQL*Plus的页大小为0,以便不分页输出 echo "SET LINESIZE 2000" # 设置SQL*Plus的行宽度为200个字符 echo "$QUERY" # 输出存储在$QUERY变量中的SQL查询 echo "EXIT;" # 退出SQL*Plus ) |sqlplus -s "${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_HOST}:${ORACLE_PORT}/${ORACLE_SID}" >> $LOG_FILE 2>&1 # 检查sqlplus命令是否成功执行 if [ $? -ne 0 ]; then echo "[$TIMESTAMP] Error executing sqlplus command." >> $LOG_FILE # 可选:发送通知或采取其他错误处理措施 else # 添加时间戳和分隔符到日志文件(可选) echo "[$TIMESTAMP] Query executed successfully." >> $LOG_FILE echo "-----------------------------------------" >> $LOG_FILE fi else echo "[$TIMESTAMP] port:$NET63 <$MAX_PORT_RECORD so no record sql" >> $LOG_FILE fi # 等待指定的间隔时间 sleep $INTERVAL done ```
孙端己
2024年9月14日 09:38
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码