一些性能方面的告警信息通过dba_outstanding_alerts表都能查到被锁定的表如果长期得不到释放在这里也能查到相关session的sid和serial#
select * from dba_outstanding_alerts
v$locked_object视图可以看到当前被锁定的对象只有那些一直存在的session才有可能是被锁定的因此不能简单匆忙的下结论尤其是在RAC环境中必须查看各个节点以发现相关的session在哪里
select * from v$locked_object
有时候也可以根据对象名来查看锁的信息
select sididtype from v$lock where id=
(select object_id from dba_objects where object_name=upper(mytablename));
找到了引起锁定的session就可以找到对应的sid和serial#
select saddrsidserial#paddrusernamestatus from v$session where sid=
从而可以杀死这个session
SQL> alter system kill session ;
System altered
可以查询Oracle数据库的进程和操作系统进程之间的关联
select spid osuser sprogram from v$session sv$process p
where spaddr=paddr and ssid=
有时候一些进程要在操作系统杀死这时可以用kill pid的命令
[root@erpdevdb ~]# ps ef|grep sqlplus
oracle : pts/ :: sqlplus S @/oracle/home/droptablesql
root : pts/ :: grep sqlplus
[root@erpdevdb ~]# kill
数据库对象锁定引起的阻塞是比较麻烦的事情处理的时候一定要小心谨慎