数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle中被锁定的解决办法


发布日期:2019年07月05日
 
Oracle中被锁定的解决办法

一些性能方面的告警信息通过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

数据库对象锁定引起的阻塞是比较麻烦的事情处理的时候一定要小心谨慎

               

上一篇:在Oracle9i里基于函数的仅索引扫描

下一篇:Windows下如何彻底删除Oracle