注册
达梦8获取操作系统dm_sql_thd对应数据库会话SQL语句
专栏/技术分享/ 文章详情 /

达梦8获取操作系统dm_sql_thd对应数据库会话SQL语句

丁丁 2023/10/11 1391 0 0
摘要

数据库版本:达梦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
image.png
从图片报错中可以看出展示没有问题,手工复制黏贴也正常执行无报错,但从输出到的文件中可以看到如下内容:
image.png
所有获取的PID中有乱码。
解决方式:在top命令中获取PID 加-b即可。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服