web-dev-qa-db-fra.com

Suppression de verrous dans Oracle 10

J'ai un problème lors de la tentative de mise à jour d'une valeur de colonne dans sqlplus.

Il ne se termine pas et se bloque simplement. Je me demande s'il existe de toute façon de supprimer les verrous dans Oracle par la force?

J'ai remarqué une table appelée v $ verrouillé_objet qui contient un ID onject correspondant au problème que j'ai.

J'espère que j'ai assez bien expliqué cela.

Merci d'avance pour votre aide!

20
Thomas Pollock

Cela servira exactement votre objectif:

SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME>;

Utilisez le SESSION_ID pour trouver le SERIAL# avec cette déclaration:

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

Localisez les tuples incriminés SID, SERIAL# et le libérer comme ceci:

ALTER SYSTEM KILL SESSION 'SID, SERIAL#';
58
Mari

Géré pour résoudre ce problème.

J'ai regardé dans la table DBA_BLOCKERS et obtenu l'ID de session. Puis a tué la session et le verrou a été retiré.

1
Thomas Pollock

Probablement, quelqu'un d'autre a mis à jour le même tableau et ne s'est pas encore engagé. Il peut même s'agir de vous (dans un outil différent ou une session différente).

Le moyen le plus simple de se débarrasser du verrou est de valider le travail dans l'autre session.

0
Codo