Heute morgen wachte ich mit einigen Benachrichtigungen von EM auf, dass mein Archiver hängen blieb, ähnlich der folgenden:
Target type=Database Instance Target name=orcl4 Categories=Fault Message=The archiver hung at time/line number: Fri Sep 09 06:07:22 2016/376. Severity=Critical
Ich habe den DG Broker verwendet, um den Protokolltransport zu stoppen und dann neu zu starten.
edit database orcl set state=transport-off;
edit database orcl set state=transport-on;
Aber der Archivierer würde trotzdem hängen bleiben. Also ab zum Alarmprotokoll, um weitere Hinweise zu erhalten. Ich habe dies im Warnungsprotokoll der Primärdatenbank gefunden:
TT00: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (16484) TT00: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned Fri Sep 09 08:07:40 2016 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl4/trace/orcl4_tt00_16068.trc: ORA-16484: compatibility setting is too low
Die Fehlermeldung scheint selbsterklärend. Ich habe COMPATIBLE zu niedrig eingestellt. An diesem Punkt erinnerte ich mich, dass ich vor einem Monat COMPATIBLE in der Grundschule geändert hatte. Ich muss vergessen haben, dies auch im Standby zu ändern. Eine schnelle Überprüfung bestätigte meine Hypothese. COMPATIBLE ist in der primären Version auf 12.1.0.2 eingestellt, in der Standby-Version jedoch auf 11.2.0. Da ist also mein Problem. Ich habe COMPATIBLE im Standby geändert, geprellt und dann den Protokolltransport fortgesetzt. Das Leben war in Ordnung und alles wurde repariert.
Wenn Sie sich richtig erinnern, sagte ich, dass ich vor einem Monat COMPATIBLE in der Grundschule geändert habe. Warum war das heute ein Problem und damals nicht? Um das zu wissen, müssten Sie den Änderungsverlauf für diese Datenbank kennen. Letzte Nacht haben wir neuen Code für die Produktion freigegeben. Ein Teil der Code-Veröffentlichung bestand darin, eine neue Tabelle aufzunehmen, die die neue IDENTITY-Spaltenfunktion von Oracle 12c verwendete. Dies war das erste reine 12c-Feature, das wir in unserer Codebasis bereitgestellt haben. Der Standby-Modus hat versucht, die Tabelle mit der neuen Funktion zu erstellen, aber dieser Vorgang konnte aufgrund der falschen Parametereinstellung nicht abgeschlossen werden. Ich bin immer noch etwas verwirrt, wie sich dies auf den Protokolltransport ausgewirkt hat. Ich hätte erwartet, dass nur die Protokollanwendung kaputt ist, aber so hat es sich manifestiert.