4 データベースの移行

次の各トピックでは、移行ジョブの実行について説明します。

4.1 データベース移行プロセスの評価

要件 説明 コメント
事前チェックと設定の検証

データベース移行プロセスを評価するには、ZDMCLI migrate databaseコマンドで-evalオプションを使用します。

完成したレスポンス・ファイルを使用可能にし、必要な資格証明(ソース・データベースのSYSパスワード、オブジェクト・ストア(バケット)のSwift認証トークン、ソース・サーバーがrootユーザーを介してアクセスされる場合はrootユーザーのパスワードなど)を準備します。

ソース・データベース・サーバーへの接続にルート資格証明を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb source_db_unique_name_value -sourcenode source_database_server_name -srcroot -targetnode target_database_server_name -targethome target_database_ORACLE_HOME -backupuser Object_store_login_user_name -rsp response_file_location -tgtauth zdmauth -tgtarg1 user:target_database_server_login_user_name -tgtarg2 identity_file:ZDM_installed_user_private_key_file_location -tgtarg3 sudo_location:/usr/bin/sudo -eval

ソース・データベース・サーバーへの接続にSSH鍵を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb source_db_unique_name_value -sourcenode source_database_server_name -srcauth zdmauth -srcarg1 user:source_database_server_login_user_name -srcarg2 identity_file:ZDM_installed_user_private_key_file_location -srcarg3 sudo_location:/usr/bin/sudo -targetnode target_database_server_name -targethome target_database_ORACLE_HOME_value -backupuser Object_store_login_user_name -rsp response_file_location -tgtauth zdmauth -tgtarg1 user:target_database_server_login_user_name -tgtarg2 identity_file:ZDM_installed_user_private_key_file_location -tgtarg3 sudo_location:/usr/bin/sudo -eval

ソースのシングル・インスタンス・データベースがGrid Infrastructureホームなしでデプロイされている場合、前述のコマンドでは、-sourcedbのかわりに-sourcesidを使用します。

また、ソース・データベースがPASSWORDベースのウォレット用に構成されている場合、前述のコマンドに-tdekeystorepasswdオプションを追加し、プロンプトにソース・データベースのTDEキーストア・パスワード値を指定します。

migrate databaseコマンドは、ソースおよびターゲットのデータベース・サーバーへの接続をチェックします。

migrate databaseコマンドでは、ソース・ホームとターゲット・ホームのパッチ・レベル間のパッチの互換性もチェックされ、ターゲット・ホームのパッチ・レベルがソース以上であることが要求されます。ターゲット・ホームのパッチ・レベルが想定どおりでない場合、移行ジョブは停止し、欠落しているパッチがレポートされます。ターゲット・ホームに必要なパッチを適用することも、–ignore PATCH_CHECKまたは-ignore ALLオプションを移行コマンドに追加することによって移行を強制的に続行することもできます。

移行のたびに、まずmigrate databaseを評価モードで実行することをお薦めします。この評価により、実際の移行を実行する前に、設定および構成の潜在的な問題を修正できるようになります。評価モードでは、ソース・データベースおよびターゲット・データベースへの変更を有効にせずに移行プロセスが実行されます。実際の移行を実行する前に、-evalオプションを何回使用してコマンドを実行しても安全です。

Zero Downtime Migrationでは、次の事前チェックが実行されます。

  • ソース・データベースに関する情報を検出します
  • ターゲット・データベースに関する情報を検出します
  • ソース・データベース・サーバーでZero Downtime Migrationヘルパー・モジュールを設定します
  • ターゲット・データベース・サーバーでZero Downtime Migrationヘルパー・モジュールを設定します
  • RMANバックアップを暗号化するためのランダム・パスワードを生成します

    このパスワードは、オブジェクト・ストアにソース・データベースをバックアップするために必要です。

  • ソース・データベースを検証します
    • アーカイブ・ログ・モード・チェック
    • TDEの設定
    • SYSパスワード
    • パッチ・レベル
  • ターゲット・データベースを検証します
    • パッチ・レベル
    • データ・ファイル・ストレージの場所(ASMディスク・グループまたはACFSファイル・システム)
  • オブジェクト・ストア資格証明を検証します

プロンプトに、ソース・データベースのSYSパスワードを指定します。バックアップ先がオブジェクト・ストア(バケット)の場合、Swift認証トークンを指定します。バックアップ先がStorage Classic (コンテナ)の場合は、テナンシ・ログイン・パスワードを指定します。ソース・サーバーにrootユーザーを使用してアクセスする場合、rootユーザーのパスワードを指定します。

