Maison  >  Article  >  base de données  >  Oracle annule l'analyse

Oracle annule l'analyse

尚
avant
2020-05-12 13:10:542664parcourir

Oracle annule l'analyse

À quoi sert Annuler ?                                                                                                                                                                                                                                                                                          Nous devons faire appel à de nombreuses ressources dans le processus de réalisation d'une transaction, et une transaction complexe nécessite également de nombreuses étapes. Une transaction complexe n’a alors que deux résultats, soit le succès, soit l’échec (ce qui équivaut à ne jamais se produire).


Un exemple très typique, le virement bancaire, nécessite en fait deux étapes. La première étape consiste à soustraire l'argent de votre compte, et la deuxième étape consiste à ajouter l'argent au compte transféré. une transaction complète.

Si elle est exécutée à mi-chemin et que votre argent est réduit et que l'argent du compte transféré n'est pas ajouté, la transaction sera annulée à ce moment-là et ramenée à son état d'origine. C'est-à-dire qu'avant de transférer de l'argent, vous devez enregistrer le montant sur vous et sur le compte transféré. Cela garantit qu'en cas d'échec d'une transaction, elle sera rétablie à l'état où elle se produisait avant la transaction.

Pour garantir l'originalité et l'intégrité d'une transaction, la notion d'annulation est introduite. L'annulation est utilisée pour enregistrer et sauvegarder les données pendant les opérations de transaction. Si une erreur se produit dans la transaction, les données précédentes peuvent être remplies.

Annuler le segment Annuler le segment :

Oracle annule lanalyseDe la vue ci-dessus, nous pouvons clairement voir que nous voulons annuler un segment dans le tableau. Les données sont modifiées. Avant de modifier, mettez l'ancienne image en annulation. Ensuite, mettez une nouvelle image dans le tableau.

Si le processus échoue, nous pouvons également reprendre l'ancienne image lors de l'annulation et la remettre dans sa position d'origine, de sorte qu'elle semble ne jamais s'être produite.

Le segment d'annulation est enregistré dans l'espace table. La taille de l'annulation est fixe, et comme elle est fixe, elle est limitée. S'il y a trop d'enregistrements enregistrés, ils seront pleins et les nouvelles données enregistrées écraseront les données les plus anciennes.

Ainsi, l'utilisation d'une assiette circulaire peut l'exprimer de manière plus vivante. Les données sont écrites à partir d'une position. Lorsqu'un cercle est rempli, les données les plus récentes écraseront les données écrites les plus anciennes.

Que peut-on annuler ?

Annulation des transactions Affaires annulées, la récupération des transactions est restaurée. L'effet de l'annulation et de la récupération des transactions est le même. L'inversion de transaction est quelque chose que les gens prennent l'initiative de faire. Les gens le regrettent pendant l'opération, ce qui équivaut à appuyer sur ctrl+z lors de la rédaction d'un document. La récupération de la transaction est automatiquement effectuée par la machine. Par exemple, si Jianpin perd soudainement de l'alimentation pendant la transaction, le système reviendra automatiquement en arrière après le prochain redémarrage du service. Oracle annule lanalyse

Cohérence de lecture Lire et exécuter. La cohérence de lecture est très importante pour les opérations multi-utilisateurs. Si vous avez utilisé l'outil de contrôle de version (gitcvssvn) dans un développement multi-personnes, vous comprendrez facilement les concepts suivants.

Concept de cohérence de lecture Oracle                                                                                                                   , ce processus peut prendre plusieurs minutes. Au cours de ce processus, d'autres utilisateurs ont apporté des modifications aux données que vous avez interrogées. Ici, vous devez vous assurer que les résultats de votre requête sont présents avant qu'ils ne soient modifiés.

Un concept clair ici est que le début d'une transaction correspond au moment où nous exécutons une instruction (mettre à jour, modifier, supprimer) à la fin de la transaction, une action de validation (exécuter une commande de validation ou de restauration) doit être effectuée. effectué

Comprenons comment Oracle assure la cohérence de la lecture à partir de l'organigramme ci-dessus.

Lorsque nous exécutons une transaction, Oracle attribuera un numéro SCN, qui augmente. Le numéro de la prochaine transaction doit être supérieur au numéro de la transaction en cours.

