我有一台机器的回溯,其中以下查询似乎挂了好几天:

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的会话。

希望有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top