Heim > Datenbank > Oracle > Hauptteil

Oracle macht Analyse rückgängig

Freigeben: 2020-05-12 13:10:54
nach vorne
2657 Leute haben es durchsucht

Oracle macht Analyse rückgängig

Wofür wird „Rückgängig“ verwendet?                                                                                                                                                                                                                                                                               Bei der Durchführung einer Transaktion müssen wir viele Ressourcen in Anspruch nehmen, und eine komplexe Transaktion erfordert auch viele Schritte. Dann hat eine komplexe Transaktion nur zwei Ergebnisse, entweder Erfolg oder Misserfolg (was bedeutet, dass sie nie stattfindet).


Ein sehr typisches Beispiel, eine Banküberweisung, erfordert tatsächlich zwei Schritte: Der erste Schritt besteht darin, das Geld von Ihrem Konto abzuheben, und der zweite Schritt besteht darin, das Geld dem überwiesenen Konto hinzuzufügen eine vollständige Transaktion.

Wenn die Transaktion zur Hälfte ausgeführt wird und Ihr Geld reduziert wird und das Geld des übertragenen Kontos nicht hinzugefügt wird, wird die Transaktion zu diesem Zeitpunkt zurückgesetzt und auf den ursprünglichen Zustand zurückgesetzt. Das heißt, bevor Sie Geld überweisen, müssen Sie den Betrag auf Ihrem Konto und auf dem Überweisungskonto vermerken. Dadurch wird sichergestellt, dass eine fehlgeschlagene Transaktion auf den Zustand vor der Transaktion zurückgesetzt wird.

Um die Originalität und Integrität einer Transaktion sicherzustellen, wird das Konzept des Rückgängigmachens eingeführt. Mit „Rückgängig“ werden Daten während Transaktionsvorgängen aufgezeichnet und gespeichert. Wenn bei der Transaktion ein Fehler auftritt, kann diese mit vorherigen Daten aufgefüllt werden.

Segment rückgängig machen. Segment rückgängig machen:

Oracle macht Analyse rückgängigAus der obigen Ansicht können wir deutlich erkennen, dass wir ein Segment in der Tabelle rückgängig machen möchten. Die Daten werden geändert. Stellen Sie vor der Änderung das alte Bild auf „Rückgängig“. Fügen Sie dann ein neues Bild in die Tabelle ein.

Wenn der Vorgang fehlschlägt, können wir auch das alte Bild auf der Rückseite zurücknehmen und es an seine ursprüngliche Position bringen, sodass es aussieht, als wäre es nie passiert.

Undo-Segment wird im Tabellenbereich gespeichert. Die Größe von „Rückgängig“ ist fest und da sie fest ist, ist sie begrenzt. Wenn zu viele Datensätze gespeichert sind, ist der Speicher voll und die neu aufgezeichneten Daten überschreiben die ältesten Daten.

Die Verwendung eines runden Tellers kann es also lebendiger zum Ausdruck bringen. Daten werden ab einer Position geschrieben. Wenn ein Kreis gefüllt ist, überschreiben die neuesten Daten die frühesten geschriebenen Daten.

Was kann rückgängig gemacht werden?

Transaktions-Rollback-Angelegenheiten rückgängig gemacht, Transaktionswiederherstellung wird wiederhergestellt. Der Effekt der Transaktionsumkehr und der Transaktionswiederherstellung ist derselbe. Die Stornierung einer Transaktion ist etwas, zu dem die Leute die Initiative ergreifen. Die Leute bereuen es während des Vorgangs, was dem Drücken von Strg + Z beim Schreiben eines Dokuments entspricht. Die Transaktionswiederherstellung wird automatisch von der Maschine abgeschlossen, wenn Jianpin während der Transaktion plötzlich die Stromversorgung verliert, führt das System nach dem nächsten Neustart des Dienstes automatisch einen Rollback durch. Oracle macht Analyse rückgängig

Konsistenz lesen Lesen und ausführen. Die Lesekonsistenz ist für Mehrbenutzervorgänge sehr wichtig. Wenn Sie das Versionskontrolltool (gitcvssvn) in der Mehrpersonenentwicklung verwendet haben, werden Sie die folgenden Konzepte leicht verstehen.

