【问题标题】:How to find the timestamp of the last lock?如何找到最后一个锁的时间戳?
【发布时间】:2016-04-01 10:08:53
【问题描述】:

我想确定哪个进程锁定了我的表 TABLE1,以及锁定时的时间戳。

我想我应该使用dba_locksgv$session 之类的表,但我是Oracle 新手,对系统表了解不多。

谁能帮我解决这个问题?

【问题讨论】:

    标签: sql oracle locking


    【解决方案1】:

    使用此查询查找上次阻止会话以等待访问特定表的时间:

    select max(sample_time) last_block_time
    from gv$active_session_history
    --Or use this table for further back.
    --from dba_hist_active_sess_history
    where blocking_session is not null
        and current_obj# =
        (
            select object_id
            from dba_objects
            where owner = 'JHELLER'       --Enter the object owner here.
                and object_name = 'TEST1' --Enter the object name here.
        );
    

    这不一定与“上次锁定表是什么时候”相同。表或表中的一行可能已被锁定,但没有会话等待它。并且有可能会话确实在等待它,但不是在示例期间。

    但是,如果某些事情发生的频率不足以出现在会话历史记录表中,那么通常不必担心它的重要性。

    【讨论】:

    • 您的查询给我带来了一些意想不到的结果。有 10 个不同的会话具有 SESSION_TYPE='FOREGROUND'、EVENT = 'log file sync'、SESSION_STATE = 'WAITING' AND BLOCKING_SESSION = 465。我尝试在 v$session 中找到这个 blocking_session,但没有这个会话。所以,我还不能确定阻塞会话
    • @Jdzel GV$ACTIVE_SESSION_HISTORY 是历史性的,阻塞会话可能会立即消失。此外,如果您使用的是集群数据库,请确保您与GV$SESSION 进行比较,而不仅仅是V$SESSION。 (抱歉重播晚了。)
    【解决方案2】:

    您可以查询V$LOCKED_OBJECT 以获取有关当前锁定对象的信息。

    SQL> desc v$locked_object;
     Name                  Null?    Type
     -------------------- -------- ----------------------------
     XIDUSN                         NUMBER
     XIDSLOT                        NUMBER
     XIDSQN                         NUMBER
     OBJECT_ID                      NUMBER
     SESSION_ID                     NUMBER
     ORACLE_USERNAME                    VARCHAR2(30)
     OS_USER_NAME                       VARCHAR2(30)
     PROCESS                        VARCHAR2(24)
     LOCKED_MODE                        NUMBER
    

    Oracle 不保留锁的历史记录。但是,您可以查询 DBA_HIST_ACTIVE_SESS_HISTORY amd V$ACTIVE_SESSION_HISTORY 以获取有关锁定会话的信息,而不是锁定的表。

    【讨论】:

    • Сan 我确定 V$ACTIVE_SESSION_HISTORY 中的哪个会话使用我的表 TABLE1?
    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    相关资源
    最近更新 更多