ページの先頭行へ戻る
Symfoware Active DB GuardV12.6.0 運用ガイド
FUJITSU Software

5.10.5 RERUNログ反映実行時のデータベース定義異常

RERUNログ反映中のデータベース定義異常には以下のものがあります。

RERUNログ反映中に、データベース定義異常が発生した場合の対処方法について説明します。

5.10.5.1 非ユニークINDEXのDSI非活性/未フォーマット

RERUNログ反映中に非ユニークINDEXのDSI非活性/未フォーマットを検出した場合には、メッセージを出力します。

メッセージから対象の資源を特定して、対処の必要性を判断してください。リカバリ操作を行う場合にはRLPを切り替えオフラインにしてSymfoware ServerのrdbsloaderコマンドのxオプションでINDEXの創成処理を実行します。

この状態でもRERUNログ反映処理は、正常に運用できます。

参照

  • リカバリ方法については、“Symfoware Server RDB運用ガイド”を参照してください。

  • Symfoware Serverのrdbsloaderコマンドについては“Symfoware Server コマンドリファレンス”を参照してください。

5.10.5.2 XMLインデックス活性状態

RERUNログ反映中にXMLインデックス活性状態を検出した場合には、メッセージを出力して、rdbbcrefコマンドが異常終了します。

複写先システムではRLPを切り替えオフラインにするために未反映のRERUNログを破棄し、RLPを切り替えオフラインにした後、XMLインデックスの定義を削除します。
メッセージから対象の資源を特定して、XMLインデックスの対象となる表のDSIを閉塞させ、ログ破棄指定でrdbbcrefコマンドを実行してください。RLPを切り替えオフラインにした後は、XMLインデックスの定義削除(検索パス、XMLグループ、XMLのDSI/DSO)を実施し、DSIの全件複写およびRLPのオンラインを実行します。

RERUNログ反映中にXMLインデックス活性状態からのリカバリ操作の手順を以下に示します。

操作の手順

複写元システム

  1. rdbbcrlcコマンドを実行して、RLCを退避または破棄します。

    RLC退避の場合
    $ rdbbcrlc -B -p RLP名 -f 出力ファイル名
    RLC破棄の場合
    $ rdbbcrlc -P -p RLP名
  2. rdbbcofflineコマンドを実行して、RLPを切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  3. rdbbconlineコマンドを実行して、RLPをオンラインにします。

  4. 利用者業務を再開します。

複写先システム

  1. メッセージにより、異常を検出した資源を特定します。

  2. rdbbcrefコマンドを実行して、満杯のRLCをすべて反映します。

    $ rdbbcref -p RLP名 -a
  3. rdbbcrefコマンドの実行を停止します。

  4. Symfoware Serverのrdbinhコマンドを実行して対象のDSIをアクセス禁止にしてから、rdbbcrefコマンドを実行してログ破棄を実行します。

    $ rdbbcref -p RLP名 -a -f inh
  5. rdbbcofflineコマンドを実行して、RLPを切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  6. XMLインデックスの定義を削除します。

  7. DSIの全件複写を実施します。

  8. rdbbconlineコマンドを実行して、RLPをオンラインにします。

  9. rdbbcextコマンドおよびrdbbcrefコマンドを実行し、RERUNログの抽出と反映を再開します。

    $ rdbbcext -p RLP名
    $ rdbbcref -a -p RLP名

ポイント

複写先システムのRLPをオンラインにした後、複写元システムで利用者業務を再開します。

参照

  • XMLインデックス活性状態からのリカバリ方法については、“Symfoware Server RDB運用ガイド”を参照してください。

  • XMLインデックスの定義削除については“Symfoware Server RDB運用ガイド(XMLアダプタ編)”を参照してください。

  • XMLインデックスの利用制限については“Active DB Guard 設計・セットアップガイド”の“サポート対象資源”を参照してください。

  • ログ破棄については“5.21 ログ破棄”を参照してください。

  • 全件複写の詳細については“4.4.6 全件複写によるデータの移行”を参照してください。

  • RLPのオンラインについては“2.1.3 RLPのオンライン”を参照してください。

  • Symfoware Serverのrdbinhコマンドについては“Symfoware Server コマンドリファレンス”を参照してください。

5.10.5.3 データベース定義不整合

