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
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