Oracle-Lesekonsistenzkonzept                                                                                                        , dieser Vorgang kann mehrere Minuten dauern. Während dieses Vorgangs haben andere Benutzer Änderungen an den von Ihnen abgefragten Daten vorgenommen. Hier müssen Sie sicherstellen, dass die Ergebnisse Ihrer Abfrage vorliegen, bevor sie geändert werden.

Hier ist ein klares Konzept, wenn wir am Ende der Transaktion eine Commit-Aktion (Commit- oder Rollback-Befehl ausführen) ausführen durchgeführt

Lassen Sie uns anhand des obigen Flussdiagramms verstehen, wie Oracle die Lesekonsistenz gewährleistet.

Wenn wir eine Transaktion ausführen, weist Oracle eine SCN-Nummer zu, die ansteigt. Die Nummer der nächsten Transaktion muss größer sein als die Nummer der aktuellen Transaktion.

Oracle macht Analyse rückgängigDie der ersten in der obigen Abbildung ausgeführten Transaktion zugewiesene Nummer ist 10023. Während der Ausführung dieser Transaktion hat eine andere Transaktion die Datenblöcke mit den SCN-Nummern 10008 und 10021 geändert. Die SCN-Nummer des zum Ersetzen verwendeten Datenblocks ist 10024 und der ersetzte Datenblock wird zum Rückgängigmachen gespeichert.

Wenn die erste Transaktion den geänderten Datenblock ausführt, wird festgestellt, dass 10024 größer als 10023 ist. Zu diesem Zeitpunkt wird das Rückgängig-Segment aufgerufen, um einen Datenblock zu finden, der kleiner als seine eigene SCN-Nummer ist und gelesen werden soll , also wird es gefunden. Die SCN-Nummern sind 10008 und 10021. Dies stellt effektiv die Lesekonsistenz sicher.

Natürlich wird es eine Sondersituation geben, das heißt, das Rückgängig-Segment ist zu klein und es können maximal 100 Datenelemente platziert werden. Allerdings kommen 120 Datenelemente auf einmal ein, also die ersten 20 Die geschriebenen Daten werden durch die letzten 20 geschriebenen Daten ersetzt. Zu diesem Zeitpunkt wird ein Fehler gemeldet, weshalb die Daten optimiert werden müssen.

Wiederholen oder Rückgängig machen                                                                                              🎜>

Redo zeichnet Transaktionsprotokolle auf, die in Online- und Archivprotokolle unterteilt sind. Zum Zwecke der Genesung.

Wenn die Maschine beispielsweise die Stromversorgung verliert, sind Online-Redo-Logs erforderlich, um das System nach dem Neustart bis zum Fehlerpunkt wiederherzustellen.

Wenn beispielsweise die Festplatte beschädigt ist, müssen Sie archivierte Redo-Logs und Online-Redo-Logs-Bereiche verwenden, um Daten wiederherzustellen.

Was ist Rückgängigmachen?

Wiederholen bedeutet, Ihren Vorgang erneut auszuführen, während Rückgängig im Gegenteil dazu dient, den von Ihnen durchgeführten Vorgang rückgängig zu machen. „Rückgängig“ ähnelt eher der häufig verwendeten Tastenkombination Strg+Z, die den vorherigen Schritt rückgängig macht. Redo zeichnet auch Rückgängig-Vorgänge auf.

Wenn wir ein Datenelement einfügen, wird zunächst die Aktion im Redo-Log aufgezeichnet, der Vorgang wird auch beim Rückgängigmachen aufgezeichnet und die Aktion des Rückgängigmachens selbst wird ebenfalls aufgezeichnet Wenn ein Datenelement im Redo-Protokoll aufgezeichnet wird und ein Datenelement eingefügt wird, ändern sich die Indizes, und die Änderungen im Index führen auch dazu, dass ein Datenelement im Redo-Protokoll aufgezeichnet wird. Redo zeichnet alle relevanten Informationen eines Vorgangs auf, sodass die Szene vollständig reproduziert werden kann.

Es ist zu beachten, dass im obigen Diagramm sowohl „Rückgängig“ als auch „Wiederherstellen“ in den Speicher geschrieben werden. Sobald der Strom ausgeschaltet wird, verschwinden alle Informationen. Lediglich die auf die Festplatte geschriebenen Informationen gehen bei einem Stromausfall nicht verloren. Oracle macht Analyse rückgängig

