数据库版本:达梦8
操作系统:麒麟V10
实现方式1:
#!/bin/bash
Path=`pwd`
SQLLOG="${Path}/dmsql.log"
top -Hp `pidof dmserver` -b -n 1|grep dm_sql_thd > cpu.log
PID_LIST=$(top -Hp `pidof dmserver` -b -n 1|grep dm_sql_thd|awk '{print $1}')
for PID in $PID_LIST;do
echo $PID
disql -S SYSDBA/SYSDBA@localhost:5236 >> $SQLLOG <<EOF
set long 10000
set pages 2000 linesize 100
SELECT USER_NAME,THRD_ID, SF_GET_SESSION_SQL(SESS_ID), datediff(ss,last_recv_time,sysdate) FROM v\$SESSIONS where STATE='ACTIVE' and thrd_id=('$PID');
exit
EOF
done
实现方式2:
#!/bin/bash
Path=`pwd`
SQLLOG="${Path}/dmsql.log"
top -Hp `pidof dmserver` -b -n 1|grep dm_sql_thd > cpu.log
PID_LIST=$(top -Hp `pidof dmserver` -b -n 1|grep dm_sql_thd|awk '{print $1}')
for PID in $PID_LIST;do
SQL_1="SELECT USER_NAME,THRD_ID, SF_GET_SESSION_SQL(SESS_ID), datediff(ss,last_recv_time,sysdate) FROM v\$SESSIONS where STATE='ACTIVE' and THRD_ID='"$PID"';"
echo $SQL_1
disql -S 'DMCHK/"DMCHK@JLNX2"'@localhost:5236 >> $SQLLOG <<EOF
set long 10000
set pages 2000 linesize 100
$SQL_1
exit
EOF
done
问题记录:
字符串转换错误:-6111
从图片报错中可以看出展示没有问题,手工复制黏贴也正常执行无报错,但从输出到的文件中可以看到如下内容:
所有获取的PID中有乱码。
解决方式:在top命令中获取PID 加-b即可。
文章
阅读量
获赞