如何使用Oracle查看已被锁定的表格?(oracle查看被锁的表)

Oracle数据库提供了一种管理锁定表格(即当前用户访问和更新数据库表格)的机制,用于维护数据库完整性和并发性。有时,由于随机原因,数据库表会不小心被锁定,如此就需要在Oracle中查找这些锁定表格了。下面,将介绍怎样使用Oracle查看已被锁定的表格的方法。

1、 首先,使用SQL *Plus登录到Oracle数据库服务器:

$ sqlplus username/password@database_name

2、 执行以下查询语句查看已锁定的表:

select O.OBJECT_NAME,O.OBJECT_TYPE,S.SID,S.USERNAME,S.OSUSER,S.MACHINE,S.TERMINAL from sys.v_$locked_object L, 
sys.v_$session S, sys.all_objects O where L.SESSION_ID=S.SID and L.OBJECT_ID=O.OBJECT_ID;

该查询会列举出哪些表已被锁定,以及锁定此表的会话id、用户名、操作系统用户、机器名称和终端名称。

3、 接下来,查看这个会话ID所执行的查询:

select  S.STMT_ID, SQ.SQL_TEXT from sys.v_$session S, sys.v_$sql SQ where S.SQL_ADDRESS=SQ.ADDRESS and  S.SID=&sid;

其中,&sid 是上述查询返回的会话ID。查询结果将返回此会话ID执行的SQL文本。

4、 根据查询结果,你可以使用以下语句取消会话ID所锁定的表:

alter system kill session '&sid;';

其中,&sid 是上述查询返回的会话ID。利用这条命令可以取消所有查询中显示被锁定的会话。

总而言之,要查看Oracle数据库中哪些表被锁定,应当使用上述SQL查询,并根据结果取消锁定,从而维护Oracle数据库的一致性和完整性。


数据运维技术 » 如何使用Oracle查看已被锁定的表格?(oracle查看被锁的表)