oracle查看处理锁表语句

在Oracle数据库中,如果你想查看当前正在处理的锁定表或者查询与锁定相关的信息,可以使用以下几个视图和工具:

  1. `V$LOCK` 视图:这个视图显示了当前数据库中的所有锁定信息。你可以使用它来查看哪些进程持有锁,哪些进程在等待锁。

    SELECT *
    FROM v$lock
    WHERE blocking_session IS NOT NULL; -- 查看正在阻塞的锁

    2.`V$SESSION` 视图:结合`V$LOCK`视图,可以使用`V$SESSION`视图来获取更多关于会话的信息,比如会话ID、用户名等。

    SELECT s.sid, s.serial#, s.username, l.request, l.blocking_session
    FROM v$session s
    JOIN v$lock l ON s.sid = l.sid;

    3.`V$SESSION_WAIT` 视图:这个视图显示了当前会话正在等待的资源,包括锁。

    SELECT *
    FROM v$session_wait
    WHERE event LIKE '%lock%';

    4.`DBA_LOCKS``DBA_LOCKED_OBJECTS` 视图:这些是DBA权限下的视图,提供了更详细的锁定信息,包括锁定的对象信息。

    SELECT l.request, l.sid, l.serial#, o.owner, o.object_name, o.object_type
    FROM dba_locks l
    JOIN dba_locked_objects o ON l.object_id = o.object_id;

    在Oracle数据库中,如果你需要强制终止一个持有锁的会话,可以使用以下几种方法:

  2. 使用`ALTER SYSTEM KILL SESSION`命令: 这个命令可以用来强制终止一个或多个会话。你需要提供会话的SID和SERIAL#(或者完整的会话ID)。

    ALTER SYSTEM KILL SESSION 'sid,serial#';
    -- 或者
    ALTER SYSTEM KILL SESSION 'session_id';
  3. 注意:使用这个命令会立即终止会话,可能会导致未保存的数据丢失。谨慎使用。

  4. 能用的sql语句
    SELECT
        c.owner,
        c.object_name,
        c.object_type,
        b.sid,
        b.serial#,
        b.status,
        b.osuser,
        b.machine
    FROM
        v$locked_object a,
        v$session b,
        dba_objects c
    WHERE
        b.sid = a.session_id
    AND
        a.object_id = c.object_id;

    技巧:可以用plsqldev.exe客户端提交语句,运行完以后,会有一个提交事务的按钮,点一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值