Maison > Problème commun > le corps du texte

Comment vérifier la raison du verrouillage de la table dans Oracle

小老鼠
Libérer: 2023-07-05 15:09:45
original
2861 Les gens l'ont consulté

La raison pour laquelle Oracle verrouille la table est la suivante : lorsqu'un programme effectue une insertion sur une table et ne s'est pas encore validé, un autre programme effectue également une insertion sur la même table, et une exception de ressource occupée se produira à ce moment-là. serrure de table.

Comment vérifier la raison du verrouillage de la table dans Oracle

Le système d'exploitation de ce tutoriel : système Windows 10, Oracle version 19c, ordinateur Dell G3.

Quelle est la raison pour laquelle Oracle verrouille la table ?

Les principales raisons du verrouillage de la table sont :

(1) Le programme A exécute l'insertion de la tableA, et avant la validation, le programme B insère également la tableA. time Une exception qui se produit lorsque les ressources sont occupées est la table de verrouillage

(2) La table de verrouillage se produit souvent en concurrence plutôt qu'en parallélisme (en parallèle, lorsqu'un thread exploite la base de données, l'autre thread ne peut pas faire fonctionner la base de données, le processeur et les E/S principe d'allocation )

Méthodes pour réduire la probabilité de verrouillage de la table :

(1) Réduisez le temps entre l'exécution des instructions d'insertion, de mise à jour et de suppression et la validation. Plus précisément, l'exécution par lots est remplacée par une exécution unique et la vitesse de non-exécution de SQL lui-même est optimisée

(2) Si la transaction est annulée anormalement

La raison du verrouillage de la table peut être que les données de la ligne ont été modifiées et oublié de soumettre, ce qui entraînera également le verrouillage de la table.

1. Il est recommandé de vérifier la raison du verrouillage de la montre avant de prendre une décision.

1 Le code de la requête de verrouillage de table a la forme suivante :

select count(*) from v$locked_object;
select * from v$locked_object;
Copier après la connexion

2 Vérifiez quelle table est verrouillée

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
Copier après la connexion

3 Vérifiez quelle session en est la cause

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
Copier après la connexion

4. Vérifiez quel SQL en est la cause

select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid
and b.SQL_ID = c.sql_id and c.sql_id = ''
order by b.logon_time;
Copier après la connexion

5. Kill Drop le processus correspondant

Exécutez la commande : alter system kill session'1025,41';

où 1025 est sid et 41 est le numéro de série.

2 La raison pour laquelle les utilisateurs Oracle sont souvent verrouillés

Lors de la connexion. , le message suivant s'affiche : l'utilisateur de test est verrouillé Lock

1. Connectez-vous en tant qu'utilisateur avec le rôle dba pour déverrouiller. Définissez d'abord le format d'heure spécifique pour afficher l'heure spécifique

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
Copier après la connexion

Session modifiée.

2. time

SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE
------------------------------ -------------------
TEST 2021-03-10 08:51:03
Copier après la connexion

3. Déverrouillage

SQL> alter user test account unlock;
Copier après la connexion

Utilisateur modifié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!