暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,如何根据OS进程快速获得DB进程信息与正在执行的语句?

DB宝 2017-08-13
560


Q
题目如下所示:

在Oracle中,如何根据OS进程快速获得DB进程信息与正在执行的语句?


     

A
答案如下所示:



OS上执行top命令之后就可以得到OS进程,那么怎么快速根据OS进程号获得DB信息呢?可以编写如下脚本:

$more whoit.sh

#!/bin/sh

sqlplus nolog <<EOF

connect as sysdba

col machine format a30

col program format a40

set line 200

select sid,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss')  

          from v\$session where paddr in

          ( select addr from v\$process where spid in($1));

            

  select sql_text from v\$sqltext_with_newlines

                  where hash_value in

                  (select SQL_HASH_VALUE from v\$session where

                    paddr in (select addr from v\$process where spid=$1)

                    )

                    order by piece;

exit;

EOF

然后要在OS环境下如下传入OS进程号执行即可:

$./whoit.sh Spid

有了OS进程号后,也可以在数据库中直接查询:

SELECT B.SID,B.SERIAL# ,C.SPID ,B.SQL_ID

FROM   V$SESSION B ,V$PROCESS C

WHERE  B.PADDR=C.ADDR AND C.SPID=XXXX;



DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:230161599

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。


文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论