Oracle 进程查看v$session

2014-11-24 18:42:17 · 作者: · 浏览: 0

执行下列命令语句


sqlplus / as sysdba <

create tablespace test datafile '/data/test01.dbf' size 10240M;


quit;


EOF


通过ps -ef|grep sqlplus命令得到上面所执行的命令的进程id为:12345


(1)关于v$process


执行下面的SQL是查不到相关的信息:


select * from v$process where spid='12345';


因为这个spid字段对应的并不是我们用ps命令从系统中查询到的进程id,而是这个进程执行的当前SQL的进程id,


也就是上面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所对应的进程id,如果想


通过用ps命令从系统中查询到的进程id查看对应的信息,那么必须使用下面语句:


select spid,sid,process,sql_address from v$session where process='12345'


上面sql中的process就是通过ps查看的进程id,而spid就是里面的sql语句所对应的进程id。


还可以通过上面的sql_address 查看正在执行的SQL语句内容:


select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';


(2)关于v$session


(3)几个相关的SQL


--查看系统进程对应的信息
select se.saddr,se.sid,se.serial#,p.pid,se.paddr,s.sql_id,s.sql_text
from v$session se ,v$process p, v$sqlarea s
where se.paddr=p.addr and se.sql_address=s.address and se.process='&1'
and se.username is not null

--查看所有的会话
select se.username,se.saddr,se.sid,se.serial#,se.process,s.sql_id
from v$session se,v$sqlarea s
where se.sql_address=s.address


--查看会话对应的sql内容
select se.username,se.process,s.sql_text
from v$session se,v$sqlarea s
where se.sql_address=s.address and s.sql_id='&1'