2017-10-12 12 views
0

Je veux vérifier si l'interblocage est effacé ou non dans les tables système de Postgres et ORACLE. Veuillez me suggérer comment vérifier l'état d'interblocage.Requête pour vérifier l'état d'interblocage de la table dans postgres

+0

Votre question n'a aucun sens. Il n'y a rien de tel que le "statut d'interblocage d'une table". Une seule table ne peut jamais avoir un blocage. Un blocage ** toujours ** implique au moins deux transactions - et ensuite les sessions/transactions sont bloquées, pas "une table". –

+0

si vous n'avez pas modifié 'deadlock_timeout' alors comptez jusqu'à un Missisipi et voila - il est" effacé " –

Répondre

0

Les blocages ne traînent pas, dès que Postgres ou Oracle trouve un interblocage, il abandonne l'une des transactions. C'est parce qu'une impasse, de par sa nature même, ne progressera pas sans intervention.

Ce que vous pouvez faire est de regarder les verrous normaux qui existent dans le système et depuis combien de temps ils existent.

verrous sont détenus pendant une longue période pourrait indiquer les transactions en cours d'exécution lente, ou un code qui ne commettait pas au bon endroit, etc.

serrures augmentent également de longue date la probabilité qu'un blocage se produira dans l'avenir .

Postgres

Vous pouvez le faire via le point de vue pg_locks.

Le wiki Postgresql a une page sur la recherche sur les serrures à https://wiki.postgresql.org/wiki/Lock_Monitoring

Et la vue pg_locks est décrit à https://www.postgresql.org/docs/current/static/view-pg-locks.html

Oracle

Oracle fournit également des vues pour montrer les verrous en cours, mais ils sont un peu plus complexes à utiliser.

Une intro est disponible à http://www.dba-oracle.com/t_grid_rac_db_locks_latches.htm

En référence à https://docs.oracle.com/cd/E11882_01/server.112/e40402/dynviews_2027.htm#REFRN30121

Dans les deux cas que vous aurez besoin de passer un peu de temps à identifier ce que vous êtes en fait après que les verrous ne sont généralement pas tenues sur toute la table à la fois, il est donc probable que différentes parties de la table seront verrouillées en même temps par différentes transactions. Aussi, ce ne sont pas seulement les tables qui apparaîtront dans ces vues. De même, les différents types de verrous (partagés, exclusifs, etc.) bloquent différents types d'activité simultanée.