Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Archiver hing aufgrund von KOMPATIBLEM ORA-16484

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.