Maison  >  Article  >  Quand Oracle verrouille-t-il une table ?

Quand Oracle verrouille-t-il une table ?

DDD
DDDoriginal
2023-06-13 09:37:253291parcourir

Les situations de verrouillage de table Oracle incluent : 1. Le programme A effectue une insertion sur la tableA, mais avant la validation, le programme B effectue également une insertion sur la tableA. À ce moment, une exception d'occupation de ressource se produira, qui est un verrouillage de table 2. Les tables de verrouillage se produisent souvent en concurrence plutôt qu'en parallélisme. Dans le parallélisme, lorsqu'un thread exploite la base de données, l'autre thread ne peut pas exploiter les principes d'allocation du processeur et des E/S de la base de données.

Quand Oracle verrouille-t-il une table ?

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

Les principales raisons du verrouillage de la table sont :

1. Le programme A exécute l'insertion sur la tableA, et avant la validation, le programme B insère également sur la tableA. À ce moment, une exception de ressource occupée se produira, qui est la table. verrouillage.

2. Le verrouillage des tables 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 exploiter le principe d'allocation de la base de données, du processeur et des E/S)

Méthodes pour réduire la probabilité. de verrouillage de 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. S'il y a une exception, la chose est annulée. La raison du verrouillage de la table peut être due aux données de la ligne. est modifié et les données de la ligne sont oubliées, 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;

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;

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;

4. 5, tuez le processus correspondant

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

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

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

vous invite lorsque. connexion : test L'utilisateur est verrouillé

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

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;

Session modifiée.

2.

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;

3. Déverrouiller

SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE
------------------------------ -------------------
TEST 2021-03-10 08:51:03

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!

Déclaration:
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