oracle记录锁怎么看 oracle如何查看锁表的语句

oracle表中的记录被某个用户锁住了,而且在琐表的进程中找不到,有没有办法解决这个问题?

通过dba_objects查找表的object_id,再查v$lock中id1等于object_id的,在这行里肯定有个不同于你SID的用户拥有了这个表的锁,它肯定在update这个表,长时间没有commit,要么找到这个client让它commit或者rollback,要么通过sid把它kill掉

目前成都创新互联已为1000多家的企业提供了网站建设、域名、虚拟主机、网站托管维护、企业网站设计、宁安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

下面还有几个方法

a. $ORACLE_HOME/rdbms/admin/utllockt.sql 好用!

b.select blocking_session from v$session where blocking_session not is null 可以查出谁会阻塞会话 必须在10g中

c.dba_waiters 可以查询阻塞源和目标

d. dba_blockers 仅有一列阻塞源

如何查看当前ORACLE数据库里面锁的情况

用如下语句查询锁死的表:

1

2

3

4

5

6

7

8

9

10

select p.spid,

a.serial#,

c.object_name,

b.session_id,

b.oracle_username,

b.os_user_name

from v$process p, v$session a, v$locked_object b, all_objects c

where p.addr = a.paddr

and a.process = b.process

and c.object_id = b.object_id;

其中object_name就是被锁的表名,如图:

oracle 查看某条记录是否被锁定

直接去update那条记录 如果不能被跟新 且别的数据可以update 基本可以确认这一条记录被锁住了

oracle 怎么查看数据被锁

1.创建测试表,如下图。

createtabletest_lock(idnumber,valuevarchar2(200));

2.执行append语句;并且不做提交,insert/*+append*/intotest_lockvalues(1,1)如下图。

3.再次执行清表语句,truncatetabletest_lock;报锁表错误,如下图。

4.查看锁表语句,发现被锁表

selectb.object_name,t.*

fromv$locked_objectt,user_objectsb

wheret.object_id=b.object_id

注意事项:

简化数据:可以将复杂的查询创建为其他人可以使用的视图,而不必了解复杂的业务或逻辑关系。这简化并掩盖了视图用户数据的复杂性。

表结构设计的补充:在设计的系统才刚刚开始,大部分的程序直接访问数据表结构,但是随着业务的变化,系统更新,等等,引起了一些表结构不适用,这次修改系统的表结构太大,开发成本较高的影响。

这个时候可以创建一个视图来补充表结构设计,降低开发成本。程序可以通过查询视图直接获得它想要的数据。

添加安全性:视图可以向用户显示表中的指定字段,而不是向用户显示表中的所有字段。在实际开发中,视图通常作为提供数据的一种方式提供,并将只读权限提供给第三方以供查询使用。


分享文章:oracle记录锁怎么看 oracle如何查看锁表的语句
当前链接:http://scyanting.com/article/hjjosp.html