Найти сеанс заблокированной строки - PullRequest
0 голосов
/ 20 сентября 2018

Я испытываю row lock contention в моей базе данных оракула.Я пытался убить некоторые сессии, чтобы разблокировать их, но эти строки все еще заблокированы.Я точно знаю, какой ряд заблокирован.Могу ли я найти идентификатор сеанса, который заблокировал эту строку.Я могу получить ROWID этой строки.

1 Ответ

0 голосов
/ 21 сентября 2018

Как говорят хорошие люди из AskTom, мы не поддерживаем список заблокированных строк

Но, если вы захотите попробовать это - он покажет вам блокировки от пользователя USER.в вашей базе данных, включая блокировки строк.

SELECT
    p.username   username,
    p.pid        pid,
    s.sid        sid,
    s.serial#    serial,
    p.spid       spid,
    s.username   ora,
    DECODE(l2.type, 'TX', 'TRANSACTION ROW-LEVEL', 'RT', 'REDO-LOG', 'TS', 'TEMPORARY SEGMENT ', 'TD', 'TABLE LOCK', 'TM', 'ROW LOCK'
    , l2.type) vlock,
    DECODE(l2.type, 'TX', 'DML LOCK', 'RT', 'REDO LOG', 'TS', 'TEMPORARY SEGMENT', 'TD', DECODE(l2.lmode + l2.request, 4, 'PARSE '
    || u.name || '.' || o.name, 6, 'DDL', l2.lmode + l2.request), 'TM', 'DML ' || u.name || '.' || o.name, l2.type) type,
    DECODE(l2.lmode + l2.request, 2, 'RS', 3, 'RX', 4, 'S', 5, 'SRX', 6, 'X', l2.lmode + l2.request) lmode,
    DECODE(l2.request, 0, NULL, 'WAIT') wait
FROM
    gv$process p,
    gv$_lock l1,
    gv$lock l2,
    gv$resource r,
    sys.obj$ o,
    sys.user$ u,
    gv$session s
WHERE
    s.paddr = p.addr
    AND s.saddr = l1.saddr
    AND l1.raddr = r.addr
    AND l2.addr = l1.laddr
    AND l2.type <> 'MR'
    AND r.id1 = o.obj# (+)
    AND o.owner# = u.user# (+)
                                                  --AND  u.name = 'GME'
    AND ( :user_name IS NULL
          OR s.username LIKE upper(:user_name) )
ORDER BY
    p.username,
    p.pid,
    p.spid,
    ora,
    DECODE(l2.type, 'TX', 'TRANSACTION ROW-LEVEL', 'RT', 'REDO-LOG', 'TS', 'TEMPORARY SEGMENT ', 'TD', 'TABLE LOCK', 'TM', 'ROW LOCK'
    , l2.type)

Это отчет в SQL Developer.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...