sql >> データベース >  >> RDS >> Oracle

互換性のあるORA-16484のためにアーカイバがハングしました

    今朝、次のように、アーカイバがハングしているという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のみの機能でした。スタンバイは新機能を使用してテーブルを作成しようとしましたが、パラメータ設定が不適切なため、その操作を完了できませんでした。これがログ転送にどのように影響したかはまだ少し混乱しています。ログ適用のみが壊れていると思っていたのですが、これが明らかになりました。


    1. Hibernateを使用してOracleでLARGEBLOB(> 100MB)を永続化する方法

    2. PDOでパスワードハッシュを使用してコードをより安全にするにはどうすればよいですか?

    3. ルームライブラリはアセットフォルダからデータベースをコピーできますか?

    4. mysql_real_escape_string()とmysql_escape_string()はアプリのセキュリティに十分ですか?