Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Oracle - Lister les verrous posés sur une base de données (locks)

21/04/2022

Voici une requête listant les verrous (locks) posés sur les tables d'une base de données Oracle.

Cette requête croise les tables contenant les requêtes exécutées et les sessions en cours afin de déterminer quelle requête de quelle session provoque un blocage.

WITH liste_requetes AS
    (
    SELECT s.sql_text, s.address, s.hash_value
    FROM v$sqltext s
    ORDER BY s.piece
    )

SELECT
prev_exec_start, c.owner, c.object_type, c.object_name,
 b.status, b.machine, b.osuser, b.program,
 b.SID ||','|| b.SERIAL# ||',@'|| b.INST_ID AS ident_session,
(SELECT WM_CONCAT(sql_text) FROM liste_requetes r WHERE r.address = b.sql_address AND r.hash_value = b.sql_hash_value ) AS SQL

FROM v$locked_object a
INNER JOIN gv$session b ON b.sid = a.session_id
INNER JOIN dba_objects c ON a.object_id = c.object_id
WHERE b.STATUS = 'ACTIVE'
ORDER BY logon_time

Si besoin, en utilisant le champ concaténant SID, SERIAL et INST_I (nommé ident_session), il est possible de fermer la session bloquante :

ALTER system DISCONNECT SESSION '<ident_session>' IMMEDIATE
Dernière modification le 21/04/2022 - Quillevere.net

Rechercher sur le site

fr en rss RSS info Informations