bonjour,

Voilà, je cherche à créer un état /requête qui me sort les verrous sur des tables (j'ai une application de gestion un peu fantaisiste là dessus !)

Pour l'instant, je passe par Toad, mais il lui faut pas moins de dix minutes pour arriver à me faire une vue des verrous (pire, avec les verrous bloquants) ! Quand je capte sa requête et que je l'execute, en effet, c'est très long...

J'ai trouvé deux exemples sur ce forum, mais aucun ne marche...

Exemples ;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT session_id , oracle_username , os_user_name
  FROM V$LOCKED_OBJECT VLO INNER JOIN dba_objects DO ON VLO.object_id = DO.object_id
 WHERE object_name = 'object_name'
   AND owner = 'owner';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
SELECT   /*+ choose */ 
         bs.username "Blocking User", 
         bs.username "DB User", 
         ws.username "Waiting User", 
         bs.sid "SID", 
         ws.sid "WSID", 
         bs.sql_address "address", 
         bs.sql_hash_value "Sql hash", 
         bs.program "Blocking App", 
         ws.program "Waiting App", 
         bs.machine "Blocking Machine", 
         ws.machine "Waiting Machine", 
         bs.osuser "Blocking OS User", 
         ws.osuser "Waiting OS User", 
         bs.serial# "Serial#", 
         DECODE ( 
            wk.TYPE, 
            'MR', 'Media Recovery', 
            'RT', 'Redo Thread', 
            'UN', 'USER Name', 
            'TX', 'Transaction', 
            'TM', 'DML', 
            'UL', 'PL/SQL USER LOCK', 
            'DX', 'Distributed Xaction', 
            'CF', 'Control FILE', 
            'IS', 'Instance State', 
            'FS', 'FILE SET', 
            'IR', 'Instance Recovery', 
            'ST', 'Disk SPACE Transaction', 
            'TS', 'Temp Segment', 
            'IV', 'Library Cache Invalidation', 
            'LS', 'LOG START OR Switch', 
            'RW', 'ROW Wait', 
            'SQ', 'Sequence Number', 
            'TE', 'Extend TABLE', 
            'TT', 'Temp TABLE', 
            wk.TYPE 
         ) lock_type, 
         DECODE ( 
            hk.lmode, 
            0, 'None', 
            1, 'NULL', 
            2, 'ROW-S (SS)', 
            3, 'ROW-X (SX)', 
            4, 'SHARE', 
            5, 'S/ROW-X (SSX)', 
            6, 'EXCLUSIVE', 
            TO_CHAR (hk.lmode) 
         ) mode_held, 
         DECODE ( 
            wk.request, 
            0, 'None', 
            1, 'NULL', 
            2, 'ROW-S (SS)', 
            3, 'ROW-X (SX)', 
            4, 'SHARE', 
            5, 'S/ROW-X (SSX)', 
            6, 'EXCLUSIVE', 
            TO_CHAR (wk.request) 
         ) mode_requested, 
       object_name , 
         TO_CHAR (hk.id1) lock_id1, 
         TO_CHAR (hk.id2) lock_id2 
FROM     v$lock hk, v$session bs, v$lock wk, v$session ws ,  V$LOCKED_OBJECT a , 
dba_objects b 
WHERE    hk.BLOCK = 1 
AND      hk.lmode != 0 
AND      hk.lmode != 1 
AND      wk.request != 0 
AND      wk.TYPE(+) = hk.TYPE 
AND      wk.id1(+) = hk.id1 
AND      wk.id2(+) = hk.id2 
AND      hk.sid = bs.sid(+) 
AND      wk.sid = ws.sid(+) 
AND      a.object_id=b.object_id 
AND      hk.sid=a.session_id 
ORDER BY 1;
Un spécialiste pourrait me donner qq pistes ?