ソース・データベース・サーバーへの接続にルート資格証明を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb ZDM12201_phx1sp -sourcenode zdm122011 -srcroot -targetnode ocitarget1 -targethome /u02/app/oracle/product/12.2.0/dbhome_3 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_ZDM12201.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL -eval

Enter source database ZDM12201_phx1sp SYS password:

Enter source user "root" password:

Enter user "backup_user@example.com" password:

これにより、次のメッセージがジョブID番号とともに表示されます。後で使用するためにジョブID番号をメモします。

Operation "zdmcli migrate database" scheduled with the job ID "5".

ソース・データベース・サーバーへの接続にSSH鍵を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb ZDM12201_phx1sp -sourcenode zdm122011 -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -srcarg3 sudo_location:/usr/bin/sudo -targetnode ocitarget1 -targethome /u02/app/oracle/product/12.2.0/dbhome_3 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_ZDM12201.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL -eval

Enter source database ZDM12201_phx1sp SYS password:

Enter user "backup_user@example.com" password:

これにより、次のメッセージがジョブID番号とともに表示されます。後で使用するためにジョブID番号をメモします。

Operation "zdmcli migrate database" scheduled with the job ID "5".

サンプル・コマンド出力については、事前チェック検証を参照してください。

4.2 移行ジョブのステータスの問合せ

要件 説明 コメント
移行ジョブのステータスの問合せ

ジョブの実行中に、移行ジョブのステータスを問い合せることができます。

ジョブIDを指定してZDMCLI query jobコマンドを使用し、データベース移行ジョブのステータスを問い合せます。ジョブIDは、データベース移行ジョブの発行時にコマンド出力に表示されます。

zdmuser>$ZDM_HOME/bin/zdmcli query job -jobid job-id

移行ジョブのコンソール出力は、query jobコマンド出力に示されているファイル(Result file path:)にあります。このサンプル出力に示されるように、指定したファイルで移行の進行状況メッセージを参照できます。

Result file path: "/u01/app/zdmbase/chkbase/scheduled/job-5-2019-12-16-06:37:04.log"

次に例を示します。

zdmuser>$ZDM_HOME/bin/zdmcli query job -jobid 5

4.3 データベースの移行

データベース移行ジョブを発行する前に、ご使用の構成および設定にプロセスが対応できるか評価移行ジョブが判断に成功することを確認します。評価移行ジョブが成功しなかった場合、この移行ジョブは成功しません。

データベース移行を開始する前に、移行プロセスを一時停止して再開する必要があるかどうかを決定します。移行ジョブが開始すると、ジョブ・システムによって、構成されたとおりにジョブが実行されます。移行ジョブを特定の時点で一時停止および再開する必要がある場合は、移行ジョブのフェーズのリスト移行ジョブの一時停止および再開移行ジョブの再実行を参照してください。

要件 説明 コメント
データベースの移行

データベースを移行するには、完成したレスポンス・ファイルを用意し、必要な資格証明(ソース・データベースのSYSパスワード、オブジェクト・ストア(バケット)のSwift認証トークン、ソース・サーバーがrootユーザーを介してアクセスされる場合はrootユーザーのパスワードなど)を準備します。

ソース・データベース・サーバーへの接続にルート資格証明を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb source_db_unique_name_value -sourcenode source_database_server_name -srcroot -targetnode target_database_server_name -targethome target_database_ORACLE_HOME -backupuser Object_store_login_user_name -rsp response_file_location -tgtauth zdmauth -tgtarg1 user:target_database_server_login_user_name -tgtarg2 identity_file:ZDM_installed_user_private_key_file_location -tgtarg3 sudo_location:/usr/bin/sudo

ソース・データベース・サーバーへの接続にSSH鍵を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb source_db_unique_name_value -sourcenode source_database_server_name -srcauth zdmauth -srcarg1 user:source_database_server_login_user_name -srcarg2 identity_file:ZDM_installed_user_private_key_file_location -srcarg3 sudo_location:/usr/bin/sudo -targetnode target_database_server_name -targethome target_database_ORACLE_HOME_value -backupuser Object_store_login_user_name -rsp response_file_location -tgtauth zdmauth -tgtarg1 user:target_database_server_login_user_name -tgtarg2 identity_file:ZDM_installed_user_private_key_file_location -tgtarg3 sudo_location:/usr/bin/sudo

ソースのシングル・インスタンス・データベースがGrid Infrastructureホームなしでデプロイされている場合、前述のコマンドでは、-sourcedbのかわりに-sourcesidを使用します。

