2012-12-12 9 views
15

Si è verificato un problema durante il tentativo di aggiornare un valore di colonna in sqlplus.Rimozione dei blocchi in Oracle 10

In sostanza non si completa e si blocca. Mi chiedo se ci sia comunque da rimuovere le serrature in oracolo con la forza?

Ho notato una tabella chiamata v $ locked_object che contiene un ID onject relativo al problema che sto avendo.

Spero di averlo spiegato abbastanza bene.

Grazie in anticipo per qualsiasi aiuto!

+1

Hai trovato _what_ process stava chiudendo l'oggetto e cosa stava facendo quel processo? Sicuramente è meglio risolvere il problema piuttosto che hackerarlo attorno ad esso? (Sono abbastanza sicuro che la risposta alla tua domanda è no). – Ben

risposta

46

questo sarà esattamente servire il vostro scopo:

SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME>; 

Utilizzare il SESSION_ID per trovare il corrispondente SERIAL# con questa affermazione:

SELECT SID, SERIAL# FROM V$SESSION WHERE SID IN (
    SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME> 
); 

Individuare l'incriminato tuple SID, SERIAL# e rilasciare in questo modo:

ALTER SYSTEM KILL SESSION 'SID, SERIAL#'; 
+0

Sono riuscito a risolvere questo problema trovando la sessione di mantenimento all'interno dell'applicazione dopo aver controllato dba_blockers. Ma ricorderà il comando ALTER per il futuro. Non posso votare la risposta a causa della bassa ripetizione. Grazie –

+0

Immagino che tu possa votare adesso :) Grazie – Mari

0

Probabilmente qualcun altro ha aggiornato la stessa tabella e non si è ancora impegnata. Potrebbe anche essere tu (in uno strumento diverso o in una sessione diversa).

Il modo più semplice per sbarazzarsi della serratura è di impegnare il lavoro nell'altra sessione.

+0

Ciao, sono riuscito a trovare la causa di questo problema cercando in DBA_BLOCKERS. Ho ricevuto l'ID sessione e l'ho ucciso. –

1

Gestito per risolvere questo problema.

Ho cercato nella tabella DBA_BLOCKERS e ho ottenuto l'ID di sessione. Quindi ha ucciso la sessione e il blocco è stato rimosso.