Oracle—通过操作系统进程查看数据库sql语句

工作中遇到一个问题,某报表运行时间特别长,通过操作系统可以看到一个oracle进程消耗资源比较大,如何能够通过该操作系统进程找到具体SQL呢。记录如下:

1、查看Linux系统进程号

可以通过top动态查看某进程的资源使用情况,也可以通过ps aux查看某进程的相关信息。

 

2、通过v$process查看oracle中对应的进程

SQL> select * from v$process where spid = '25802';

ADDR                    PID SPID                     PNAME USERNAME           SERIAL# TERMINAL                       PROGRAM                                          TRACEID                                                                          .......
---------------- ---------- ------------------------ ----- --------------- ---------- ------------------------------ ------------------------------------------------ -------------------------------------------------------------------------------- .......
0000000358BE4CD0         78 25802                          oracle                 158 UNKNOWN                                                                                                                                     .......

3、通过v$session查看具体的会话

SQL> select sql_id,status from v$session where paddr = '0000000358BE4CD0';

SQL_ID        STATUS
------------- --------
akjssv2gwa7jf ACTIVE

4、通过dbms_xplan.display_cursor查看执行计划

SQL> select * from table(dbms_xplan.display_cursor('akjssv2gwa7jf'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID  akjssv2gwa7jf, child number 0
-------------------------------------

.....有删减......

通过以上步骤就可以通过操作系统的某个进程ID确定到某个sql,然后查看执行计划,进行优化了。其中dbms_xplan.display_cursor这个包还有很多地方需要学习。另起一篇吧。官方文档在这里

 

转载于:https://www.cnblogs.com/xidabei/p/7884471.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值