oracle 阻塞会话

MK0*_*K01 2 oracle oracle-11g-r2 concurrency oracle-enterprise-manager

我正在尝试调查 Oracle 11 RAC 上的一些并发问题。到目前为止,我拥有的最有用的工具是企业管理器的“阻塞会话”视图,它告诉我哪个查询阻塞了其他所有人以及它在等待什么。然而,为了利用这种观点,我需要在问题发生时抓住它。因此,我正在寻找一种向 oracle 查询历史数据的方法,该方法将为我提供类似于企业管理器中“阻止会话”屏幕必须提供的数据。

Jus*_*ave 5

假设您获得使用 AWR 的许可,您可以查询gv$active_session_history视图以获取更新的数据或dba_hist_active_sess_history旧的数据。 gv$active_session_history将拥有每个活动会话在每秒开始时所做的事情的快照,并将保留该数据几个小时。 dba_hist_active_sess_history基本上每 10 个快照都会有数据,gv$active_session_history但它会保留更长时间(无论您的 AWR 保留期是多少)。

这两个视图都有一个BLOCKING_SESSION, BLOCKING_SESSION_SERIAL#, 并且BLOCKING_INST_ID它会告诉你哪个会话持有被阻塞会话正在等待的锁。然后,您还可以查看阻塞会话大约在同一时间运行的查询——阻塞会话很可能在您正在查看的特定快照中不处于活动状态,但它可能在一两秒前出现在快照中。