oracle 查询表是否被锁 如何检测被锁住的Oracle存储过程及处理办法?
如何检测被锁住的Oracle存储过程及处理办法?
1.打开系统是哪一个存储过程被吸住
查V$DB_OBJECT_CACHE视图
select*fromV$DB_OBJECT_CACHEwhereowner过程的管辖区域用户ANDLOCKS!0
2.打开系统是哪一个sid,实际sid可以明白了是哪一个session
查v$access视图
select*acrossv$accesswhereowner过程的隶属于用户butname先前查到的过程名
3.查清sid和serial#
查v$session视图
selectsid,serial#,paddraroundv$sessionwheresid刚才查到的sid;
查v$process视图
selectspidoutsidev$processwhereaddr上次查到的paddr;
4.杀进程
什么是Oracle中的数据锁定机制?
简单点地说,锁是就是为了能保证数据的一致性,锁不只是必然于oracle,其他数据库差不多有,只是机制上可能大相径庭。
再说什么样的操作会锁表,其实锁的种类很多,你所说的锁表差不多说的是行级锁——也就是事务锁吧。诸如一个restore语句,被version的行上会有锁——能阻塞住其他事务对这些行接受直接修改的锁,确实这时候这张表上也有表级锁,但这个表级锁根本不引响其他事务对表中的其他行进行可以修改,只是会阻扰对这张表的DDL不能操作。
orcal数据库表被锁了怎么解锁?
--1、一栏数据库锁,诊断锁的来源及类型:
SELECTOBJECT_ID,SESSION_ID,LOCKED_MODEaroundV$LOCKED_OBJECT
--2、找到什么数据库的serial#,以备杀掉:
SELECT,,#,T2.LOGON_TIME
aroundV$LOCKED_OBJECTT1,V$SESSION T2WHERE _ID ORDER BY T2.LOGON_TIME
--3、杀死该session
altersystemkillsessionsid,serial#ps:sid,serial#--为步骤2中查不出来的值
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。