linux中查看oracle进程在做什么,是否sql引起了锁kill掉进程
ps -l 查看系统进程
PID 每个进程的ID。
PPID 每个进程的父进程ID。
UID 每个进程所有者的UID 。
USER 每个进程所有者的用户名。
PRI 每个进程的优先级别。
NI 该进程的优先级值。
SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。
TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。
DSIZE 数据和堆栈的大小。
TRS 文本驻留大小。
D 被标记为“不干净”的页项目。
LIB 使用的库页的大小。对于ELF进程没有作用。
RSS 该进程占用的物理内存的总数量,单位是KB。
SHARE 该进程使用共享内存的数量。
STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;
T代表停止或跟踪状态。
TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程
所占用的时间。且标题会变成CTIME。
根据OS进程号,应该可以查到它正在执行什么SQL语句.
-- 查到oracle OS进程的sid编号:
select ses.sid from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr;
-- 查到此sid连接用户正在执行的SQL语句:
select sql_text from v$sqltext_with_newlines where (hash_value,address)
in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece;
查看oracle的锁是sql语句引起的
查看引起锁的session_id
sync4j启动的进程
select * from v$locked_object where os_user_name='sync4j'
找到seesion_ID=139
找到引起的sql语句
SELECT a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$sqltext c
WHERE a.sid = 139
and a.sql_address=c.address(+)
ORDER BY c.piece
v$sqltext就是引起锁的sql语句了
alter system kill session 'sid,serial#' 杀掉进程
sid,serial#在v$session中可以查到