Oracleからの差分レプリケーション(ミラーリング)の際に、下記のエラーが発生した場合の原因と対処法です。
●エラー内容:
ORA-01291: ログ・ファイルがありません
●原因:
DBMotoが保持している(最後にレプリケーションした)Redo IDがOracleへ接続参照時に既になくなっている場合に本エラーが発生します。
DBMotoが保持しているRedo IDはDBMotoのレプリケーションプロパティから確認できます。下記画面例では73348299となります。
次にOracleサイドでのRedo IDを確認します。
クエリselect * from v$logにて確認可能です。
上記例のケースでは、SEQUENCE#が693がRedoの一番古いグループです。
このレコードのFIRST_CHANGE#を確認するとIDが75885340となっており、これがその時点での一番古いIDとなります。
DBMoto側でのIDが73348299、Oracleの一番古いIDが75885340ということで、このケースでエラーとなります。
●対処法:
まず既になくなってしまったIDの範囲のレプリケーションを行うことはできませんので、レプリケーションデータを復旧するにはイニシャルリフレッシュを実行する必要があります。
次に、このエラーを発生させないようにするには、DBMotoからOracleへ参照するIDが確実に残っている必要がありますので、下記対応を検討する必要があります。
・Redoログサイズやグループ数を増やして余裕を持たせる
・アーカイブログ運用にする(DBMotoはアーカイブログの参照も可能)
なお、Oracle側にIDが残っているにも関わらず本エラーが発生してしまう場合にはお問い合わせください。
関連したトピックス
- Oracleアーカイブログモードの変更
- Oracle DB起動時にエラーORA-01034・ORA-27101が出て起動しない際の対処法
- Syniti(旧DBMoto)レプリケーションに必要なOracleユーザ権限 Trigger使用時
- [DBMoto]Oracle順序オブジェクト(シーケンス)のレプリケーションをスクリプトで実現
- DBMotoレプリケーションに必要なOracleユーザ権限
- Oracleのサプリメンタルロギング設定【リアルタイムレプリケーションツールDBMoto】
- Oracle Redo Log の Transaction ID取得に失敗する場合【リアルタイムレプリケーションツールDBMoto】
- MySQLを最適化するための10の秘訣
- OracleのRedoログとアーカイブログの参照設定【リアルタイムレプリケーションツールDBMoto】
- DBMotoレプリケーションに必要なOracle 12c(PDB/CDB)権限