今朝、次のように、アーカイバがハングしているというEMからのアラートがいくつか発生しました。
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
DG Brokerを使用して、ログ転送を停止してから再開しました。
edit database orcl set state=transport-off;
edit database orcl set state=transport-on;
しかし、アーカイバはまだハングします。したがって、より多くの手がかりを得るためにアラートログに移動します。これはプライマリのアラートログで見つかりました:
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
エラーメッセージは自明のようです。 COMPATIBLEの設定が低すぎます。この時点で、1か月前にプライマリでCOMPATIBLEを変更したことを思い出しました。スタンバイでもこれを変更するのを忘れていたに違いありません。迅速な検証により、私の仮説が証明されました。 COMPATIBLEは、プライマリでは12.1.0.2に設定されていますが、スタンバイでは11.2.0に設定されています。だから私の問題があります。スタンバイでCOMPATIBLEを変更し、バウンスしてからログ転送を再開しました。人生は素晴らしく、すべてが修正されました。
記憶が正しければ、1か月前にプライマリーでCOMPATIBLEを変更したと言いました。なぜこれが今日の問題であり、当時は問題ではなかったのですか?そのためには、このデータベースの変更履歴を知る必要があります。昨夜、新しいコードを本番環境にリリースしました。コードリリースの一部は、Oracle12cの新しいIDENTITY列機能を使用する新しいテーブルを含めることでした。これは、コードベースにデプロイした最初の12cのみの機能でした。スタンバイは新機能を使用してテーブルを作成しようとしましたが、パラメータ設定が不適切なため、その操作を完了できませんでした。これがログ転送にどのように影響したかはまだ少し混乱しています。ログ適用のみが壊れていると思っていたのですが、これが明らかになりました。