Oracle annule lanalyseLe numéro attribué à la première transaction exécutée dans la figure ci-dessus est 10023. Lors de l'exécution de cette transaction, une autre transaction a modifié les blocs de données avec les numéros SCN 10008 et 10021. Le numéro SCN du bloc de données utilisé pour le remplacement est 10024 et le bloc de données remplacé sera enregistré pour être annulé.

Lorsque la première transaction exécute le bloc de données modifié, il s'avère que 10024 est supérieur à 10023. À ce moment-là, il ira au segment d'annulation pour trouver un bloc de données plus petit que son propre numéro SCN à lire. , donc il le trouve. Les numéros SCN sont 10008 et 10021. Cela garantit efficacement la cohérence de la lecture.

Bien sûr, il y aura une situation particulière, c'est-à-dire que le segment d'annulation est trop petit et qu'un maximum de 100 éléments de données peuvent être placés. Cependant, 120 éléments de données entrent en même temps, donc les 20 premiers. les données écrites sont remplacées par les 20 dernières données écrites. Une erreur sera signalée à ce moment-là, c'est pourquoi les données doivent être ajustées.

Rétablir ou annuler                                                                                              🎜>

Refaire les journaux de transactions des enregistrements, qui sont divisés en ligne et archivés. Aux fins de récupération.

Par exemple, si la machine perd de l'alimentation, des journaux de rétablissement en ligne sont nécessaires pour restaurer le système au point de panne après le redémarrage.

Par exemple, si le disque est endommagé, vous devez utiliser les journaux redo archivés et les zones de journaux redo en ligne pour récupérer les données.

Qu'est-ce qu'Annuler

Rétablir consiste à réimplémenter votre opération, tandis qu'Annuler, au contraire, consiste à annuler l'opération que vous avez effectuée. L'annulation ressemble plus au ctrl+z couramment utilisé, qui annule l'étape précédente. Redo enregistrera également les opérations d’annulation.

Lorsque nous insérons une donnée, l'action sera d'abord enregistrée dans le journal de rétablissement, l'opération sera également enregistrée dans l'annulation, et l'action d'annulation elle-même sera également be Lorsqu'une donnée est enregistrée dans le journal redo, lorsqu'une donnée est insérée, les index changeront et les modifications apportées aux index entraîneront également l'enregistrement d'une donnée dans le journal redo. Redo enregistre toutes les informations pertinentes d'une opération, afin que la scène puisse être entièrement reproduite.

Il convient de noter que dans le schéma ci-dessus, l'annulation et le rétablissement sont écrits dans la mémoire. Une fois l'alimentation coupée, toutes les informations disparaîtront. Seules les informations écrites sur le disque ne seront pas perdues en raison d'une panne de courant. Oracle annule lanalyse

Les informations de redo log sont écrites en premier sur le disque, car elles contiennent les informations les plus complètes et peuvent garantir complètement la reproduction de la scène. Nous pouvons contrôler la réécriture sur le disque via divers mécanismes, tels que l'écriture toutes les 3 secondes ou l'écriture de fichiers de journalisation de plus de 1 Mo.

Comment configurer et utiliser l'annulation ? Nous pouvons créer plusieurs espaces table d'annulation, mais un seul espace table d'annulation peut être utilisé.

Afficher les informations de configuration d'annulation :

SQL> show parameter undo

NAME                           TYPE                VALUE
------------------------------------ ----------------------------------------------------
undo_management                 string            AUTO   
undo_retention                   integer           900
undo_tablespace                  string           UNDOTBS1

Signification du paramètre de configuration d'annulation -DNDO_MANAGEMENT Le mode de gestion de l'annulation est divisé en automatique et manuel

-UNDO_TABLESPACE Actuellement en cours d'utilisation La table d'annulation utilisée

-UNDO_RETENTION spécifie la durée pendant laquelle les données ne peuvent pas être écrasées.

AUTO signifie que l'annulation est en mode de gestion automatique.

900 signifie que les données annulées ne peuvent pas être écrasées dans les 900 secondes.

UNDOTBS1 est le tablespace d'annulation actuellement utilisé.

La création d'un espace table d'annulation est similaire à la création d'un espace table général. La commande est la suivante :