Die Redo-Log-Informationen werden zuerst auf die Festplatte geschrieben, da sie über die umfassendsten Informationen verfügen und die Szenenwiedergabe vollständig garantieren können. Wir können das Redo-Schreiben auf die Festplatte über verschiedene Mechanismen steuern, z. B. das Schreiben alle 3 Sekunden oder das Schreiben von Redo-Log-Dateien mit mehr als 1 MB.

Wie konfiguriere und verwende ich das Rückgängigmachen? Wir können mehrere Undo-Tabellenbereiche erstellen, es kann jedoch nur ein Undo-Tabellenbereich verwendet werden.

Informationen zur Rückgängig-Konfiguration anzeigen:

SQL> show parameter undo

NAME                           TYPE                VALUE
------------------------------------ ----------------------------------------------------
undo_management                 string            AUTO   
undo_retention                   integer           900
undo_tablespace                  string           UNDOTBS1
Nach dem Login kopieren

Bedeutung des Rückgängig-Konfigurationsparameters -DNDO_MANAGEMENT Der Verwaltungsmodus des Rückgängigmachens ist in automatisch und manuell unterteilt

-UNDO_TABLESPACE Derzeit wird verwendet Die verwendete Undo-Tabelle

-UNDO_RETENTION gibt an, wie lange die Daten nicht überschrieben werden können.

AUTO bedeutet, dass sich das Rückgängigmachen im automatischen Verwaltungsmodus befindet.

900 bedeutet, dass die Daten beim Rückgängigmachen nicht innerhalb von 900 Sekunden überschrieben werden können.

UNDOTBS1 ist der derzeit verwendete Undo-Tablespace.

Das Erstellen eines Undo-Tabellenbereichs ähnelt dem Erstellen eines allgemeinen Tabellenbereichs. Der Befehl lautet wie folgt:

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

Tablespace created.
Nach dem Login kopieren

Den neu erstellten Undo-Tabellenbereich anzeigen

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
Nach dem Login kopieren

Undo-Tabelle wechseln 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表空间
Nach dem Login kopieren

Undo-Tablespace löschen:

SQL> drop tablespace myundotbs;
Tablespace dropped.
Nach dem Login kopieren

Nachdem ein Undo-Tablespace gelöscht wurde, ist er immer noch auf der Festplatte vorhanden. Wir müssen den Befehl rm auf Betriebssystemebene verwenden, um ihn zu löschen Datei.

Denken:

Die Befehle zum Wechseln und Löschen des Tabellenbereichs sind sehr einfach, aber hier müssen wir über das tatsächliche Wechselszenario nachdenken. Wenn wir eine Transaktion ausführen, wurde die Hälfte der Transaktionsausführung noch nicht festgeschrieben. Können wir den Undo-Tabellenbereich zu diesem Zeitpunkt erfolgreich wechseln?

Theoretisch wird der Undo-Tabellenbereich verwendet und ein Wechsel ist nicht zulässig. Tatsächlich kann der Rückgängig-Tabellenbereich jedoch während der Verwendung umgeschaltet werden. Wenn er jedoch sofort nach dem Umschalten gelöscht wird, meldet das System einen Fehler. Nachdem die Transaktion festgeschrieben und anschließend gelöscht wurde, meldet das System immer noch einen Fehler. Dabei kann der ersetzte Undo-Tablespace nur gelöscht werden, wenn er in den Zustand „Used“ und anschließend in den Zustand „Abandoned“ versetzt wird.

<<> UNDO-Tuning

Die Einstellung von UNDO hängt von unserem tatsächlichen Produktionssystem ab. Wie können wir das Rückgängigmachen so einrichten, dass es für uns rationaler arbeitet?

Größe des Undo-Tabellenbereichs:

Wenn wir einen Undo-Tabellenbereich erstellen, geben wir dessen Größe an. Nach der Erstellung kann diese Größe nicht geändert werden. Wenn Sie beispielsweise 1 Million Datensätze löschen, werden diese gelöschten Datensätze vorübergehend im Rückgängig-Tabellenbereich gespeichert. Wenn die Rückgängig-Größe nicht 1 Million Datensätze speichern kann, treten Probleme auf. .

Datenspeicherungszeit rückgängig machen:

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

Undo表空间的历史信息:

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

Oracle macht Analyse rückgängig

这个数据每隔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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonOracle macht Analyse rückgängig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!