zoukankan      html  css  js  c++  java
  • [ORACLE]Oracle 数据字典 V$PROCESS

     通过操作系统上的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 视图,我们得以把操作系统和数据库关联了起来。

  • 相关阅读:
    【流水账】2021-06-19 Day-09
    【流水账】2021-06-18 Day-08
    【流水账】2021-06-16 Day-06
    【流水账】2021-06-15 Day-05
    .Net调用Java的实现方法
    优先队列的实例题
    栈的相关程序题
    重载函数
    卡特兰数
    关于全排列的递归
  • 原文地址:https://www.cnblogs.com/tingxin/p/12863669.html
Copyright © 2011-2022 走看看