首页 > 数据库技术 > 详细

[ORACLE]Oracle 数据字典 V$PROCESS

时间:2020-05-10 17:07:29      阅读:51      评论:0      收藏:0      [点我收藏+]

通过操作系统上的 PID 和 V$PROCESS 视图中的 SPID 关联,就可以找到这个 OS 上的进程在数据库内部的化身,从而可以进行进一步的跟踪诊断,
V$SESSION 视图中记录的 PADDR 就是 V$PROCESS.ADDR 的进一步延伸,通过两者关联,可以向数据库进一步深入。

[root@d4cdb ~]# ps -ef|grep -i oracle|grep -i LOCAL=NO
oracle     5613      1  0 11:26 ?        00:00:01 oracleD4C (LOCAL=NO)
oracle     5813      1  0 11:30 ?        00:00:02 oracleD4C (LOCAL=NO)
oracle     6036      1  0 11:34 ?        00:00:00 oracleD4C (LOCAL=NO)
oracle     6038      1  0 11:34 ?        00:00:02 oracleD4C (LOCAL=NO)
oracle     8648      1  0 12:17 ?        00:00:00 oracleD4C (LOCAL=NO)

  LOCAL=NO 的进程显然是来自应用的远程连接

SELECT /*+ ORDERED */
    sql_text
    FROM v$sqltext a
    WHERE (a.hash_value, a.address) IN (
        SELECT DECODE (sql_hash_value,
                0, prev_hash_value,
                 sql_hash_value
                ),
            DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
        FROM v$session b
        WHERE b.paddr = (SELECT addr
                FROM v$process c
                 WHERE c.spid = &pid))
ORDER BY piece ASC;


1.首先输入一个 pid,这个 pid 即 Process id,也就是在 Top 或 ps 中看到的 PID。
2.通过 pid 和 v$process.spid 相关联我们可以获得 Process 的相关信息。
3.通过 v$process.addr 和 v$session.paddr 相关联,可以获得和 session 相关的所有信息。
4.再结合 v$sqltext,即可获得当前 session 正在执行的 SQL 语句。
可见通过 v$process 视图,我们得以把操作系统和数据库关联了起来。

[ORACLE]Oracle 数据字典 V$PROCESS

原文:https://www.cnblogs.com/tingxin/p/12863669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!