RERUNログ反映中にデータベース定義不整合を検出した場合には、メッセージを出力して、rdbbcrefコマンドが異常終了します。

データベース定義の不整合とは、複写元システムと複写先システムでデータベース定義またはデータベースの状態が異なる場合のことです。複写先システムでデータベースの定義途中やデータベースの初期化途中に運用を開始した場合に発生します。

両システムでの環境構築の不整合であるため表定義からの再作成を推奨します。

不整合発生原因によっては、表定義の再作成が不要の場合があります。

データベース定義不整合には以下のものがあります。

参考

複写元システムと複写先システムでは、実表に対する列定義の追加や削除などの変更操作履歴も一致している必要があります。表の更新履歴の不一致は、これまで定義したCREATE TABLE、ALTER TABLEなどの定義の内容、および実行順番が両システムで異なった操作をした場合に発生します。定義の表示コマンドでは一致している定義であっても、両システムで保持している内部情報が不一致の状態であり、正常な反映処理は実施できません。

メッセージから対象資源を特定し、rdbbcrefコマンドを実行して、その他の資源の反映処理を行うとともに、対象のDSIのログ破棄を実行します。その後、RLPを切り替えオフラインにして、表定義からDSIを両システムで再作成します。

データベース定義不整合からのリカバリ操作の手順を以下に示します。

操作の手順

複写元システム

  1. 利用者業務を停止します。

  2. rdbbcswhコマンドを実行し、RLCファイルの強制交替を実施します。

    $ rdbbcswh -p RLP名
  3. rdbbcofflineコマンドを実行し、切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  4. Symfoware Serverのrdbunlコマンドを実行し、対象の表に関連するDSIのアンロードを実施します。

  5. 表定義からの再作成を実施します。

  6. 4.で取得した退避データで、Symfoware Serverのrdbsloaderコマンドを使用してすべてのDSIを創成します。

  7. rdbbcmapコマンドを実行して、データベース定義の関連付けを実施します。

    $ rdbbcmap -E -p RLP名 資源識別子抽出ファイル名
  8. rdbbconlineコマンドを実行し、オンラインにします。

  9. 利用者業務を再開します。

複写先システム

  1. メッセージにより、リカバリ対象資源を特定します。

  2. rdbbcrefコマンドの実行を停止します。

  3. 特定したリカバリ対象資源をSymfoware Serverのrdbinhコマンドを実行して対象のDSIを閉塞に設定してから、rdbbcrefコマンドを実行してその他の資源の反映処理を行うとともに、対象のDSIのログ破棄を実行します。

    $ rdbbcref -p RLP名 -a -f inh
  4. rdbbcofflineコマンドを実行し、切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  5. 表定義からの再作成を実施します。

  6. 複写元システムで退避したデータを利用して、Symfoware ServerのrdbsloaderコマンドですべてのDSIを創成します。

  7. テンプレートシェルスクリプトadgfmtmndb.shを実行して、RLP管理オブジェクトの初期化を行います。

    $ adgfmtmndb.sh -p RLP名 -M
  8. rdbbcmapコマンドを実行して、データベース定義の関連付けを実施します。

    $ rdbbcmap -R -p RLP名 資源識別子抽出ファイル名
  9. rdbbconlineコマンドを実行し、オンラインにします。

  10. rdbbcextコマンドおよびrdbbcrefコマンドを実行し、RERUNログの抽出と反映を再開します。

    $ rdbbcext -p RLP名
    $ rdbbcref -a -p RLP名

注意

  • 格納データを暗号化している場合でも、rdbbcmapコマンドを使用して作成した資源識別子抽出ファイルは暗号化されません。資源識別子抽出ファイルを相手システムに転送するときは、opensslコマンドなどのツールを使用して資源識別子抽出ファイルを暗号化してください。また、資源識別子の登録が完了した時点で、資源識別子抽出ファイルを破棄してください。

  • 格納データを暗号化している場合でも、rdbunlコマンドを使用して取得したDSIの退避データは暗号化されません。退避データを複写先システムに転送するときは、opensslコマンドなどのツールを使用して退避データを暗号化してください。また、退避データが不要となった際にはファイルを削除してください。

ポイント

不整合発生原因によっては、表定義からすべての再作成を行わずにインデックスなど一部の対処で可能な場合があります。下の表をもとに、表定義の再作成を行わずにリカバリできるかどうかを判断してください。なお、判断が難しい場合は、表定義からリカバリすることを推奨します。

