從程式號找到IP地址

shilei1發表於2013-07-14

今天有人問如果在下top顯示某個程式CPU很忙,如果從spid找到對應的IP地址。

實際上不過是一個反推的過程,一些圖形化工具很容易知道termnial,machine,從這些獲得IP地址還是需要一點功夫的。


一般我以前是ping -a 機器名.

現在我一般使用系統觸發器
CREATE OR REPLACE TRIGGER SYS.on_logon_trigger
   AFTER LOGON ON DATABASE
DECLARE
   v_client_info   v$session.client_info%TYPE;
   v_sid           v$session.SID%TYPE;
BEGIN
   SELECT SYS_CONTEXT ('userenv', 'ip_address')
     INTO v_client_info
     FROM DUAL;

   DBMS_APPLICATION_INFO.set_client_info (v_client_info);
   --增加的程式碼
   DBMS_SESSION.set_identifier (v_client_info);

   --EXECUTE IMMEDIATE 'alter session set tracefile_identifier = ''' || REPLACE (NVL (v_client_info, 'local'), '.', '_') || '''';
END;
/


--這樣v$session的client_info欄位就有IP地址了。[注:如果為NULL是伺服器]


實際上還有一個簡單的方法就是使用lsof命令:

lsof -i :1521 -n -P | grep

-n 不做網路名轉換。
-P 不做埠名稱轉換。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-766220/,如需轉載,請註明出處,否則將追究法律責任。

相關文章