また、ソース・データベースがPASSWORDベースのウォレット用に構成されている場合、前述のコマンドに-tdekeystorepasswdオプションを追加し、プロンプトにソース・データベースのTDEキーストア・パスワード値を指定します。

migrate databaseコマンドでは、ソース・ホームとターゲット・ホームのパッチ・レベル間のパッチの互換性がチェックされ、ターゲット・ホームのパッチ・レベルがソース以上であることが要求されます。ターゲット・ホームのパッチ・レベルが想定どおりでない場合、移行ジョブは停止し、欠落しているパッチがレポートされます。ターゲット・ホームに必要なパッチを適用することも、–ignore PATCH_CHECKまたは-ignore ALLオプションをmigrate databaseコマンドに追加することによって移行を強制的に続行することもできます。

プロンプトに、ソース・データベースのSYSパスワードを指定します。バックアップ先がオブジェクト・ストア(バケット)の場合、Swift認証トークンを指定します。バックアップ先がStorage Classic (コンテナ)の場合は、テナンシ・ログイン・パスワードを指定します。ソース・サーバーにrootユーザーを使用してアクセスする場合、rootユーザーのパスワードを指定します。

ソース・データベース・サーバーへの接続にルート資格証明を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb ZDM12201_phx1sp -sourcenode zdm122011 -srcroot -targetnode ocitarget1 -targethome /u02/app/oracle/product/12.2.0/dbhome_3 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_ZDM12201.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL

Enter source database ZDM12201_phx1sp SYS password:

Enter source user "root" password:

Enter user "backup_user@example.com" password:

これにより、次のメッセージがジョブID番号とともに表示されます。後で使用するためにジョブID番号をメモします。

Operation "zdmcli migrate database" scheduled with the job ID "6".

ソース・データベース・サーバーへの接続にSSH鍵を使用する場合、コマンドは次のようになります。

zdmuser>$ZDM_HOME/bin/zdmcli migrate database -sourcedb ZDM12201_phx1sp -sourcenode zdm122011 -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -srcarg3 sudo_location:/usr/bin/sudo -targetnode ocitarget1 -targethome /u02/app/oracle/product/12.2.0/dbhome_3 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_ZDM12201.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL

Enter source database ZDM12201_phx1sp SYS password:

Enter user "backup_user@example.com" password:

これにより、次のメッセージがジョブID番号とともに表示されます。後で使用するためにジョブID番号をメモします。

Operation "zdmcli migrate database" scheduled with the job ID "6".

次のコマンドを使用して、移行ジョブのステータスを問い合せます。

$ZDM_HOME/bin/zdmcli query job -jobid 6

サンプル・コマンド出力については、移行ジョブの出力を参照してください。

4.4 移行ジョブのフェーズのリスト

要件 説明 コメント
移行ジョブのフェーズのリスト

移行ジョブに関わる操作フェーズをリストするには、-listphasesオプションをZDMCLI migrate databaseコマンドに追加します。

次に例を示します。

zdmuser> $ZDM_HOME/bin/zdmcli migrate database -sourcedb ZDM12201_phx1sp -sourcenode zdm122011 -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -srcarg3 sudo_location:/usr/bin/sudo -targetnode ocitarget1 -targethome /u02/app/oracle/product/12.2.0/dbhome_3 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_ZDM12201.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -tgtarg3 sudo_location:/usr/bin/sudo -listphases

サンプル・コマンド出力については、移行ジョブのフェーズのリストを参照してください。

4.5 移行ジョブの一時停止および再開

要件 説明 コメント
移行ジョブの一時停止および再開

移行ジョブはZDM_SETUP_TGTフェーズの後の任意の時点で一時停止し、いつでも再開できます。

移行ジョブを一時停止するには、ZDMCLI migrate databaseコマンドで、一時停止する有効なフェーズとともに–pauseafterオプションを指定します。-listphasesコマンド出力でリストされる有効なフェーズを選択します。

ZDM_SETUP_TGTフェーズの後に一時停止することをお薦めします。

たとえば、-pauseafter ZDM_CONFIGURE_DG_SRCと指定すると、移行ジョブはZDM_CONFIGURE_DG_SRCフェーズの完了後に一時停止します。

zdmuser> $ZDM_HOME/bin/zdmcli migrate database -sourcedb ZDM12201_phx1sp -sourcenode zdm122011 -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -srcarg3 sudo_location:/usr/bin/sudo -targetnode ocitarget1 -targethome /u02/app/oracle/product/12.2.0/dbhome_3 -backupuser backup_user@example.com -rsp /u01/app/zdmhome/rhp/zdm/template/zdm_template_ZDM12201.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm_service_host.ppk -tgtarg3 sudo_location:/usr/bin/sudo -pauseafter ZDM_CONFIGURE_DG_SRC