参照

  • RLPのオンラインについては“2.1.3 RLPのオンライン”を参照してください。

  • 退避データファイルの削除方法については“Symfoware Server RDB運用ガイド”を参照してください。

表5.7 表定義の再作成を行わないリカバリ

現象

リカバリ方法

ユニークINDEXのDSIの未フォーマット

複写先システムで対象のDSIのフォーマットを行う。または、表のDSIのロードを行う。

表のDSIの未フォーマット

INDEXのDSI未定義

複写先システムでDSI定義を追加する。

ユニークINDEXのDSO未定義

複写先システムで表定義から再作成を行う。

注意

「表の更新履歴の不一致」の場合は必ず両システムの表定義から再作成を行う必要があります。

参照

  • ログ破棄の詳細については“5.21 ログ破棄”を参照してください。

  • 全件複写の詳細については“4.4.6 全件複写によるデータの移行”を参照してください。

  • Symfoware Serverのrdbunlコマンドおよびrdbsloaderコマンド、rdbinhコマンドについては“Symfoware Server コマンドリファレンス”を参照してください。

5.10.5.4 データベース定義の関連付け未定義

RERUNログ反映中にデータベース定義の関連付け未定義を検出した場合には、メッセージを出力して、rdbbcrefコマンドが異常終了します。

データベース定義の関連付け未定義とは、複写元システムと複写先システムでデータベース定義の関連付けが行われていない場合のことです。データベース定義後に関連付けを行わなかった場合に発生します。

リカバリ方法

メッセージを確認して、以下のリカバリを実施します。

表のDSIの関連付け未定義の場合(資源単位のリカバリ)

表のDSIの関連付け未定義からのリカバリ操作の手順を以下に示します。

操作手順

複写元システム
  1. 複写元システムで利用者業務を停止します。

  2. 複写元システムでrdbbcswhコマンドを実行し、RLCファイルの強制交替を実施します。

    $ rdbbcswh -p RLP名
  3. rdbbcrlcコマンドを実行して、RLCを退避します。

    $ rdbbcrlc -B -p RLP名 -f 出力ファイル名
  4. rdbbcofflineコマンドを実行し、切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  5. 複写元システムでrdbbcmapコマンドを実行し、ログ破棄した資源に関して複写元資源識別子から対象の資源名を表示します。

    $ rdbbcmap -Ni -r 複写元システムの資源識別子
  6. Symfoware Serverのrdbunlコマンドを実行し、ログ破棄した資源をアンロードします。

  7. rdbbcmapコマンドにより、データベース定義の関連付けを実施します。

    $ rdbbcmap -E -p RLP名 資源識別子抽出ファイル名
  8. 複写元システムでrdbbconlineコマンドを実行し、オンラインにします。

  9. 利用者業務を再開します。

複写先システム
  1. メッセージにより、異常原因を特定します。

  2. 複写先システムでrdbbcrefコマンドを実行して、その他の資源の反映処理を行うとともに、データベース定義の関連付けしていないログ破棄を実施します。

    $ rdbbcref -p RLP名 -a -f map
  3. rdbbcofflineコマンドを実行し、切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  4. 複写元システムで退避したデータを使って、ログ破棄した資源のロード処理をSymfoware Serverのrdbsloaderコマンドで実施します。

  5. テンプレートシェルスクリプトadgfmtmndb.shを実行して、RLP管理オブジェクトの初期化を行います。

    $ adgfmtmndb.sh -p RLP名 -M
  6. rdbbcmapコマンドを実行して、データベース定義の関連付けを実施します。

    $ rdbbcmap -R -p RLP名 資源識別子抽出ファイル名
  7. 複写先システムでrdbbconlineコマンドを実行して、オンラインにします。

  8. rdbbcextコマンドおよびrdbbcrefコマンドを実行し、RERUNログの抽出と反映を再開します。

    $ rdbbcext -p RLP名
    $ rdbbcref -a -p RLP名

順序の関連付け未定義の場合

操作の手順

複写元システム
  1. 複写元システムで利用者業務を停止します。

  2. 順序番号を確認します。RLPのオンライン中に、Symfoware Serverのrdbexecsqlコマンドにより、順序番号を生成することにより順序番号を確認します。

  3. rdbbcrlcコマンドを実行して、RLCを退避します。

    $ rdbbcrlc -B -p RLP名 -f 出力ファイル名
  4. 複写元システムでrdbbcswhコマンドを実行し、RLCファイルの強制交替を実施します。

    $ rdbbcswh -p RLP名
  5. 両システムでrdbbcofflineコマンドを実行し、切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  6. 複写元システムでrdbbcmapコマンドを実行し、複写元資源識別子から対象の資源名を表示します。

    $ rdbbcmap -Ns -r 複写元システムの資源識別子
  7. rdbbcmapコマンドにより、データベース定義の関連付けを実施します。

    $ rdbbcmap -E -p RLP名 資源識別子抽出ファイル名
  8. 複写元システムでrdbbconlineコマンドを実行し、オンラインにします。

  9. 利用者業務を再開します。

複写先システム
  1. メッセージにより、異常原因を特定します。

  2. 複写先システムでrdbbcrefコマンドを実行して、その他の資源の反映処理を行うとともに、データベース定義の関連付けしていないログ破棄を実施します。

    $ rdbbcref -p RLP名 -a -f map
  3. rdbbcofflineコマンドを実行し、切り替えオフラインにします。

    $ rdbbcoffline -p RLP名 -m switch
  4. Symfoware Serverのrdbddlexコマンドで順序定義を再作成(削除と定義)します。

  5. テンプレートシェルスクリプトadgfmtmndb.shを実行して、RLP管理オブジェクトの初期化を行います。

    $ adgfmtmndb.sh -p RLP名 -M
  6. rdbbcmapコマンドを実行して、データベース定義の関連付けを実施します。

    $ rdbbcmap -R -p RLP名 資源識別子抽出ファイル名
  7. 複写先システムでrdbbconlineコマンドを実行して、オンラインにします。

  8. rdbbcextコマンドおよびrdbbcrefコマンドを実行し、RERUNログの抽出と反映を再開します。

    $ rdbbcext -p RLP名
    $ rdbbcref -a -p RLP名

表のDSIの関連付け未定義の場合(ロググループ単位のリカバリ)

RLP環境の初期化の手順を実施し、“データベースの整合性合せ”の手順で以下を行います。

リカバリは、利用者業務を継続し、後から行うことも可能です。その場合には、複写元システムおよび複写先システムのRLPを終了オフラインにして、業務を継続してください。その後、利用者業務が停止可能な時間帯に、RLP環境の初期化を実施してください。

注意

  • 格納データを暗号化している場合でも、rdbbcmapコマンドを使用して作成した資源識別子抽出ファイルは暗号化されません。資源識別子抽出ファイルを相手システムに転送するときは、opensslコマンドなどのツールを使用して資源識別子抽出ファイルを暗号化してください。また、資源識別子の登録が完了した時点で、資源識別子抽出ファイルを破棄してください。

  • 格納データを暗号化している場合でも、rdbunlコマンドを使用して取得したDSIの退避データは暗号化されません。退避データを複写先システムに転送するときは、opensslコマンドなどのツールを使用して退避データを暗号化してください。また、退避データが不要となった際にはファイルを削除してください。

参照

  • RLPのオンラインについては“2.1.3 RLPのオンライン”を参照してください。

  • ログ破棄については“5.21 ログ破棄”を参照してください。

  • RLP環境の初期化については“5.19 RLP環境の初期化によるRLPの復旧”を参照してください。

  • 終了オフラインについては“2.8.1 終了オフライン”を参照してください。

  • データベース定義の関連付けについては“Active DB Guard 設計・セットアップガイド”の“システム間のデータベース資源の関連付け”を参照してください。

  • BC管理DBのDSI名称については“Active DB Guard 設計・セットアップガイド”の“BC管理DBの構成”を参照してください。

  • Symfoware Serverのrdbunlコマンド、rdbsloaderコマンド、rdbexecsqlコマンドおよびrdbddlexコマンドについては“Symfoware Server コマンドリファレンス ”を参照してください。

  • テンプレートシェルスクリプトについての詳細は“Active DB Guard 設計・セットアップガイド”の“テンプレートシェルスクリプトについて”を参照してください。

  • 退避データファイルの削除方法については“Symfoware Server RDB運用ガイド”を参照してください。