Bonjour, je dois avoir un lock sur un procédure car impossible de la modifier, supprimer ..
Comment supprimer cette procedure ou le lock sur celle ci ?Code:
1
2 drop procedure p_toto;
Version imprimable
Bonjour, je dois avoir un lock sur un procédure car impossible de la modifier, supprimer ..
Comment supprimer cette procedure ou le lock sur celle ci ?Code:
1
2 drop procedure p_toto;
Code:
1
2
3
4
5 SQL> drop procedure p_toto; drop procedure p_toto * ERREUR à la ligne 1 : ORA-04021: temporisation pendant attente de verrouillage objet SCHEMA.P_TOTO
Bonjour ,
1) Détectez le lock :
2) killez la sessionCode:
1
2
3 SELECT session_id , oracle_username , os_user_name FROM V$LOCKED_OBJECT WHERE object_id =( SELECT object_id FROM dba_objects WHERE object_name ='obejct_name' AND owner ='owner') ;
Jaouad
Et là c'est le drame
Et poutantCode:
1
2
3
4
5
6
7
8 SQL> SELECT session_id , oracle_username , os_user_name FROM V$LOCKED_OBJECT 2 WHERE object_id =( SELECT object_id FROM dba_objects WHERE object_name ='P_TOTO' 3 AND owner ='SCHEMA') ; aucune ligne sélectionnée SQL>
Code:
1
2
3
4
5
6
7
8
9 SQL> SELECT object_id FROM dba_objects WHERE object_name ='P_TOTO' 2 AND owner ='SCHEMA'; OBJECT_ID ---------- 9735 SQL>
essaye de lancer le script :
Code:$ORACLE_HOME/rdbms/admin/catblock.sql
Que donne :
JaouadCode:SELECT * FROM v$access WHERE object =package ;
Citation:
Envoyé par Jaouad
qd àCode:
1
2
3
4 SID OWNER OBJECT ---------- ---------------------------------------------------------------- ------------------------ 22 SCHEMA P_TOTO
Comme je suis pas DBA j'ai pas ce scripts peux tu me l'envoyer ?Citation:
Envoyé par bouyao
il vaut mieux demander au DBA dans ce cas, je crains qu'il voit d'un mauvais oeil que quelqu'un intervienne sur la base sans son accord ;)
le script est :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 select /*+ ordered */ w1.sid waiting_session, h1.sid holding_session, w.kgllktype lock_or_pin, w.kgllkhdl address, decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', 'Unknown') mode_held, decode(w.kgllkreq, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', 'Unknown') mode_requested from dba_kgllock w, dba_kgllock h, v$session w1, v$session h1 where (((h.kgllkmod != 0) and (h.kgllkmod != 1) and ((h.kgllkreq = 0) or (h.kgllkreq = 1))) and (((w.kgllkmod = 0) or (w.kgllkmod= 1)) and ((w.kgllkreq != 0) and (w.kgllkreq != 1)))) and w.kgllktype = h.kgllktype and w.kgllkhdl = h.kgllkhdl and w.kgllkuse = w1.saddr and h.kgllkuse = h1.saddr /
après de kk recherche j'ai trouvé : le scripts créé une vue dba_waiters donc
:twisted: Patience on vas trouverCode:
1
2
3
4
5
6 SQL> select * from dba_waiters; aucune ligne sélectionnée SQL>
Je suis bien d'accord mais il est en vacances, je crois que l'on vas être obligé de de créer la même proc sous un autre nom en attendantCitation:
Envoyé par Fred_D
pour info :
Code:
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 SQL> select /*+ ordered */ w1.sid waiting_session, 2 h1.sid holding_session, 3 w.kgllktype lock_or_pin, 4 w.kgllkhdl address, 5 decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', 6 'Unknown') mode_held, 7 decode(w.kgllkreq, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', 8 'Unknown') mode_requested 9 from dba_kgllock w, dba_kgllock h, v$session w1, v$session h1 10 where 11 (((h.kgllkmod != 0) and (h.kgllkmod != 1) 12 and ((h.kgllkreq = 0) or (h.kgllkreq = 1))) 13 and 14 (((w.kgllkmod = 0) or (w.kgllkmod= 1)) 15 and ((w.kgllkreq != 0) and (w.kgllkreq != 1)))) 16 and w.kgllktype = h.kgllktype 17 and w.kgllkhdl = h.kgllkhdl 18 and w.kgllkuse = w1.saddr 19 and h.kgllkuse = h1.saddr 20 / aucune ligne sélectionnée SQL>
en effet... :aie:Citation:
Envoyé par sygale
Ca ce peut un verrou dans le shared pool
Pour cela
Mai je prefere qu'un dba fasse cette commandeCode:alter system flush shared_pool;
Bon merci pour toutes ces précisions on vas donc faire comme ca et froisser personne ! :wink:
cela évitera les :pan: :scarymov: :sm:
kk1 peux m'expliquer le
Reuse settings ?Code:ALTER FUNCTION [schema.]function COMPILE [DEBUG][REUSE SETTINGS]
La session 22 pose problémeCitation:
Envoyé par sygale
Kill la est ton probléme serat résolu
Jaouad
J'ai killé la session 22
elle est marquée KILLED mais tjs rien à faire sur la procedure ! :?
Code:
1
2
3
4
5
6
7 SQL> SELECT SID,SERIAL#,AUDSID,STATUS,MACHINE,PROGRAM,USERNAME 2 FROM V$SESSION where sid = 22; SID SERIAL# AUDSID STATUS ---------- ---------- ---------- -------- 22 1903 499403 KILLED
tu a essayé ca ?Citation:
Envoyé par bouyao
Te voici dans le probléme des sessions qui sont marqués killed for ever
Il existe deux solutions :
- Arrêt/relance de la base
- Dropper le processus
Tu es sous quelle plateforme ?