一時停止されたジョブは、ZDMCLI resume jobコマンドを実行し、ジョブIDを指定することで、いつでも再開できます。

別の一時停止をスケジュールするには、resume jobコマンドで、一時停止する有効なフェーズとともに–pauseafterオプションを指定します。現在一時停止しているフェーズより後の有効なフェーズで、-listphasesコマンド出力にリストされているフェーズを選択します。

resume jobコマンド構文は次のとおりです

zdmuser> $ZDM_HOME/bin/zdmcli resume job -jobid Job_ID [-pauseafter valid-phase]

-pauseafterオプションで指定できるフェーズは1つのみです。

注意: フェーズZDM_CONFIGURE_DG_SRCが完了すると、ターゲットにスタンバイが作成され、ソースからターゲットへの同期が発生します。ロール変更の操作をモニターして再開するかどうかを決定できます。

たとえば、移行ジョブを再開するときに別の場所で一時停止するには、次のようにします。

zdmuser> $ZDM_HOME/bin/zdmcli resume job -jobid 6 -pauseafter ZDM_SWITCHOVER_TGT

4.6 移行ジョブの再実行

要件 説明 コメント
移行ジョブの再実行

移行ワークフローに予期しないエラーがある場合は、それらを修正して移行ジョブを再実行できます。

エラーはジョブ出力に記録され、ZDMCLI query jobコマンドを使用して問い合せることができます。エラーが解決されると、失敗したジョブは障害が発生した場所から続行できます。

次に示すように、再実行するジョブのジョブIDを指定してZDMCLI resume jobコマンドを実行し、移行ジョブを再実行します。

zdmuser> $ZDM_HOME/bin/zdmcli resume job -jobid Job_ID

次に例を示します。

$ZDM_HOME/bin/zdmcli resume job -jobid 6

4.7 移行後のタスク

要件 説明 コメント
ターゲット・データベースでのdatapatchの実行

データベース移行ジョブを完了した後、ターゲット・データベース環境がソース・データベースよりも高いパッチ・レベルである場合は、ターゲット・データベースでdatapatchユーティリティを実行する必要があります。

たとえば、ソース・データベースがOct 2018 PSU/BPで、ターゲットがJan 2019 PSU/BPである場合、datapatchユーティリティを実行する必要があります。

ターゲットでdatapatchを実行する前に、必ずソース(スタンバイ)データベースのバイナリにターゲット・パッチ・レベルを適用します。

マルチテナント・アーキテクチャを実行している場合は、PDBを開きます。

SQL> alter pluggable database all open;

すべてのPDBでdatapatchを実行することをお薦めします。ただし、CDB内のPDBのサブセットのみを開く場合は、かわりに次のコマンドを使用できます。datapatchは、CDBおよびオープンされたPDBでのみ実行されます。

SQL> alter pluggable database PDB_NAME open;

後からdatapatchを(以前にスキップされた、または新しくプラグインされた) PDBで実行するには、AlTER PLUGGABLE DATABASEコマンドを使用してデータベースを開き、datapatchユーティリティを再実行します。

ORACLE_HOMEのOPatchディレクトリに移動して、datapatchユーティリティを実行します。

% cd $ORACLE_HOME/OPatch

% ./datapatch -verbose

datapatchユーティリティにより、必要な適用スクリプトが実行され、変更されたSQLファイルがデータベースにロードされます。dba_registry_sqlpatchビューに、パッチの適用を示すエントリが追加されます。

エラーがないか確認します。エラー・ログは、$ORACLE_BASE/cfgtoollogs/sqlpatch/patch#/unique patch IDディレクトリに次の形式で格納されます。

patch#_apply_database_SID_CDB_name_timestamp.log

database_SIDはデータベースSID、CDB_nameはマルチテナント・コンテナ・データベースの名前、timestampはYYYYMMMDD_HH_MM_SS形式です

なし
パッチの適用 ターゲット・プラットフォームに提供されているコンソールまたはコマンドとAPIのいずれかを使用して、移行されたデータベースにパッチを適用できることを確認します。 なし
バックアップの作成 ターゲット・プラットフォームに提供されているコンソールまたはコマンドとAPIのいずれかを使用して、移行されたデータベースをバックアップできることを確認します。 なし