[20130709]从进程号找到IP地址.txt
今天有人问如果在linux下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 不做端口名称转换。
补充一点,使用netstat也可以, 感谢一个网友的建议:
netstat -tnp | grep
今天有人问如果在linux下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 不做端口名称转换。
补充一点,使用netstat也可以, 感谢一个网友的建议:
netstat -tnp | grep