SQL> create undo tablespace myundotbs
  2  datafile '/ora10/product/oradata/ora10/myundotbs1.dbf' size 10M;

Tablespace created.

Affichez l'espace table d'annulation nouvellement créé

SQL>  select tablespace_name,contents from dba_tablespaces;

TABLESPACE_NAME                    CONTENTS
------------------------------------------------------------ ------------------
SYSTEM                                 PERMANENT
UNDOTBS1                               UNDO     //老的undo表空间
SYSAUX                                 PERMANENT
TEMP                                    TEMPORARY
USERS                                  PERMANENT
PAUL                                   PERMANENT
MYUNDOTBS                              UNDO   // 新创建的undo表空间

SQL> show parameter undo      再次查看当前使用的表空间

NAME                           TYPE          VALUE
------------------------------------ ----------------------------------------------------
undo_management                 string            AUTO   
undo_retention                   integer             900
undo_tablespace                  string           UNDOTBS1

Changer la table d'annulation. space :

SQL> alter system set undo_tablespace=myundotbs;

System altered.
SQL> show parameter undo   再次查看当前使用的表空间

NAME                           TYPE               VALUE
------------------------------------ ----------------------------------------------------
undo_management                 string            AUTO   
undo_retention                   integer          900
undo_tablespace                  string           MYUNDOTBS    //已经切换的了undo表空间

Supprimer l'espace table d'annulation :

SQL> drop tablespace myundotbs;
Tablespace dropped.

Après avoir supprimé un espace table d'annulation, il existe toujours sur le disque. Nous devons utiliser la commande rm au niveau du système d'exploitation pour supprimer le. déposer.

Réflexion :

Les commandes de changement et de suppression d'espace table sont très simples, mais ici, nous devons réfléchir au scénario de changement réel. Lorsque nous exécutons une transaction, la moitié de l'exécution de la transaction n'a pas encore été validée. Pouvons-nous réussir à changer d'espace table d'annulation à ce moment-là

Théoriquement, l'espace table d'annulation est utilisé et le changement n'est pas autorisé. Mais en fait, l'espace table d'annulation peut être modifié pendant l'utilisation, mais s'il est supprimé immédiatement après le changement, le système affichera une erreur. Après avoir validé la transaction puis l'avoir supprimée, le système affiche toujours une erreur. Ici, le tablespace d'annulation remplacé ne peut être supprimé que s'il passe à l'état utilisé puis à l'état abandonné.

Réglage UNDO

Le réglage de UNDO dépend de notre système de production actuel. Comment pouvons-nous configurer l’annulation pour qu’elle fonctionne de manière plus rationnelle pour nous ?

Taille de l'espace table d'annulation :

Lorsque nous créons un espace table d'annulation, nous spécifions sa taille. Une fois créée, cette taille ne peut pas être modifiée. C'est un gaspillage de le définir trop grand. S'il est trop petit, par exemple, si vous supprimez 1 million d'enregistrements, ces enregistrements supprimés seront temporairement stockés dans l'espace table d'annulation. Si la taille d'annulation ne peut pas stocker 1 million d'enregistrements, des problèmes surviendront.

Annuler la durée de stockage des données :

也就是undo_retention 参数所对应的时间,undo上有数据存放时间与undo大小的密切关系。存放时间越长,需要的表空间越大。就像理发师的数量与理发师的效率的关系一样。理发师效率很高,一秒钟解决一个客户,那么就不需要太多的理发师傅。

Undo表空间的历史信息:

如何合理设置undo表空间的大小和存放时间呢?那么就需要参考历史记录

Oracle annule lanalyse

这个数据每隔10分钟采集一次,结束时间减去开始时间,在这段时间内使用了多少个undo数据块。

计算每秒钟使用数据块的多少?

求最大值:

SQL> select max(undoblks / ((end_time-begin_time)*24*3600)) from v$undostat;

MAX(UNDOBLKS/((END_TIME-BEGIN_TIME)*24*3600))
---------------------------------------------
                                   14.15833333

求平均值:
SQL>  select sum(undoblks)/sum((end_time - begin_time)*24*3600) from v$undostat;

SUM(UNDOBLKS)/SUM((END_TIME-BEGIN_TIME)*24*3600)
------------------------------------------------
                                      4.122282389

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer