4 Zero Downtime Migrationを使用したデータベースの移行
データベース移行ジョブを評価し、ジョブを実行し、データベースの移行中または移行後にその他の操作を実行します。
既知の問題、My Oracle Supportノートおよびランブックの最新情報は、Zero Downtime Migrationリリース・ノートを参照してください。
- データベースの移行
次の手順に従って、Zero Downtime Migrationを使用してデータベースの移行を実行します。 - 移行ジョブのステータスの問合せ
ジョブの実行中に、移行ジョブのステータスを問い合せることができます。 - 移行ジョブのフェーズのリスト
移行ジョブに組み込まれている操作フェーズをリストできます。 - 移行ジョブの一時停止および再開
移行ジョブは、ZDM_SETUP_TGT
フェーズ後の任意の時点で一時停止できます。また、いつでも再開できます。 - 移行ジョブの再実行
移行ワークフローに予期しないエラーがある場合は、それらを修正して移行ジョブを再実行できます。 - 実行中の移行ジョブの終了
指定したデータベースに対してデータベース移行ジョブを再発行する場合は、まず、実行中の移行ジョブを停止する必要があります。 - 移行後のタスク
次のトピックでは、データベース移行ジョブの完了後に実行するタスクについて説明します。
データベースの移行
次の手順に従って、Zero Downtime Migrationを使用してデータベースの移行を実行します。
移行ジョブのステータスの問合せ
ジョブの実行中に、移行ジョブのステータスを問い合せることができます。
ジョブIDを指定してZDMCLI query job
コマンドを使用し、データベース移行ジョブのステータスを問い合せます。ジョブIDは、データベース移行ジョブの発行時にコマンド出力に表示されます。
zdmuser> $ZDM_HOME/bin/zdmcli query job -jobid job-id
移行ジョブのコンソール出力は、query job
コマンド出力(結果ファイルのパス)に示されているファイルで確認できます。指定されたファイルで移行の進行状況メッセージを確認できます
移行ジョブのフェーズのリスト
移行ジョブに組み込まれている操作フェーズをリストできます。
移行ジョブに組み込まれている操作フェーズをリストするには、-listphases
オプションをZDMCLI migrate
コマンドに追加します。このオプションは、操作に組み込まれているフェーズをリストします。
次に例を示します。
zdmuser> $ZDM_HOME/bin/zdmcli migrate database -sourcedb zdmsdb -sourcenode ocicdb1 -srcauth zdmauth
-srcarg1 user:opc -srcarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -srcarg3 sudo_location:/usr/bin/sudo
-targetnode ocidb1 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_zdmsdb.rsp
-tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk
-tgtarg3 sudo_location:/usr/bin/sudo -listphases
移行ジョブの一時停止および再開
移行ジョブは、ZDM_SETUP_TGT
フェーズ後の任意の時点で一時停止できます。また、いつでも再開できます。
移行ジョブを一時停止するには、ZDMCLI
migrate
コマンドで、一時停止する直前の有効なフェーズとともに–pauseafter
オプションを指定します。
次の例で-pauseafter ZDM_SETUP_TGT
と指定すると、移行ジョブはZDM_SETUP_TGT
フェーズの完了後に一時停止します。
zdmuser> $ZDM_HOME/bin/zdmcli migrate database -sourcedb zdmsdb -sourcenode ocicdb1
-srcauth zdmauth -srcarg1 user:opc
-srcarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk
-srcarg3 sudo_location:/usr/bin/sudo -targetnode ocidb1
-backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_zdmsdb.rsp -tgtauth zdmauth
-tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk
-tgtarg3 sudo_location:/usr/bin/sudo -pauseafter ZDM_SETUP_TGT
一時停止する直前の移行ジョブ・フェーズの選択
migrate database ... -listphases
コマンド出力でリストされる有効なフェーズを選択します。
-pauseafter
オプションで指定できるフェーズは1つのみです。
ZDM_SETUP_TGT
の後に移行ジョブを一時停止することをお薦めします。
フェーズZDM_CONFIGURE_DG_SRC
で-pauseafter
を使用すると、フェーズの実行終了時にターゲット・データベースでスタンバイが作成され、ソース・データベースとターゲット・データベースの間で同期が発生します。
一時停止された移行ジョブ中のログ・ファイルの保持
移行ジョブの一時停止と再開の間でソース・データベース・ログ・ファイルとターゲット・データベース・ログ・ファイルがクリーン・アップされないように、ログ・ファイルはそれぞれのソース・データベース・サーバーとターゲット・データベース・サーバーの$ORACLE_BASE/zdm/zdm_db_unique_name_zdm_job_id/zdm/log
に書き込まれます。
移行ジョブの再開
一時停止されたジョブは、それぞれのジョブIDを指定してZDMCLI
resume job
コマンドを実行することで、いつでも再開できます。
zdmuser> $ZDM_HOME/bin/zdmcli resume job -jobid Job_ID
[-pauseafter valid-phase]
別の一時停止をスケジュールするには、resume
コマンドで、一時停止する直前の有効なフェーズとともに–pauseafter
オプションを指定します。migrate database ... -listphases
コマンド出力にリストされるフェーズで、現在一時停止しているフェーズより後の有効なフェーズを選択します。
移行ジョブの再実行
移行ワークフローに予期しないエラーがある場合は、それらを修正して移行ジョブを再実行できます。
エラーはジョブ出力に記録され、ZDMCLI query job
コマンドを使用して問い合せることができます。エラーを解決したら、失敗したジョブを障害が発生した時点から続行できます。
次に示すように、再実行するジョブのジョブIDを指定してZDMCLI resume job
コマンドを実行し、移行ジョブを再実行します。
zdmuser> $ZDM_HOME/bin/zdmcli resume job -jobid Job_ID
実行中の移行ジョブの終了
指定したデータベースに対してデータベース移行ジョブを再発行する場合は、まず、実行中の移行ジョブを停止する必要があります。
Zero Downtime Migrationでは、データベースがすでに進行中の移行ジョブの一部である場合、指定されたデータベースに対してMIGRATE DATABASE
コマンドの再実行の試行をブロックします。
指定されたデータベースのデータベース移行ジョブを再発行する場合は、まずZDMCLI ABORT JOB
コマンドを使用して、EXECUTING
またはPAUSED
のいずれかの状態にある実行中の移行ジョブを終了する必要があります。
zdmuser> $ZDM_HOME/bin/zdmcli abort job -jobid job-id
移行後のタスク
次のトピックでは、データベース移行ジョブの完了後に実行するタスクについて説明します。
- ターゲット・データベースでのdatapatchの実行
ターゲット・データベース環境がソース・データベースよりも高いパッチ・レベルである場合、ターゲット・データベースでdatapatchユーティリティを実行する必要があります。レスポンス・ファイルにTGT_SKIP_DATAPATCH=FALSE
を設定し、datapatchが移行ジョブの一環として実行された場合は、このタスクをスキップします。
ターゲット・データベースでのdatapatchの実行
ターゲット・データベース環境がソース・データベースよりも高いパッチ・レベルである場合、ターゲット・データベースでdatapatchユーティリティを実行する必要があります。レスポンス・ファイルにTGT_SKIP_DATAPATCH=FALSE
を設定し、datapatchが移行ジョブの一環として実行された場合は、このタスクをスキップします。
たとえば、ソース・データベースがJan 2020 PSU/BPで、ターゲットがApril 2020 PSU/BPである場合、datapatchユーティリティを実行する必要があります。ターゲットでdatapatchを実行する前に、必ずソース(スタンバイ)データベースのバイナリにターゲット・パッチ・レベルを適用します。
親トピック: 移行後のタスク