如何在Oracle上锁定user_tables?
-
13-12-2019 - |
题
我有一台机器的回溯,其中以下查询似乎挂了好几天:
SELECT table_name FROM user_tables
什么可能产生这样的锁?用户永远不能修改此表;并且有很多成功运行此查询的后续实例。
解决方案
所以,由于条件不再存在,所以没有办法告诉发生了什么。
但是,将来,如果再次发生这种情况或类似的事情,您将需要使用Oracle的wait接口。也就是说,看 V$SESSION
.
首先,您需要确定进程是在旋转(即在CPU上)还是阻塞(即等待等待事件)。确定这一点的方法是看 STATE
专栏:
- 如果状态是
'WAITING'
, ,则会话被阻止。如果是这种情况,那么事件列应该描述会话正在等待的事件。 - 如果状态不是"等待",那么会话在CPU上,事件列是它等待的最后一件事。
- 如果状态是
'WAITED KNOWN TIME'
, ,那么WAIT_TIME就是以centiseconds为单位等待的时间。 - 如果状态是
'WAITED SHORT TIME'
, ,然后会话等待不到一厘秒。 - 如果状态是
'WAITED UNKNOWN TIME'
, ,那么等待的时间不知道,因为timed_statistics被设置为FALSE的会话。
- 如果状态是
希望有帮助。
不隶属于 StackOverflow