


Comment Oracle Geory Transaction Commits and Rollbacks en utilisant les mécanismes de rétablissement et d'annulation?
Jul 08, 2025 am 12:16 AMOracle garantit la durabilité et la cohérence des transactions à l'aide de REDO pour les validations et d'annuler pour les reculs. Au cours d'un engagement, Oracle génére un enregistrement de validation dans le tampon de journal de rétablissement, marque les changements permanents dans les journaux de rétablissement et met à jour le SCN pour refléter l'état de base de données actuel. Pour les rétroviseurs, Oracle utilise des données d'annulation pour réintégrer les modifications en reconstruisant les valeurs d'origine et en maintenant la cohérence de lecture. Redro enregistre les modifications pour la récupération, stockés dans les journaux de rétablissement en ligne, tandis que l'annulation des stores sur la fa?on de renverser les modifications pour le retrait et la cohérence, conservés dans des espaces de table d'annulation. Les principales considérations pratiques comprennent: 1) les engagements fréquents augmentent la rétrofacturation mais réduisent l'utilisation d'annulation; 2) De grandes transactions peuvent déclencher des erreurs "instantanées trop anciennes" si l'annulation de la rétention est insuffisante; 3) le moniteur est de réviser via des fichiers V $ sysstat ou de trace; 4) Assurer la taille et la rétention adéquates de l'espace de table et de rétention pour les requêtes longues; et 5) Vérifiez les événements d'attente comme la synchronisation du fichier journal ou ENQ: TX - affirmation lors du dépannage des problèmes de performances.
Oracle gère les commits de transaction et les rollbacks à l'aide de deux mécanismes de base: RecOd et UNDO . Ceux-ci fonctionnent ensemble pour garantir la cohérence des données, la durabilité et la capacité de se remettre des échecs.
Que se passe-t-il lors d'un engagement
Lorsque vous émettez un COMMIT
, Oracle n'écrit pas immédiatement toutes les modifications des fichiers de données. Au lieu de cela, il fait quelques choses clés:
- Il génère un enregistrement de validation dans le tampon de journal de rétablissement.
- Toutes les modifications apportées par la transaction jusqu'à ce point sont marquées comme permanentes dans les journaux de rétablissement.
- Le numéro de modification du système (SCN) est mis à jour pour refléter le point actuel dans le temps de la base de données.
Ainsi, même si les blocs de données réels n'ont pas encore été écrits sur le disque, le fait que la transaction engagée soit enregistrée dans le journal de rétablissement. C'est pourquoi Oracle peut garantir la durabilité - une fois qu'un engagement revient avec succès, le changement est s?r, même en cas de crash.
Comment le Rollback fonctionne avec l'annulation
Si une transaction est annulée (soit explicitement ou en raison d'une erreur), Oracle utilise des données d'annulation pour retourner les modifications.
Chaque modification effectuée par une transaction est d'abord enregistrée dans l'espace de table d'annulation avant la modification des données réelles. Cela permet à Oracle de:
- Reconstruire les valeurs d'origine des données modifiées.
- Maintenir la cohérence de lecture pour d'autres sessions qui pourraient interroger simultanément les mêmes données.
Par exemple, si la session A met à jour une ligne et la session B la demande avant le commit, la session B voit la version originale de la ligne à l'aide des données d'annulation.
Rollback revient essentiellement à ces informations d'annulation à l'envers, restaurant la base de données à son état avant le début de la transaction.
Redo vs UNO - Différences clés
Il est facile de mélanger refaire et annuler, mais voici comment ils diffèrent en fonction:
-
Reder :
- Enregistre les modifications apportées à la base de données.
- Utilisé pour la récupération - récupération des instances, récupération des médias, etc.
- Stocké dans des fichiers journaux en ligne .
- Chaque changement passe par le tampon de b?che de rétablissement avant d'être rincé sur le disque.
-
Défaire :
- Enregistre comment annuler un changement.
- Utilisé pour les recul et maintien de la cohérence de lecture.
- Stocké dans des espaces de table d'annulation .
- également utilisé par Oracle pour les fonctionnalités de flashback et les lectures cohérentes.
En bref:
Redo consiste à enregistrer les modifications de récupération; L'annulation consiste à préserver les anciennes valeurs pour le retour en arrière et la cohérence.
Implications pratiques et considérations de réglage
La compréhension de ces mécanismes aide à gérer les performances ou les problèmes de récupération.
Voici quelques points pratiques:
- Les engagements fréquents réduisent la quantité d'annulation nécessaire, mais augmentent la génération de rétroaction. Ainsi, dans les opérations en vrac, lancez vos engagements judicieusement.
- De grandes transactions peuvent provoquer des erreurs de "instantané trop anciennes" si l'annulation de la rétention n'est pas suffisante.
- Vous pouvez surveiller la génération de rétroaction via des vues telles que
V$SYSSTAT
(redo size
) ou des fichiers de trace. - Pour des rapports ou des requêtes de longue durée, assurez-vous que votre espace de table d'annulation est suffisamment grand et configuré avec une rétention appropriée.
Si vous résumez les problèmes de performances liés à Redo ou UNDO, la vérification des événements d'attente comme log file sync
(pour Redo) ou enq: TX – contention
(pour UNDO) peut aider à identifier les goulots d'étranglement.
C'est ainsi que Oracle assure une gestion fiable des transactions sous le capot. Pas quelque chose que vous voyez tous les jours, mais bon à comprendre lors du réglage ou du comportement de la base de données.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour désinstaller MySQL en toute sécurité et en toute sécurité et nettoyer tous les fichiers résiduels, suivez les étapes suivantes: 1. Stop MySQL Service; 2. Désinstaller les packages MySQL; 3. Nettoyer des fichiers de configuration et des répertoires de données; 4. Vérifiez que la désinstallation est approfondie.

Oracle n'est pas seulement une entreprise de base de données, mais aussi un leader des systèmes de cloud computing et ERP. 1. Oracle fournit des solutions complètes de la base de données aux services cloud et aux systèmes ERP. 2. OracleCloud défie AWS et Azure, fournissant des services IaaS, PaaS et SaaS. 3. Les systèmes ERP d'Oracle tels que E-BusinessSuite et FusionApplications aident les entreprises à optimiser les opérations.

MongoDB convient aux données non structurées et aux exigences élevées d'évolutivité, tandis qu'Oracle convient aux scénarios qui nécessitent une cohérence stricte des données. 1.MongoDB Stockez de manière flexible les données dans différentes structures, adaptées aux médias sociaux et à l'Internet des objets. 2. Le modèle de données structuré Oracle garantit l'intégrité des données et convient aux transactions financières. 3.MongoDB éclate horizontalement à travers des éclats, et Oracle évolue verticalement à travers RAC. 4.MongoDB a des co?ts de maintenance faibles, tandis qu'Oracle a des co?ts d'entretien élevés mais est entièrement pris en charge.

La principale différence entre MySQL et Oracle est les licences, les fonctionnalités et les avantages. 1. Licence: MySQL fournit une licence GPL gratuitement, et Oracle adopte une licence propriétaire, qui est co?teuse. 2. Fonction: MySQL a des fonctions simples et convient aux applications Web et aux petites et moyennes entreprises. Oracle a des fonctions puissantes et convient aux données à grande échelle et aux entreprises complexes. 3. Avantages: MySQL est sans source, adapté aux startups, et Oracle est fiable en performances, adapté aux grandes entreprises.

La différence entre MySQL et Oracle dans les performances et l'évolutivité est: 1. MySQL fonctionne mieux sur des ensembles de données de petite et moyenne taille, adaptés à une mise à l'échelle rapide et à une lecture et à l'écriture efficaces; 2. Oracle a plus d'avantages à gérer de grands ensembles de données et des requêtes complexes, adaptées à la haute disponibilité et à la logique métier complexe. MySQL s'étend à travers les technologies de réplication et de fragment ma?tre-esclave, tandis qu'Oracle atteint la haute disponibilité et l'évolutivité via RAC.

MySQL utilise GPL et des licences commerciales pour les projets petits et open source; Oracle utilise des licences commerciales pour les entreprises qui nécessitent des performances élevées. La licence GPL de MySQL est gratuite et les licences commerciales nécessitent un paiement; Les frais de licence Oracle sont calculés en fonction des processeurs ou des utilisateurs, et le co?t est relativement élevé.

Dans différents scénarios d'application, le choix de MongoDB ou Oracle dépend des besoins spécifiques: 1) Si vous devez traiter une grande quantité de données non structurées et ne pas avoir d'exigences élevées pour la cohérence des données, choisissez MongoDB; 2) Si vous avez besoin de cohérence des données strictes et de requêtes complexes, choisissez Oracle.

La clé pour apprendre Java sans prendre de détours est: 1. Comprendre les concepts de base et la grammaire; 2. Pratiquez plus; 3. Comprendre la gestion de la mémoire et la collecte des ordures; 4. Rejoignez les communautés en ligne; 5. Lisez le code des autres; 6. Comprendre les bibliothèques et les cadres communs; 7. Apprenez à faire face aux erreurs courantes; 8. faire un plan d'apprentissage et procéder étape par étape. Ces méthodes peuvent vous aider à ma?triser efficacement la programmation Java.
