3 データベース移行の準備
Zero Downtime Migrationデータベース移行を開始する前に、サーバー間の接続の構成、ソース・データベースとターゲット・データベースの準備、レスポンス・ファイルでのパラメータの設定、必要な移行ジョブのカスタマイズの構成を行う必要があります。
新機能、既知の問題、My Oracle Supportノートの最新情報は、Zero Downtime Migrationリリース・ノートを参照してください。
- 物理データベース移行の準備
- 論理移行の準備
次の各トピックでは、論理移行ジョブを実行する前にZero Downtime Migrationの前提条件を構成する方法について説明します。 - 断続的なネットワーク障害に対するレジリエンシの構成
Zero Downtime Migrationは、バックアップまたはSSH接続の失敗の原因となる可能性のある断続的なネットワーク障害に対して回復力があります。 - 要塞ホストを使用したデータベース・サーバーの接続
Zero Downtime Migrationでは、物理移行ワークフローと論理移行ワークフローの両方の要塞ホストを介して、ソースおよびターゲットのデータベース・サーバーへの接続を構成できます。 - 自動アプリケーション・スイッチオーバーの準備
データベース移行およびスイッチオーバーの完了後にアプリケーションでのサービスの中断を最小限に抑えたり、なくすには、ソース・データベースからターゲット・データベースに接続を自動的に切り替えるようにアプリケーションを準備します。 - 移行ジョブのカスタマイズ
指定した移行ジョブ・フェーズの最初または最後に実行できるスクリプトを使用して、Zero Downtime Migrationワークフローをカスタマイズできます。Zero Downtime Migrationでは、これらのカスタマイズはユーザー・アクションを含むカスタム・プラグインと呼ばれます。
物理データベース移行の準備
次の各トピックでは、物理データベース移行ジョブを実行する前にZero Downtime Migrationの前提条件を構成する方法について説明します。
- 接続の前提条件の構成
Zero Downtime Migrationサービス・ホストとソースおよびターゲットのデータベース・サーバー間に接続を設定する必要があります。 - ソース・データベースおよびターゲット・データベースの準備
移行ジョブを構成する前に、ソース・データベースとターゲット・データベースで完了しておく必要があるタスクがいくつかあります。 - 物理移行レスポンス・ファイルの準備
必要な物理移行レスポンス・ファイル・パラメータを設定します。データベース移行プロシージャのZero Downtime Migrationレスポンス・ファイルの作成に使用するレスポンス・ファイル・テンプレート$ZDM_HOME/rhp/zdm/template/zdm_template.rsp
を取得し、ここで説明するようにファイルを編集します。 - オンプレミス・データベースのオンプレミスExadata Database Machineへの移行
Zero Downtime Migrationを使用したオンプレミスExadata Database Machineターゲットへのオンプレミスの移行は、クラウド・ターゲットへの移行と同じように機能します。レスポンス・ファイルで、PLATFORM_TYPE=NON_CLOUD
を設定して、移行ターゲットがオンプレミスであることを指定します。 - 移行中の非CDBデータベースのCDBへの変換
物理移行プロセスの一環として、Zero Downtime Migrationは非CDBソース・データベースからクラウド内の同じバージョンのPDBへの変換を処理できます。変換プロセスでは、ソース非CDBをターゲットPDBに変換してから、ターゲットの既存のCDBにプラグインします。
親トピック: データベース移行の準備
接続の前提条件の構成
Zero Downtime Migrationサービス・ホストとソースおよびターゲットのデータベース・サーバー間に接続を設定する必要があります。
次の各トピックでは、移行ジョブを実行する前にZero Downtime Migration接続の前提条件を構成する方法について説明します。
- Zero Downtime Migrationサービス・ホストからソースおよびターゲットのデータベース・サーバーへの接続の構成
- SUDOアクセスの構成
場合によっては、ソースおよびターゲットのデータベース・サーバーでsudo
を使用して操作を実行するための権限を特定のユーザーに付与する必要があります。 - ソース・データベース・サーバーとターゲット・データベース・サーバー間の接続の構成
ソース・データベース・サーバーとターゲット・データベース・サーバー間の接続を構成するには、SCANを使用したSQL*Net接続とSSHの2つのオプションがあります。 - パスフレーズなしのSSHキーの生成
Zero Downtime Migrationサービス・ホストで、Zero Downtime Migrationソフトウェア・インストール・ユーザーに認証キー・ペアがパスフレーズなしで使用できない場合は、パスフレーズなしで新しいSSHキーを生成できます。
親トピック: 物理データベースの移行の準備
Zero Downtime Migrationサービス・ホストからソースおよびターゲットのデータベース・サーバーへの接続の構成
次の手順を実行して、Zero Downtime Migrationサービス・ホストとソースおよびターゲットのデータベース・サーバー間で必要な接続を確保します。
親トピック: 接続の前提条件の構成
SUDOアクセスの構成
場合によっては、ソースおよびターゲットのデータベース・サーバーでsudo
を使用して操作を実行するための権限を特定のユーザーに付与する必要があります。
ソース・データベース・サーバーの場合:
-
ソース・データベース・サーバーに
root
ユーザーでアクセスする場合は、Sudo操作を構成する必要はありません。 -
SSHを介してソース・データベース・サーバーにアクセスする場合は、データベース・インストール・ユーザーおよび
root
ユーザーのパスワードを要求せずに実行されるようにSudo操作を構成します。たとえば、データベース・インストール・ユーザーが
oracle
の場合は、sudo su - oracle
を実行します。root
ユーザーの場合は、sudo su -
を実行します。
ターゲット・データベース・サーバーの場合:
-
ターゲット・データベース・サーバーはクラウド上にのみあるため、Sudo操作はすでに構成されています。それ以外の場合は、データベース・インストール・ユーザーおよび
root
ユーザーのパスワードを要求せずに実行されるようにすべてのSudo操作を構成します。たとえば、データベース・インストール・ユーザーが
oracle
の場合は、sudo su - oracle
を実行します。root
ユーザーの場合は、sudo su -
を実行します。
たとえば、ログイン・ユーザーがopc
の場合、opc
ユーザーに対してSudo操作を有効にできます。
親トピック: 接続の前提条件の構成
ソース・データベース・サーバーとターゲット・データベース・サーバー間の接続の構成
ソース・データベース・サーバーとターゲット・データベース・サーバー間の接続を構成するには、SCANを使用したSQL*Net接続とSSHの2つのオプションがあります。
次のいずれかのオプションを使用して接続を構成します。
オプション1: SCANを使用したSQL*Net接続
このオプションを使用するには、ターゲットのSCANはソース・データベース・サーバーから解決可能である必要があり、ソースのSCANはターゲット・サーバーから解決可能である必要があります。
ZDMCLI migrate database
コマンドの-sourcenode
パラメータに指定したソース・データベース・サーバーは、それぞれのSCANポートを使用してターゲットSCANでターゲット・データベース・インスタンスに接続できます。逆も同様です。
両側からのSCAN接続により、ソース・データベースとターゲット・データベースはどちらの方向からも同期できます。ソース・データベース・サーバーのSCANがターゲット・データベース・サーバーから解決できない場合は、レスポンス・ファイルでSKIP_FALLBACK
パラメータをTRUE
に設定する必要があり、スイッチオーバー後はターゲット・データベースとソース・データベース間で同期をとることができません。
接続のテスト
ソース環境からターゲット環境への接続をテストするには、ターゲット・データベースのTNSエントリをソース・データベース・サーバーの$ORACLE_HOME/network/admin/tnsnames.ora
ファイルに追加します。
[oracle@sourcedb ~] tnsping target-tns-string
ターゲット環境からソース環境への接続をテストするには、ソース・データベースのTNSエントリをターゲット・データベース・サーバーの$ORACLE_HOME/network/admin/tnsnames.ora
ファイルに追加します。
[oracle@targetdb ~] tnsping source-tns-string
ノート:
Zero Data Loss Recovery Applianceを使用してExadata Cloud at Customerにデータベースを移行するには、ターゲット・データベース・サーバーからソース・データベース・サーバーへの必須のSQL*Net接続が必要です。オプション2: SSHトンネルの設定
ソース・データベース・サーバーとターゲット・データベース・サーバー間でSCANおよびSCANポートを使用した接続ができない場合は、ソース・データベース・サーバーからターゲット・データベース・サーバーへのSSHトンネルを設定します。
次の手順では、rootユーザーに対してソース・データベース・サーバーでSSHトンネルを設定します。この手順は、一時チャネルと見なされるものを設定することになります。この接続オプションを使用すると、スイッチオーバー後にターゲット・データベースとソース・データベース間で同期できなくなり、この構成では元のソース・データベースに戻すことができません。
ノート:
次のステップは、Oracle Cloud Infrastructureに言及していますが、Exadata Cloud at CustomerおよびExadata Cloud Serviceにも適用できます。パスフレーズなしのSSH鍵の生成
Zero Downtime Migrationサービス・ホストで、Zero Downtime Migrationソフトウェア・インストール・ユーザーに認証キー・ペアがパスフレーズなしで使用できない場合は、パスフレーズなしで新しいSSHキーを生成できます。
ノート:
現在、SSH接続の構成ではRSAキー形式のみがサポートされているため、ssh-keygen
コマンドを使用して、両方の認証キー・ペア(公開と秘密)を生成します。
次の例は、Zero Downtime Migrationソフトウェア・インストール・ユーザーのSSHキー・ペアを生成する方法を示しています。このコマンドを使用して、opc
ユーザーのSSHキー・ペアを生成することもできます。
Zero Downtime Migrationサービス・ホストで次のコマンドを実行します。
zdmuser> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zdmuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zdmuser/.ssh/id_rsa.
Your public key has been saved in /home/zdmuser/.ssh/id_rsa.pub.
The key fingerprint is:
c7:ed:fa:2c:5b:bb:91:4b:73:93:c1:33:3f:23:3b:30 zdmuser@zdm_service_host
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . . . |
| S o . = |
| . E . * |
| X.+o.|
| .= Bo.o|
| o+*o. |
+-----------------+
このコマンドにより、id_rsa
ファイルおよびid_rsa.pub
ファイルがzdmuser
ホーム(/home/zdmuser/.ssh
など)に生成されます。
親トピック: 接続の前提条件の構成
ソース・データベースおよびターゲット・データベースの準備
移行ジョブを構成する前に、ソース・データベースとターゲット・データベースで完了しておく必要があるタスクがいくつかあります。
- ソース・データベースの前提条件
- ターゲット・データベースの前提条件
- 透過的データ暗号化キーストアの設定
Oracle Database 12cリリース2以降では、ソース・データベースおよびターゲット・データベースで透過的データ暗号化(TDE)が有効になっていない場合、移行を開始する前にTDEキーストアを構成する必要があります。
親トピック: 物理データベースの移行の準備
ソース・データベースの前提条件
Zero Downtime Migrationプロセスを開始する前に、ソース・データベースで次の前提条件を満たします。
-
ソース・データベースは
ARCHIVELOG
モードで稼働している必要があります。データベースのアーカイブ・モードの変更を参照してください。 -
ソース・データベースの文字セットは、ターゲット・データベースと同じである必要があります。
-
Oracle Database 12cリリース2以降でTDEウォレットを構成します。Oracle Database 11gリリース2 (11.2.0.4)およびOracle Database 12cリリース1でのTDEの有効化はオプションです。
Oracle Database 12cリリース2以降では、ソース・データベースで透過的データ暗号化(TDE)が有効になっていない場合、移行を開始する前にTDEウォレットを構成する必要があります。
WALLET_TYPE
は、AUTOLOGIN
(優先)またはPASSWORD
ベースのいずれかです。ウォレットの
STATUS
がOPEN
であり、WALLET_TYPE
がAUTOLOGIN
(AUTOLOGIN
ウォレット・タイプの場合)またはWALLET_TYPE
がPASSWORD
(PASSWORD
ベースのウォレット・タイプの場合)であることを確認します。マルチテナント・データーベースの場合は、すべてのPDBおよびCDBでウォレットがオープンされており、マスター・キーがすべてのPDBおよびCDBに設定されていることを確認します。SQL> SELECT * FROM v$encryption_wallet;
-
ソースがOracle RACデータベースで、
SNAPSHOT CONTROLFILE
が共有の場所にない場合、Oracle Object Storeへのバックアップ中にORA-00245エラーが発生しないように、すべてのOracle RACノード上にある共有の場所を指すようSNAPSHOT CONTROLFILE
を構成します。たとえば、データベースがASMストレージにデプロイされている場合は次のようにします。
$ rman target / RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/db_name/snapcf_db_name.f';
データベースがACFSファイル・システムにデプロイされている場合は、前述のコマンドに共有のACFSの場所を指定します。
-
ソース・データベース・サーバーのポート22でZero Downtime Migrationサービス・ホストからの着信接続が許可されることを確認します。
-
ソース・データベース・サーバーのSCANリスナー・ポート(1521など)でターゲット・データベース・サーバーからの着信接続およびターゲット・データベース・サーバーへの発信接続が許可されることを確認します。
ファイアウォールでSCANリスナー・ポートを使用する着信リモート接続がブロックされる場合は、代替SQL接続を使用可能にする必要があります。
-
移行時にソース・データベースのリカバリ時間目標(RTO)およびリカバリ・ポイント目標(RPO)を保持するには、既存のRMANバックアップ計画を保持する必要があります。
移行中に、デュアル・バックアップ計画が実施されます。既存のバックアップ計画と、Zero Downtime Migrationにより使用される計画です。2つのRMANバックアップ・ジョブ(既存のジョブとZero Downtime Migrationにより開始されたジョブ)を同時に実行することは避けてください。ソース・データベースでアーカイブ・ログが削除され、これらのアーカイブ・ログが、ターゲット・クラウド・データベースを同期させるためにZero Downtime Migrationで必要な場合は、Zero Downtime Migrationで移行プロセスを続行できるように、これらのファイルをリストアする必要があります。
-
ソース・データベースがOracle Grid Infrastructureを使用してデプロイされ、SRVCTLを使用してデータベースが登録されていない場合は、移行前にデータベースを登録する必要があります。
-
ソース・データベースではサーバー・パラメータ・ファイル(SPFILE)を使用する必要があります。
-
制御ファイルおよびSPFILEを自動的にバックアップするようにRMANがまだ構成されていない場合は、
CONFIGURE CONTROLFILE AUTOBACKUP
をON
に設定し、移行の完了後にOFF
に戻します。RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
-
オフライン移行の場合は、移行中にデータが失われないように、
ZDM_BACKUP_DIFFERENTIAL_SRC
フェーズの前にソース・データベースで受信トランザクションが行われないように計画します。Zero Downtime Migrationがバックアップの生成を開始して転送すると、ソース上の新しいトランザクションはバックアップの一部にならないため、クラウド内のターゲットにはこれらの変更が含まれません。 -
Zero Downtime Migrationサービス・ホストおよびソース・データベース・サーバーのシステム時間は、Oracle Cloud Infrastructureターゲットと同期している必要があります。
これらのいずれかのシステムの時間がOCIの時間から6分を超えて異なる場合は、調整する必要があります。NTPが構成されている場合は、
ntp time check
を使用して時刻を同期できます。NTPが構成されていない場合は、構成することをお薦めします。NTPを構成するオプションがない場合は、時間を手動で修正して、OCI時間と同期するようにする必要があります。 -
ソース・データベースとターゲット・データベースで、
COMPATIBLE
データベース初期化パラメータを同じ値に設定します。有効な値は、Oracle DatabaseのCOMPATIBLE初期化パラメータの値を参照してください。
ターゲット・データベースの前提条件
Zero Downtime Migrationプロセスを開始する前に、ターゲット・データベースで次の前提条件を満たす必要があります。
-
プレースホルダ・ターゲット・データベースを作成する必要があります。
Exadata Cloud ServiceおよびExadata Cloud at Customerターゲットの場合、データベースの移行を開始する前に、Grid Infrastructureデータベース・サービスではなくコントロール・プレーンを使用してプレースホルダ・データベースを作成する必要があります。
ノート:
このリリースでは、Grid Infrastructureベースのデータベース・サービスのみがターゲットとしてサポートされます。たとえば、LVMベースのインスタンスまたはGrid Infrastructureがないコンピュート・ノードに作成されたインスタンスは、サポートされているターゲットではありません。プレースホルダ・ターゲット・データベースは移行時に上書きされますが、全体の構成は維持されます。
次の要件に細心の注意を払ってください。
- 将来のサイズ - コンソールからデータベースを作成する際、選択したシェイプがソース・データベースを収容でき、将来のサイズ変更の要件に適応できることを確認します。適切なガイドラインは、ソース・データベースと同程度以上のサイズのシェイプを使用することです。
- 名前パラメータの設定
DB_NAME
- ターゲット・データベースがExadata Cloud ServiceまたはExadata Cloud at Customerの場合、データベースDB_NAME
はソース・データベースDB_NAME
と同じである必要があります。ターゲット・データベースがOracle Cloud Infrastructureの場合、データベースDB_NAME
はソース・データベースDB_NAME
と同じでも、異なってもかまいません。DB_UNIQUE_NAME
: ターゲット・データベースがOracle Cloud Infrastructure、Exadata Cloud ServiceまたはExadata Cloud at Customerの場合、Oracle Data Guardがターゲットをソース・データベースとは異なるデータベースとして識別できるように、ターゲット・データベースのDB_UNIQUE_NAME
パラメータ値は一意である必要があります。
- ソースSYSパスワードとの一致 - ソース・データベースのパスワードと一致する
SYS
パスワードを指定します。 - 自動バックアップの無効化 - 自動バックアップを有効にせずに、コンソールからターゲット・データベースをプロビジョニングします。
Oracle Cloud InfrastructureおよびExadata Cloud Serviceの場合は、「Configure database backups」セクションの「Enable automatic backups」オプションを選択しないでください。
Exadata Cloud at Customerの場合は、「Configure Backups」セクションでバックアップ先の「Type」を「None」に設定します。
-
ターゲット・データベース・バージョンをソース・データベース・バージョンと同じにする必要があります。ターゲット・データベースのパッチ・レベルもソース・データベースと同じ(またはそれ以上)にする必要があります。
ターゲット・データベース環境のパッチ・レベルがソース・データベースよりも高い場合(たとえば、ソース・データベースがJan 2020 PSU/BPで、ターゲット・データベースがApril 2020 PSU/BPの場合)、Zero Downtime Migrationは移行の一部としてdatapatchユーティリティを実行します。
-
ソース・データベースの文字セットは、ターゲット・データベースと同じである必要があります。
-
ターゲット・データベースのタイムゾーン・バージョンは、ソース・データベースのタイムゾーン・バージョンと同じである必要があります。現在のタイムゾーン・バージョンを確認するには、次に示すように
V$TIMEZONE_FILE
ビューを問い合せ、必要に応じてタイムゾーン・ファイルをアップグレードします。SQL> SELECT * FROM v$timezone_file;
-
TDEウォレット・フォルダが存在することを確認し、ウォレットの
STATUS
がOPEN
で、WALLET_TYPE
がAUTOLOGIN
(自動ログイン・ウォレット・タイプの場合)またはWALLET_TYPE
がPASSWORD
(パスワードベースのウォレットの場合)であることを確認します。マルチテナント・データーベースの場合は、すべてのPDBおよびCDBでウォレットがオープンされており、マスター・キーがすべてのPDBおよびCDBに設定されていることを確認します。SQL> SELECT * FROM v$encryption_wallet;
-
ターゲット・データベースではサーバー・パラメータ・ファイル(SPFILE)を使用する必要があります。
-
ターゲットがOracle RACデータベースの場合、oracleユーザーのOracle RACサーバー間にパスフレーズなしのSSH接続が設定されていることを確認します。
-
ターゲット・データベースのディスク・グループ(ASMディスク・グループまたはACFSファイル・システム)のサイズおよび使用率をチェックし、十分な記憶域がターゲット・データベース・サーバーでプロビジョニングされ、使用可能であることを確認します。
-
ソース・データベースのバックアップを収容するのに十分な記憶域がオブジェクト・ストアでプロビジョニングされ、使用可能であることを確認します。
-
Oracle Cloud Infrastructure、Exadata Cloud ServiceまたはExadata Cloud at Customer環境のターゲット・サーバーのポート22および1521 (または構成済のデータベース・リスナー・ポート)がオープンされており、ファイアウォールによってブロックされていないことを確認します。
-
ターゲット・データベース・サーバーのポート22でZero Downtime Migrationサービス・ホストからの着信接続が許可されることを確認します。
-
移行後のRMAN設定を比較できるように、RMAN
SHOW ALL
コマンドの出力を取得した後、変更されたRMAN構成設定をリセットして問題なくバックパップが機能することを確認します。RMAN> show all;
-
Zero Downtime Migrationサービス・ホストおよびソース・データベース・サーバーのシステム時間は、Oracle Cloud Infrastructureターゲットと同期している必要があります。
これらのいずれかのシステムの時間がOCIの時間から6分を超えて異なる場合は、調整する必要があります。NTPが構成されている場合は、
ntp time check
を使用して時刻を同期できます。NTPが構成されていない場合は、構成することをお薦めします。NTPを構成するオプションがない場合は、時間を手動で修正して、OCI時間と同期するようにする必要があります。 -
ソース・データベースとターゲット・データベースで、
COMPATIBLE
データベース初期化パラメータを同じ値に設定します。有効な値は、Oracle DatabaseのCOMPATIBLE初期化パラメータの値を参照してください。
親トピック: ソース・データベースおよびターゲット・データベースの準備
透過的データ暗号化キーストアの設定
Oracle Database 12cリリース2以降では、ソース・データベースおよびターゲット・データベースで透過的データ暗号化(TDE)が有効になっていない場合、移行を開始する前にTDEキーストアを構成する必要があります。
TDEは有効になっている必要があり、ソース・データベースとターゲット・データベースの両方でTDE WALLET
ステータスをOPEN
に設定する必要があります。WALLET_TYPE
は、自動ログイン・キーストアの場合はAUTOLOGIN
(優先)、パスワードベースのキーストアの場合はPASSWORD
です。マルチテナント・データベースで、すべてのPDBおよびCDBでキーストアがオープンされており、マスター・キーがすべてのPDBおよびCDBに設定されていることを確認します。
ソースおよびターゲットのデータベースでTDEが必須としてまだ構成されていない場合は、次の手順に従ってTDEキーストアを設定します。
パスワードベースのキーストアの場合はステップ1、2および4のみを実行し、自動ログイン・キーストアの場合はすべてのステップを実行します。
-
$ORACLE_HOME/network/admin/sqlnet.ora
ファイルにENCRYPTION_WALLET_LOCATION
を設定します。/home/oracle>cat /u01/app/oracle/product/12.2.0.1/dbhome_4/network/admin/sqlnet.ora ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE) (METHOD_DATA=(DIRECTORY=/u01/app/oracle/product/12.2.0.1/dbhome_4/network/admin/)))
Oracle RACインスタンスの場合は、2番目のOracle RACノードでも
ENCRYPTION_WALLET_LOCATION
を設定します。 -
キーストアを作成して構成します。
-
データベースに接続してキーストアを作成します。
$ sqlplus "/as sysdba" SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/product/12.2.0.1/dbhome_2/network/admin' identified by password;
-
キーストアを開きます。
非CDB環境の場合は、次のコマンドを実行します。
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password; keystore altered.
CDB環境の場合は、次のコマンドを実行します。
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password container = ALL; keystore altered.
-
マスター暗号化キーを作成してアクティブにします。
非CDB環境の場合は、次のコマンドを実行します。
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password with backup; keystore altered.
CDB環境の場合は、次のコマンドを実行します。
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password with backup container = ALL; keystore altered.
-
V$ENCRYPTION_KEYS
を問い合せて、キーストアのステータス、キーストアのタイプおよびキーストアの場所を取得します。SQL> SELECT * FROM v$encryption_keys; WRL_TYPE WRL_PARAMETER -------------------- -------------------------------------------------------------------------------- STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID ------------------------------ -------------------- --------- --------- ---------- FILE /u01/app/oracle/product/12.2.0.1/dbhome_2/network/admin/ OPEN PASSWORD SINGLE NO 0
パスワードベースのキーストアの構成はこの段階で完了し、キーストアはステータス
OPEN
で有効になり、WALLET_TYPE
は前述の問合せ出力でPASSWORD
と表示されます。自動ログイン・キーストアを構成する必要がある場合のみステップ3に進み、それ以外の場合はステップ4に進みます。
-
-
自動ログイン・キーストアの場合のみ、キーストア構成を実行します。
-
自動ログイン・キーストアを作成します。
SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/u01/app/oracle/product/12.2.0.1/dbhome_2/network/admin/' IDENTIFIED BY password; keystore altered.
-
パスワードベースのキーストアを閉じます。
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY password; keystore altered.
-
V$ENCRYPTION_WALLET
を問い合せて、キーストアのステータス、キーストアのタイプおよびキーストアの場所を取得します。SQL> SELECT * FROM v$encryption_wallet; WRL_TYPE WRL_PARAMETER -------------------- -------------------------------------------------------------------------------- STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID ------------------------------ -------------------- --------- --------- --------- FILE /u01/app/oracle/product/12.2.0.1/dbhome_2/network/admin/ OPEN AUTOLOGIN SINGLE NO
問合せ出力で、TDEキーストアの
STATUS
がOPEN
で、WALLET_TYPE
がAUTOLOGIN
に設定されていることを確認します。そうでない場合、自動ログイン・キーストアは正しく設定されていません。これで、自動ログイン・キーストアの構成が完了しました。
-
-
キーストア・ファイルを2番目のOracle RACノードにコピーします。
Oracle RACの共有ファイル・システムでキーストアを構成した場合、または単一インスタンス・データベースに対してTDEを有効にする場合、アクションは必要ありません。
キーストアへの共有アクセスなしでOracle RACデータベースに対してTDEを有効にする場合は、次のファイルを2番目のノードの同じ場所にコピーします。
-
/u01/app/oracle/product/12.2.0.1/dbhome_2/network/admin/ew*
-
/u01/app/oracle/product/12.2.0.1/dbhome_2/network/admin/cw*
-
親トピック: ソース・データベースおよびターゲット・データベースの準備
物理移行レスポンス・ファイルの準備
必要な物理移行レスポンス・ファイル・パラメータを設定します。データベース移行プロシージャのZero Downtime Migrationレスポンス・ファイルの作成に使用するレスポンス・ファイル・テンプレート$ZDM_HOME/rhp/zdm/template/zdm_template.rsp
を取得し、ここで説明するようにファイルを編集します。
次のレスポンス・ファイル設定は、一般的なユースケースの構成方法を示しています。構成をさらにカスタマイズするには、Zero Downtime Migration物理移行レスポンス・ファイル・パラメータのリファレンスで説明されている追加パラメータを参照してください。
TGT_DB_UNIQUE_NAME
TGT_DB_UNIQUE_NAME
をターゲット・データベースのDB_UNIQUE_NAME
値に設定します。DB_UNIQUE_NAME
を見つけるには、次を実行します。
SQL> show parameter db_unique_name
クラウド・タイプExadata Cloud at Customer Gen 1の場合、TGT_DB_UNIQUE_NAME
を現在使用されていない別のDB_UNIQUE_NAME
に設定します
PLATFORM_TYPE
PLATFORM_TYPE
を次のいずれかの値に設定します。
-
VMDB - Oracle Cloud Infrastructure仮想マシンまたはベア・メタル・ターゲット。
-
EXACS - Exadata Cloud Service
-
EXACC - Exadata Cloud at Customer
-
NON_CLOUD - オンプレミスExadata Database Machine
MIGRATION_METHOD
MIGRATION_METHOD
を次のいずれかの値に設定します。
-
ONLINE_PHYSICAL - Oracle Data Guard (オンライン)
-
OFFLINE_PHYSICAL - RMANのバックアップおよびリストア(オフライン)。これは、Oracle Standard Editionデータベースでサポートされている唯一の移行方法です。
DATA_TRANSFER_MEDIUM
DATA_TRANSFER_MEDIUM
では、ソース・データベースのバックアップに使用されるメディアを指定します。有効な値は、MIGRATION_METHOD=ONLINE_PHYSICAL
またはMIGRATION_METHOD=OFFLINE_PHYSICAL
のどちらであるかによって異なります。
MIGRATION_METHOD=ONLINE_PHYSICAL
の場合、次のいずれかのデータ転送方法の値を使用できます。
-
OSS
- スタンバイ初期化にObject Storageサービス(OSS)を使用するOracle Data Guard。Oracle Cloud Infrastructure (
VMDB
)、Exadata Cloud Service (EXACS
)およびExadata Cloud at Customer (EXACC
)に設定されたPLATFORM_TYPE
でサポートされます。また、移行ログをCloud Object Storageにアップロードする場合は、
ZDM_LOG_OSS_PAR_URL
をCloud Object Storeの事前認証済URLに設定します。事前認証済URLの取得の詳細は、Oracle Cloudのドキュメント(https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/usingpreauthenticatedrequests.htm#usingconsole)を参照してください。 -
EXTBACKUP
- 外部の場所に既存のバックアップがあるOracle Data Guard。Exadata Cloud at Customer (
EXACC
)に設定されたPLATFORM_TYPE
でサポートされますまた、指定したパスにスタンバイ制御ファイルのバックアップを作成し、ターゲット・データベース・ユーザーのバックアップ・ピースに対する読取り権限を付与します。次に例を示します。
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT 'BACKUP_PATH/lower_case_dbname/standby_ctl_%U';
standby_ctl_%Uは、システム生成の一意のファイル名です。
-
ZDLRA
- スタンバイ初期化にZDLRAを使用するOracle Data Guard。Exadata Cloud at Customer (
EXACC
)に設定されたPLATFORM_TYPE
でサポートされ、次のパラメータを設定します。-
次のように、
SRC_ZDLRA_WALLET_LOC
をウォレットの場所に設定します。SRC_ZDLRA_WALLET_LOC=/u02/app/oracle/product/12.1.0/dbhome_3/dbs/zdlra
-
TGT_ZDLRA_WALLET_LOC
をウォレット・ロケーションに設定します(例:TGT_ZDLRA_WALLET_LOC=target_database_oracle_home/dbs/zdlra
)。 -
次のように、
ZDLRA_CRED_ALIAS
をウォレットの資格証明別名に設定します。ZDLRA_CRED_ALIAS=zdlra_scan:listener_port/zdlra9:dedicated
-
-
NFS
- NFSなどのバックアップ場所を使用するOracle Data Guard。Exadata Cloud at Customer (
EXACC
)に設定されたPLATFORM_TYPE
でサポートされますまた、
BACKUP_PATH
を設定して、ソースとターゲットの両方のデータベース・サーバーからアクセスできるようになっている実際のNFSパス(NFSマウント・ポイントなど)を指定します。NFSマウント・パスはソースとターゲットの両方のデータベース・サーバーで同じである必要があります。このパスは、Zero Downtime Migrationサービス・ホストにマウントされている必要はありません。次の考慮事項に注意してください。-
ソース・データベースは、RMAN SQL*Net接続を使用して、指定されたパスにバックアップされ、Exadata Cloud at Customerにリストアされます。
-
BACKUP_PATH
に設定するパスには、ソース・データベース・ユーザーの場合は'rwx'権限が、ターゲット・データベース・ユーザーの場合は読取り権限以上が必要です。 -
BACKUP_PATH
で指定したパスに、Zero Downtime Migrationバックアップ手順によってディレクトリ$BACKUP_PATH/dbname
が作成され、このディレクトリにバックアップ・ピースが格納されます。
-
MIGRATION_METHOD=OFFLINE_PHYSICAL
の場合、次のいずれかのデータ転送方法の値を使用できます。
OSS
- Object Storageサービスを介したバックアップおよびリストアを使用した移行。Oracle Cloud Infrastructure (VMDB
)、Exadata Cloud Service (EXACS
)およびExadata Cloud at Customer (EXACC
)でサポートされています。ソースとターゲット間のSQL*Net接続は必要ありません。NFS
- NFSを介したバックアップおよびリストアを使用した移行。Exadata Cloud at Customer (EXACC
)でサポートされています。ソースとターゲット間のSQL*Net接続は必要ありません。
追加のOracle Cloud Object Storage設定
DATA_TRANSFER_MEDIUM=OSS
の場合、Oracle Cloud Object Storageにアクセスするために次のパラメータを設定します。
ソース・データベースは、指定されたコンテナにバックアップされ、RMAN SQL*Net接続を使用してExadata Cloud at Customerにリストアされます。
-
HOSTをクラウド・ストレージのRESTエンドポイントURLに設定します。
-
Oracle Cloud Infrastructureの記憶域の場合、一般的な値の形式は
HOST=https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/ObjectStorageNamespace
ですObject Storage Namespaceの値を見つけるには、Cloudコンソールにログインして「Menu」→「Administration」→「Tenancy Detail」を選択し、「Object Storage Settings」セクションで「Value against entry Object Storage Namespace」を見つけます。
-
Oracle Cloud Infrastructure Classicの記憶域の場合、一般的な値の形式は
HOST=https://acme.storage.oraclecloud.com/v1/Storage-tenancy name
です
-
-
Object Storageバケットの
OPC_CONTAINER
パラメータを設定します。バケットは、Oracle Cloud Infrastructure Classicストレージではコンテナとも呼ばれます。必要に応じてOracle Cloud Serviceコンソールを使用してObject Storageバケットが作成されていることを確認します。ソース・データベースのバックアップを収容するのに十分な記憶域がオブジェクト・ストアでプロビジョニングされ、使用可能であることを確認します。
TGT_SSH_TUNNEL_PORT
SSHトンネリングを設定した場合は、TGT_SSH_TUNNEL_PORT
パラメータを設定します。
データおよびREDOの場所
Zero Downtime Migrationでは、指定したターゲット・データベースからdata
、redo
およびreco
ストレージ・ボリュームの場所が自動的に検出されます。検出された値をオーバーライドする必要がある場合は、適切なパラメータ・セットを使用してターゲット・データベース・データ・ファイルの記憶域(ASMまたはACFS)の場所を指定します。
- ASM:
TGT_DATADG
、TGT_REDODG
およびTGT_RECODG
- ACFS:
TGT_DATAACFS
、TGT_REDOACFS
およびTGT_RECOACFS
SKIP_FALLBACK
任意でまたはターゲットとソース間の接続がないために、REDOログをターゲットからソース・スタンバイに移さない場合は、SKIP_FALLBACK=TRUE
を設定します。
TGT_SKIP_DATAPATCH
Zero Downtime Migrationは、ターゲット・データベース環境のパッチ・レベルがソース・データベースよりも高い場合(たとえば、ソース・データベースがJan 2020 PSU/BPで、ターゲット・データベースがApril 2020 PSU/BPの場合)、デフォルトでdatapatchユーティリティを移行プロセスの一部として実行します。
このタスクをスキップする場合は、TGT_SKIP_DATAPATCH=FALSE
レスポンス・ファイル・パラメータを設定します。
PHASE_NAME_MONITORING_INTERVAL
Zero Downtime Migrationで、移行中に構成された時間間隔でバックアップおよびリストア操作のステータスをモニターおよびレポートする場合は、PHASE_NAME_MONITORING_INTERVAL=n mins
を設定します。デフォルトの間隔値は10分です。モニタリングを無効にするには、これらの値を0 (ゼロ)に設定します。
ZDM_BACKUP_FULL_SRC_MONITORING_INTERVAL=
ZDM_BACKUP_INCREMENTAL_SRC_MONITORING_INTERVAL=
ZDM_BACKUP_DIFFERENTIAL_SRC_MONITORING_INTERVAL=
ZDM_CLONE_TGT_MONITORING_INTERVAL=
ZDM_OSS_RESTORE_TGT_MONITORING_INTERVAL=
ZDM_OSS_RECOVER_TGT_MONITORING_INTERVAL=
ZDM_BACKUP_RETENTION_WINDOW
移行後にソース・データベースのバックアップを保持する場合は、ZDM_BACKUP_RETENTION_WINDOW=number of days
を設定します。
ZDM_SRC_TNS_ADMIN
カスタムの場所の場合は、ZDM_SRC_TNS_ADMIN=TNS_ADMIN value
を設定します。
親トピック: 物理データベースの移行の準備
オンプレミス・データベースのオンプレミスExadata Database Machineへの移行
Zero Downtime Migrationを使用したオンプレミスのExadata Database Machineターゲットへのオンプレミス移行は、クラウド・ターゲットへの移行と同じように機能します。レスポンス・ファイルで、PLATFORM_TYPE=NON_CLOUD
を設定して、移行ターゲットがオンプレミスであることを指定します。
クラウド移行のシナリオと同様に、移行を開始する前に、初期化パラメータの構成を含め、必要なシェイプとサイズでターゲット・データベースをプロビジョニングする必要があります。ターゲット・データベースはソース・データベースと同じメジャー・バージョンである必要があり、Oracle Grid Infrastructureはターゲット・データベースで必須であり、ターゲット・データファイルはASMまたはACFSに格納できます。
オンプレミスからオンプレミスへの移行がクラウドへの移行と異なる点は、透過的データ暗号化(TDE)の処理です。クラウドでは、Oracle Database 12.2以上のリリースにTDEが必須ですが、オンプレミスからオンプレミスへの移行では、ソースでTDEが使用される場合にのみ、ターゲットでTDEを構成する必要があります。移行を開始する前に、ターゲットでTDEを構成する必要があります。Zero Downtime Migrationでは、TDEは構成されません。
レスポンス・ファイル・パラメータZDM_TDE_MANDATORY=FALSE
を設定して、ソースまたはターゲットでTDEが構成されないことを指定できます。このパラメータは、PLATFORM_TYPE=NON_CLOUD
を設定した場合にのみ使用できます。ZDM_TDE_MANDATORY=FALSE
が設定されている場合、Zero Downtime Migrationでは、ソースでTDEが使用されていないときはターゲットでTDEを必要とせず、リストア時にターゲットを暗号化しません。
オンプレミスExadataターゲット・データベースの移行の場合、MIGRATION_METHOD
はONLINE_PHYSICAL
またはOFFLINE_PHYSICAL
に設定でき、DATA_TRANSFER_MEDIUM
はZero Downtime Migrationでサポートされている任意の値に設定できます。クラウド移行の場合と同様に残りのパラメータを設定します。
親トピック: 物理データベースの移行の準備
移行中の非CDBのCDBへの変換
物理的移行プロセスの一環として、Zero Downtime Migrationは非CDBソース・データベースからクラウド内の同じバージョンのPDBへの変換を処理できます。変換プロセスでは、ソース非CDBをターゲットPDBに変換してから、ターゲットの既存のCDBにプラグインします。
非CDBからCDBへの変換により、停止時間が長くなります。このプロセスはオフラインであり(REDO転送および適用なし)、ロールバックはできません。
ソース非CDBデータベースの前提条件
-
Oracle Database 12c以降のバージョン(マルチテナント・アーキテクチャが使用可能になったため)
-
ターゲットCDBと同じキャラクタ・セット
ターゲット・データベースCDBおよびPDBの前提条件
-
Zero Downtime MigrationによってPDBが作成されるため、ターゲットCDBには結果として変換されたPDBと同じ名前のPDBを含めることはできません。
-
ターゲット・データベースは、少なくともソース・データベースと同じメジャー・バージョンである必要があります。
- ターゲットでマイナー・バージョンが異なる場合、ソース・データベースよりも高いマイナー・バージョンである必要があります。
- パッチ・レベルが異なる場合は、レスポンス・ファイル・パラメータ
TGT_SKIP_DATAPATCH=FALSE
を設定する必要があります。
透過的データ暗号化の要件
-
ソース・データベースでは、透過的データ暗号化(TDE)はオプションです。TDEが設定されていない場合、これ以上の情報は必要ありませんが、ソースでTDEが設定されている場合は、TDE鍵をエクスポートおよびインポートするための資格証明が必要です。
-
ソース資格証明では、
migrate database
コマンドに-tdekeystorepasswd
または-tdekeystorewallet
オプションを含める必要があります。 -
これらのオプションのいずれかを使用する場合は、
-tgttdekeystorepasswd
または-tgttdekeystorewallet
オプションを使用してターゲット資格証明も指定する必要があります
Application Expressの要件
-
ソースにApplication Express (APEX)がインストールされていない場合、追加の要件はありません。
-
APEXがソースに存在し、ソース・データベースが非CDBである場合、次のいずれかのオプションを選択する必要があります。
- ソース非CDBからAPEXを削除します。
- ターゲットCDBのAPEXバージョンがソースのAPEXバージョンと同じであることを確認します。
APEXが同じバージョンでない場合、変換はできません。APEXスキーマはバージョン間で異なり、ターゲットPDBを開くことができません。
ターゲットCDBはプロセスで削除されず、他のPDBの有無は変換およびプラグインの結果に影響しません。
レスポンス・ファイル・パラメータは次のように設定します。
- (必須)
NONCDBTOPDB_CONVERSION
: ソース・データベースを非CDBからPDBに変換する場合はTRUE
に設定します。 - (オプション)
NONCDBTOPDB_SWITCHOVER
: 非CDBからPDBへの変換が有効な移行ジョブ中にスイッチオーバー操作を実行するには、Data Guardスイッチオーバーを使用した物理移行に対してTRUE
に設定します。
TDE資格証明を使用した移行時に非CDBをPDBに変換するためのZDMCLI migrate databaseコマンドの使用例を次に示します。
zdmuser> $ZDM_HOME/bin/zdmcli migrate database
-sourcedb source_db_unique_name_value -sourcenode source_database_server_name -srcroot
-targetnode target_database_server_name -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:/user/bin/sudo
-tdekeystorepasswd -tgttdekeystorepasswd
zdmuser> $ZDM_HOME/bin/zdmcli migrate database
-sourcedb source_db_unique_name_value -sourcenode source_database_server_name -srcroot
-targetnode target_database_server_name -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:/user/bin/sudo
-tdekeystorepasswd -tgttdekeystorewallet /scratch/credentials/cdbtde.sso
親トピック: 物理データベースの移行の準備
論理移行の準備
次の各トピックでは、論理移行ジョブを実行する前にZero Downtime Migrationの前提条件を構成する方法について説明します。
- 論理移行の前提条件
- 論理移行のためのソース・データベースの準備
- 論理移行レスポンス・ファイルの準備
必要な論理移行レスポンス・ファイル・パラメータを設定します。データベース移行プロシージャのZero Downtime Migrationレスポンス・ファイルの作成に使用するレスポンス・ファイル・テンプレート$ZDM_HOME/rhp/zdm/template/zdm_logical_template.rsp
を取得し、ここで説明するようにファイルを編集します。 - 転送メディアの構成および転送ノードの指定
Zero Downtime Migrationには、ターゲット・データベース・サーバーでOracle Data Pumpダンプを使用できるようにするための様々な転送オプションが用意されています。
親トピック: データベース移行の準備
論理移行の前提条件
論理移行の準備をするには、次の前提条件を完了します。
-
OCI APIキー・ペアを作成します。詳細は、必要な鍵とOCIDを参照してください。
-
Object Storageをデータ転送メディアとして使用している場合は、Oracle Cloud Infrastructureでオブジェクト・ストア・バケットを作成します。これは、Exadata Cloud at CustomerまたはオンプレミスのExadata Database Machineターゲットには必要ありません。
-
ソース・データベース・リスナーが自己署名付きデータベース・サーバー証明書を使用してTLS (TCPS)で構成されている場合、自己署名付き証明書がZero Downtime Migrationホーム証明書ストアに次のように追加されていることを確認します。
keytool -import -keystore ZDM_HOME/jdk/jre/lib/security/cacerts -trustcacerts -alias "src ca cert" -file source_db_server-certificate
-
データベース・リンクを使用していない場合は、データ・ポンプ・エクスポート・ディレクトリに使用されるファイル・システムに、データ・ポンプ・ダンプ・ファイルを格納する十分な領域があることを確認します。
-
ソース・データベースの
global_name
によって、ターゲット・データベースとオンプレミス・ソース・データベース間の既存のデータベース・リンクを使用している場合は、DBLINKが壊れていないことを確認します。Zero Downtime Migrationでは、データ転送メディアが構成されている場合、既存のDBLINKを移行に再利用できます。 -
オンライン移行の場合は、次の手順を実行します。
-
Oracle GoldenGate Microservicesハブを設定します。
-
Oracle Cloud Serviceターゲットの場合は、Oracle Cloud MarketplaceからOracle GoldenGate Microservicesをデプロイします。詳細は、Oracle Cloud Marketplace上でのOracle GoldenGate Microservicesのデプロイを参照してください。
-
すでにOracle GoldenGate Microservicesを所有している場合は、既存のOracle GoldenGate Microservicesインスタンスを使用してソースおよびターゲットのデプロイメントを作成できます。
-
-
ターゲット・データベースがSSL/TLSを使用するように構成されている場合は、TLS認証用の証明書を含むウォレットが次のようにGoldenGateインスタンスの正しい場所にあることを確認します。
-
Autonomous Databaseの場合、ウォレット・ファイルはディレクトリ
/u02/deployments/deployment_name/etc/adb
にある必要があります -
共同管理データベースの場合、ウォレット・ファイルはディレクトリ
/u02/deployments/deployment_name/etc
にある必要があります
Autonomous Databaseは常にTLSを使用するように構成されます。
-
-
ソース・データベースがSSL/TLSを使用するように構成されている場合は、TLS認証用の証明書を含むウォレットがGoldenGateインスタンスのディレクトリ
/u02/deployments/deployment_name/etc
にあることを確認します。 -
ソース・データベースの前提条件を完了します。論理移行のためのソース・データベースの準備を参照してください
-
ターゲット・データベースで、次を実行します。
ターゲットがAutonomous Databaseの場合は、事前作成された
ggadmin
ユーザーのロックを解除します。ターゲットがAutonomous Databaseでない場合は、ターゲットPDBで
ggadmin
ユーザーを作成します。このユーザーの作成の詳細は、論理移行のためのソース・データベースの準備を参照してください。
-
-
OCIネットワーク・セキュリティ・ルールで次の接続が許可されていることを確認します。
表3-1 オンライン論理移行の前提条件接続
接続 ソース 接続先 SQL*Net GoldenGateハブ ソース・データベース SQL*Net GoldenGateハブ ターゲット・データベース SQL*Net ZDMサーバー ソース・データベース SSH ZDMサーバー ソース・データベース・サーバー SQL*Net ZDMサーバー ターゲット・データベース HTTPS ZDMサーバー1 GoldenGateハブ 1 Zero Downtime Migrationサーバーは、OCI RESTエンドポイントへのポート443を介したHTTPSコールを実行できる必要があります。
詳細は、「Zero Downtime Migrationのポートの要件」を参照してください。
親トピック: 論理移行の準備
論理移行のためのソース・データベースの準備
オンライン論理移行の準備をするには、ソース・データベースで次の前提条件を完了します。
オフラインおよびオンライン移行には次が必要です。
-
ソース・データベースの文字セットは、ターゲット・データベースと同じである必要があります。
-
初期化パラメータ
STREAMS_POOL_SIZE
を使用してストリーム・プールを構成します。オフライン論理移行の場合、データ・ポンプのパフォーマンスを最適化するには、初期プールを割り当てるために
STREAMS_POOL_SIZE
を256MB-350MB以上に設定することをお薦めします。そうしないと、起動時にかなりの遅延が発生する可能性があります。オンライン論理移行の場合は、
STREAMS_POOL_SIZE
を2 GB以上に設定します。統合Extractと追加の25パーセントごとに1 GBのSTREAMS_POOL_SIZE
の推奨事項については、https://support.oracle.com/epmos/faces/DocumentDisplay?id=2078459.1を参照してください。 -
Zero Downtime Migrationサービス・ホストおよびソース・データベース・サーバーのシステム時間は、Oracle Cloud Infrastructureターゲットと同期している必要があります。
これらのいずれかのシステムの時間がOCIの時間から6分を超えて異なる場合は、調整する必要があります。NTPが構成されている場合は、
ntp time check
を使用して時刻を同期できます。NTPが構成されていない場合は、構成することをお薦めします。NTPを構成するオプションがない場合は、時間を手動で修正して、OCI時間と同期するようにする必要があります。 -
データベース・リンクを使用しており、ターゲット・データベースがAutonomous Database共有インフラストラクチャ上にある場合は、ソースでTCPSを構成する必要があります。Autonomous Database共有インフラストラクチャでは、TCPSで構成されていないソースへのデータベース・リンクは許可されません。
オンライン移行には次が必要です。
-
ソースがOracle Database 11.2の場合、必須の11.2.0.4 RDBMSパッチをソース・データベースに適用します。
My Oracle SupportノートOracle GoldenGate -- Oracle RDBMS Server Recommended Patches (ドキュメントID 1557031.1)を参照してください
-
データベースPSU 11.2.0.4.200414には、Oracle GoldenGateパフォーマンス・バグ28849751 - IE PERFORMANCE DEGRADES WHEN NETWORK LATENCY BETWEEN EXTRACT AND CAPTURE IS MORE THAN 8MSの修正が含まれています
-
OGG RDBMSパッチ31704157 MERGE REQUEST ON TOP OF DATABASE PSU 11.2.0.4.200414 FOR BUGS 31182000 20448066 - このパッチは、Oracle GoldenGate Microservicesバグ20448066 DBMS_XSTREAM_GG APIS SHOULD BE ALLOWED FOR SCA PROCESSESの必須の修正と必須のOGG RDBMSパッチ31182000 MERGE REQUEST ON TOP OF DATABASE PSU 11.2.0.4.200414 FOR BUGS 2990912 12668795を組み合せたものです。
MOSノート1557031.1にOGGパッチ31177512が記載されていますが、バグ20448066のパッチと競合しています。そのため、OGGパッチ31177512のかわりにOGGパッチ31704157を使用する必要があります。
-
- ソースがOracle Database 12.1.0.2以降のリリースの場合は、ソース・データベースに必須RDBMSパッチを適用します。
Oracle Database 12c以降の最新のDBBP/RUに必要な追加RDBMSパッチがリストされている、My Oracle Supportノートの最新のGoldenGate/Database (OGG/RDBMS)パッチ推奨(ドキュメントID 2193391.1)を参照してください。
-
データベースの
ARCHIVELOG
モードを有効にします。データベースのアーカイブ・モードの変更を参照してください。 -
FORCE LOGGING
を有効にして、Oracle GoldenGate ExtractプロセスによってREDOですべての変更が検出されるようにします。FORCE LOGGINGモードの指定を参照してください -
データベースの最小サプリメンタル・ロギングを有効にします。最小サプリメンタル・ロギングを参照してください。
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-
初期化パラメータ
ENABLE_GOLDENGATE_REPLICATION
を有効にします。 -
統合Extractのパフォーマンス分析のために
UTL_SPADV
またはUTL_RPADV
パッケージをインストールします。UTL_RPADVパッケージを使用したXStream統計の収集を参照してください。Oracle Database 19cでは、パッケージの名前が
UTL_SPADV
からUTL_RPADV
に変更されています。 -
例にリストされているすべての権限を付与して、GoldenGate管理ユーザー
ggadmin
を作成します。ソース・データベースがマルチテナント(CDB)の場合は、ソースPDBにユーザーを作成します。SQL> create user ggadmin identified by password default tablespace users temporary tablespace temp; SQL> grant connect, resource to ggadmin; SQL> alter user ggadmin quota 100M ON USERS; SQL> grant unlimited tablespace to ggadmin; SQL> grant select any dictionary to ggadmin; SQL> grant create view to ggadmin; SQL> grant execute on dbms_lock to ggadmin; SQL> exec dbms_goldengate_auth.GRANT_ADMIN_PRIVILEGE('ggadmin');
-
ソース・データベースがマルチテナント(CDB)の場合は、次に示すように、
CDB$ROOT
にユーザーc##ggadmin
も作成します。SQL> create user c##ggadmin identified by password default tablespace users temporary tablespace temp; SQL> grant connect, resource to c##ggadmin; SQL> grant unlimited tablespace to c##ggadmin; SQL> alter user c##ggadmin quota 100M ON USERS; SQL> grant select any dictionary to c##ggadmin; SQL> grant create view to c##ggadmin; SQL> grant execute on dbms_lock to c##ggadmin; SQL> exec dbms_goldengate_auth.GRANT_ADMIN_PRIVILEGE('c##ggadmin',container=>'all');
-
移行期間中、高速データベース・レプリケーションに最適な環境を提供するには、大規模なバッチDML操作を回避します。数百万行に影響する単一トランザクションのような大規模なバッチ操作を実行すると、レプリケーション速度が低下する可能性があります。DDLの作成、変更および削除操作はレプリケートされません。
オフライン移行には次が必要です。
-
DATAPUMP_EXP_FULL_DATABASE
およびDATAPUMP_IMP_FULL_DATABASE
ロールが必要です。これらのロールは、移行ジョブを構成するプロセスに特権アプリケーション・ロールを割り当てる必要があるかどうかを決定するために、データ・ポンプに必要です。DATAPUMP_EXP_FULL_DATABASE
は、指定されたデータベース・ユーザーのソース・データベースでのエクスポート操作に必要です。DATAPUMP_IMP_FULL_DATABASE
ロールは、指定されたターゲット・データベース・ユーザーの指定されたターゲット・データベースでのインポート操作に必要です。詳細は、Oracle Data Pumpのドキュメントを参照してください。
親トピック: 論理移行の準備
論理移行レスポンス・ファイルの準備
必要な論理移行レスポンス・ファイル・パラメータを設定します。データベース移行プロシージャのZero Downtime Migrationレスポンス・ファイルの作成に使用するレスポンス・ファイル・テンプレート$ZDM_HOME/rhp/zdm/template/zdm_logical_template.rsp
を取得し、ここで説明するようにファイルを編集します。
論理移行レスポンス・ファイルの設定の詳細は、Zero Downtime Migration論理移行レスポンス・ファイル・パラメータ・リファレンスを参照してください。
オフラインまたはオンラインの論理移行には、次のパラメータが必要です。
-
MIGRATION_METHOD
: GoldenGateを使用したオンライン移行の場合はONLINE_LOGICAL
、オフライン・データ・ポンプ転送の場合はOFFLINE_LOGICAL
に設定します。 -
DATA_TRANSFER_MEDIUM
: Object Storageバケットの場合はOSS
、共有ネットワーク・ファイル・システムの場合はNFS
、データベース・リンクを使用した直接転送の場合はDBLINK
、セキュア・コピーを使用する場合はCOPY
に設定します。データ・ポンプ・ダンプの処理にデフォルトのデータ転送サーバーを使用している場合を除き、ソースおよびターゲット・データベース環境のデータ転送ノード設定も構成する必要があります。
詳細は、転送メディアの構成および転送ノードの指定を参照してください。
-
Oracle Database 11gソースの11gターゲットへのオフライン論理移行の場合、
DATAPUMPSETTINGS_SECUREFILELOB=FALSE
を設定すると、エラーが発生することがあります。 - 次のターゲット・データベース・パラメータを設定します。
-
TARGETDATABASE_OCID
は、Oracle Cloudリソース識別子を指定します。例: ocid1.instance.oc1.phx.abuw4ljrlsfiqw6vzzxb43vyypt4pkodawglp3wqxjqofakrwvou52gb6s5a
https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htmも参照してください
-
TARGETDATABASE_ADMINUSERNAME
では、データベース管理者のユーザー名を指定します。たとえば、共同管理データベースの移行ユーザー名がsystem
で、Autonomous Databaseの移行ユーザー名がadmin
の場合です。
-
- 次のソース・データベース・パラメータを設定します。
-
SOURCEDATABASE_ADMINUSERNAME
では、データベース管理者のユーザー名を指定します。たとえば、ユーザー名はsystem
です。 -
SOURCEDATABASE_CONNECTIONDETAILS_HOST
は、リスナーのホスト名またはIPアドレスを指定します。Oracle RACの場合、SCAN名を指定できます。(Autonomous Databaseでは不要) -
SOURCEDATABASE_CONNECTIONDETAILS_PORT
は、リスナーのポート番号を指定します。(Autonomous Databaseでは不要) -
SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME
は、完全修飾サービス名を指定します。(Autonomous Databaseでは不要)例: service_name.DB_domain
https://docs.cloud.oracle.com/en-us/iaas/Content/Database/Tasks/connectingDB.htmも参照してください
-
-
次の
OCIAUTHENTICATIONDETAILS
パラメータを設定します。必要な設定の詳細は、https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#RequiredKeysandOCIDsを参照してください
-
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_TENANTID
は、OCIテナンシのOCIDを指定します。この値は、コンソールの「Governance and Administration」→「Administration」→「Tenancy Details」にあります。テナンシOCIDが「Tenancy Information」の下に表示されます。例: ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfdsq
https://docs.cloud.oracle.com/en-us/iaas/Content/Identity/Tasks/managingtenancy.htmも参照してください
-
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_USERID
は、IAMユーザーのOCIDを指定します。この値は、コンソールの「Profile」→「User Settings」にあります。https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/managingusers.htmも参照してください
-
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_FINGERPRINT
は、API公開キーのフィンガープリントを指定します。 -
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_PRIVATEKEYFILE
は、API秘密キー・ファイルの絶対パスを指定します。 -
OCIAUTHENTICATIONDETAILS_REGIONID
は、OCIリージョン識別子を指定します。https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/regions.htmにある表の「Region Identifier」列を参照してください
-
Oracle GoldenGateの設定
オンライン論理移行の場合は、前述のパラメータに加えて、GoldenGateパラメータTARGETDATABASE_GGADMINUSERNAME
、SOURCEDATABASE_GGADMINUSERNAME
、SOURCECONTAINERDATABASE_GGADMINUSERNAME
、および接頭辞GOLDENGATEHUB
とGOLDENGATESETTINGS
が付いたパラメータも設定する必要があります。
これらのパラメータの詳細は、Zero Downtime Migration論理移行レスポンス・ファイル・パラメータのリファレンスを参照してください。
Oracle Data Pump設定
Zero Downtime Migrationでは、パフォーマンスを向上させ、データ・セキュリティを確保するために、データ・ポンプ・パラメータの最適なデフォルトが自動的に設定されます。パフォーマンスをさらにチューニングする必要がある場合は、レスポンス・ファイルで構成できるいくつかのデータ・ポンプ設定があります。
Autonomous Databaseへの移行には、デフォルトのDATAPUMPSETTINGS_JOBMODE=SCHEMA
をお薦めします。
デフォルトのデータ・ポンプ・プロパティ設定、包含または除外するスキーマまたはオブジェクトの選択方法、およびデータ・ポンプのエラー処理の詳細は、「Zero Downtime MigrationのOracle Data Pump設定」を参照してください。
Zero Downtime Migrationで設定できるすべてのデータ・ポンプ・パラメータについては、「Zero Downtime Migration論理移行レスポンス・ファイル・パラメータのリファレンス」を参照してください。
親トピック: 論理移行の準備
転送メディアの構成および転送ノードの指定
Zero Downtime Migrationには、ターゲット・データベース・サーバーでOracle Data Pumpダンプを使用できるようにするための様々な転送オプションが用意されています。
DATA_TRANSFER_MEDIUM
レスポンス・ファイル・パラメータを使用して、次のデータ転送方法を構成できます。
-
OSS
: Oracle Cloud Object Storageすべての移行タイプおよびターゲットでサポートされます。
-
NFS
: ネットワーク・ファイル・システム共同管理ターゲット・データベースへのオフライン移行でのみサポートされます。
-
DBLINK
: データベース・リンクを介したソースからターゲットへの直接データ転送Autonomous Database共有(データ・ウェアハウスまたはトランザクション処理)および共同管理ターゲットへのオンラインおよびオフラインの移行でのみサポートされます。
-
COPY
: セキュア・コピーを使用してダンプをターゲット転送ノードに転送します。共同管理ターゲット・データベースへのオフライン移行でのみサポートされます。
ノート:
並列性を利用して最適なデータ転送パフォーマンスを実現するために、Oracleでは、サイズが50 GBを超えるデータベースにOSS
またはNFS
を使用してデータを転送することをお薦めします。DBLINK
転送メディアは、小規模なデータベースには便利ですが、転送中のネットワーク帯域幅に依存するため、パフォーマンスが不確実になる可能性があります。
ソースでのダンプのエクスポートが完了すると、ダンプはパラメータDUMPTRANSFERDETAILS_PARALLELCOUNT
で定義されているとおりにパラレルにアップロードまたは転送され(デフォルトは3)、転送の失敗はパラメータDUMPTRANSFERDETAILS_RETRYCOUNT
で指定されているとおりにデフォルトで再試行されます(デフォルトは3)。
特定のノードからダンプにアクセスできる場合は、ソース・データ・センターの任意のノードからダンプを転送できます。実行するデータ転送アプローチを決定するには、ネットワーク接続およびソース・データベース・サーバーへの転送ワークロードの影響を確認することが重要です。
ソースからターゲットへの直接転送
このオプションは、オンプレミスのExadata Database Machineおよび共同管理クラウド・ターゲット・データベースにのみ適用されます。
Zero Downtime Migrationでは、ソースからターゲットへのデータ・ポンプ・ダンプの安全な直接転送を使用した論理移行が可能です。データは、セキュア・コピーまたはRSYNCを使用して、ソース・データベースのディレクトリ・オブジェクト・パスからターゲット・データベース・サーバーのディレクトリ・オブジェクト・パスまたはターゲット転送ノードにコピーされます。これにより、WAN経由でデータが転送されたり、ソース環境とターゲット環境の間で追加の共有記憶域が必要になることを回避できます。この機能により、データ・センター内の論理移行が大幅に簡略化されます。
転送ノードについて
転送ノードと呼ばれるノードを、ソース・データ・センターとターゲット・テナンシの両方に構成します。
接頭辞がDUMPTRANSFERDETAILS_SOURCE_TRANSFERNODE
のレスポンス・ファイル・パラメータは、ソース・データ・センターでエクスポート・ダンプを処理するノードを指定します。このソース転送ノードのデフォルトは、ソース・データベースです。
同様に、接頭辞がDUMPTRANSFERDETAILS_TARGET_TRANSFERNODE
のレスポンス・ファイル・パラメータは、ターゲットでダンプのインポートを処理するノードを指定します。このターゲット転送ノードのデフォルトは、共同管理ターゲットのターゲット・データベースです。
転送ノードの要件
ソース転送ノードは次のいずれかになります。
- ソース・データベース・サーバー(デフォルト)
- NASマウント・サーバー
- Zero Downtime Migrationサービス・ノード
ターゲット転送ノードは次のいずれかになります。
- ターゲット・データベース・サーバー(デフォルト)
- NASマウント・サーバー
- Zero Downtime Migrationサービス・ノード
サーバーを転送ノードとして指定するには、次の重要な考慮事項が必要です。
-
アップロードまたは転送ワークロードを処理するためのCPUおよびメモリーの可用性
-
指定されたアップロードまたは転送ターゲットへの接続
-
選択したデータ転送メディアが
OSS
の場合はObject Storageサービスへのポート443接続 -
選択した転送メディアが
COPY
の場合はターゲット・ストレージ・サーバーへのポート22接続
-
-
Oracle Cloud Infrastructure CLIの可用性。ダンプのより高速で回復可能なアップロードのために、これは
OSS
転送メディアに推奨される転送ユーティリティです。 -
OCI CLIは、https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htmの説明に従ってインストールおよび構成する必要があります。
各ソース・データベース・サーバーでのOCI CLIのインストールおよび構成は、実行できない場合があります。このような場合、データ・センター内のいずれかのノードをOCI CLIが構成された転送ノードとして指定でき、このノードはデータ・ポンプ・ダンプを作成するためにデータベース・サーバーとネットワーク記憶域パスを共有できます。これにより、本番データベース・サーバーで追加のCPUおよびメモリーを消費するアップロード・ワークロードも回避されます。
指定された転送ノードは、データ転送トラフィックを許可する外部データ転送のデータ・センターでゲートウェイ・サーバーとして機能できるため、ソース・データベース・サーバーから、またはターゲット・データベース・サーバーへのデータ転送を許可する必要がありません。
Zero Downtime Migrationサービスがオンプレミス・データ・センターに配置され、前述の転送ノード要件を満たすことができる場合は、必要に応じて、Zero Downtime Migrationサーバーを転送ノードとして利用することで、追加の転送ノード要件を回避できます。
Oracle Cloud Object Storage転送メディアの使用
Object Storageデータ転送メディアは、すべての移行タイプおよびターゲットでサポートされています。
DATA_TRANSFER_MEDIUM=OSS
を設定してObject Storageをデータ転送メディアとして使用する場合は、より高速かつ安全で回復可能なアップロードのために、OCI CLIを使用してダンプをアップロードすることをお薦めします。アップロード・ノードでOCI CLIを構成し、パラメータDUMPTRANSFERDETAILS_SOURCE_USEOCICLI
をTRUE
に設定する必要があります。OCI CLIのパラメータは次のとおりです
DUMPTRANSFERDETAILS_SOURCE_USEOCICLI
DUMPTRANSFERDETAILS_SOURCE_OCIHOME
データベース・リンク転送メディアの使用
Autonomous Database共有(データ・ウェアハウスまたはトランザクション処理)および共同管理ターゲットへのオンラインおよびオフラインの移行でのみサポートされます。
DATA_TRANSFER_MEDIUM=DBLINK
を設定すると、指定したソース・データベースのglobal_name
を使用して、OCIの共同管理データベースまたはAutonomous Databaseターゲットからソース・データベースへのデータベース・リンクが作成されます。
Zero Downtime Migrationでは、データベース・リンクが存在しない場合は作成され、データ・ポンプ・インポート・フェーズが完了するとリンクがクリーン・アップされます。
NFS転送メディアの使用
共同管理ターゲット・データベースへのオフライン移行でのみサポートされます。
NFS転送モードは、ダンプの転送を回避する共通管理ターゲット・データベースに対してDATA_TRANSFER_MEDIUM=NFS
を設定することで使用できます。指定したパスがソースとターゲットのデータベース・サーバー・パス間でアクセス可能であることを確認する必要があります。
Zero Downtime Migrationでは、ソースおよびターゲットのデータベース・ユーザーのみがダンプへのアクセスを許可されるように、ダンプに対する制限された権限を保持することで、共有記憶域内のダンプのセキュリティが確保されます。
コピー転送メディアの使用
共同管理ターゲット・データベースへのオフライン移行でのみサポートされます。
DATA_TRANSFER_MEDIUM=COPY
を設定することで、ダンプをソースからターゲットに安全に転送できます。関連するパラメータは次のとおりです。
DUMPTRANSFERDETAILS_TRANSFERTARGET_USER
DUMPTRANSFERDETAILS_TRANSFERTARGET_USERKEY
DUMPTRANSFERDETAILS_TRANSFERTARGET_HOST
DUMPTRANSFERDETAILS_TRANSFERTARGET_SUDOPATH
DUMPTRANSFERDETAILS_TRANSFERTARGET_DUMPDIRPATH
SCPのかわりにRSYNCユーティリティを利用できます。DUMPTRANSFERDETAILS_RSYNCAVAILABLE
をTRUE
に設定し、ソースとターゲットの両方の転送ノードでRSYNCが使用可能であることを確認します。
親トピック: 論理移行の準備
断続的なネットワーク障害に対するレジリエンシの構成
Zero Downtime Migrationは、バックアップまたはSSH接続の失敗の原因となる可能性のある断続的なネットワーク障害に対する回復力を備えています。
物理移行のレジリエンシ
Zero Downtime Migrationでは、断続的なネットワーク障害を自動検出できます。Zero Downtime Migrationでは、RMANの再試行可能なエラーが自動的に再試行され、再試行のカスタマイズが可能です。
SSH接続の再試行は、次のパラメータを使用してカスタマイズします。
SRC_SSH_RETRY_TIMEOUT
TGT_SSH_RETRY_TIMEOUT
次のパラメータを使用して、RMANバックアップの再試行をカスタマイズできます。
ZDM_OPC_RETRY_WAIT_TIME
ZDM_OPC_RETRY_COUNT
ZDM_OPC_RETRY_WAIT_TIME
論理移行のレジリエンシ
データ・ポンプ・ダンプの転送中に発生する断続的なネットワーク障害は、DUMPTRANSFERDETAILS_RETRYCOUNT
パラメータを設定することで軽減できます。デフォルト値は3です。
親トピック: データベース移行の準備
要塞ホストを使用したデータベース・サーバー接続
Zero Downtime Migrationでは、物理移行ワークフローと論理移行ワークフローの両方について、要塞ホストを介してソースおよびターゲットのデータベース・サーバーへの接続を構成できます。
要塞ホストは、JDBC接続を除き、Autonomous Databaseへの接続には使用できません。
次の各項を参照して、要塞ホストを介してソースまたはターゲットのデータベース・サーバーに接続する必要がある物理および論理移行の適切なパラメータを構成します。
データベース・サーバーへのSSH接続
要塞ホストを介してデータベース・サーバーを接続するには、次の情報が必要です。
-
要塞ホストのIPアドレスおよびソース・データベース・サーバーのIPアドレス: 要塞ホストを介してデータベース・サーバーに接続するには、要塞ホストのIPアドレスおよびソース・ノードのIPアドレスが必要です。
-
要塞ポート番号: 指定しない場合、ポート番号は22にデフォルト設定されます。
-
要塞ユーザー: 要塞ホストのユーザーは、引数
zdmauth
プラグインに指定したユーザーが要塞ホストのユーザーと異なる場合にのみ必要です。プロパティを指定しない場合、要塞ユーザーはソースzdmauth
プラグインに指定したユーザーにデフォルト設定されます。 -
要塞アイデンティティ・ファイル:
SRC/TGT_BASTION_IDENTITY_FILE
パラメータを指定しない場合、値はzdmauth
プラグイン引数のidentity_file
引数に指定した値にデフォルト設定されます。
物理移行レスポンス・ファイル・パラメータ
物理移行用に次のレスポンス・ファイル・パラメータを構成します。
ソース・データベース・サーバー
SRC_BASTION_HOST_IP=
SRC_BASTION_PORT=
SRC_BASTION_USER=
SRC_BASTION_IDENTITY_FILE=
SRC_HOST_IP=
ターゲット・データベース・サーバー
TGT_BASTION_HOST_IP=
TGT_BASTION_PORT=
TGT_BASTION_USER=
TGT_BASTION_IDENTITY_FILE=
TGT_HOST_IP=
論理移行レスポンス・ファイル・パラメータ
論理移行用に次のレスポンス・ファイル・パラメータを構成します。
ソース・データベース・サーバー
SOURCECONTAINERDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_IP=
SOURCECONTAINERDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_PORT=22
SOURCECONTAINERDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_IDENTITYFILE=
SOURCECONTAINERDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_USERNAME=
SOURCECONTAINERDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_REMOTEHOSTIP=
ターゲット・データベース・サーバー(Autonomous Databaseを含む)
TARGETDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_IP=
TARGETDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_PORT=22
TARGETDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_IDENTITYFILE=
TARGETDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_USERNAME=
TARGETDATABASE_CONNECTIONDETAILS_BASTIONDETAILS_REMOTEHOSTIP=
親トピック: データベース移行の準備
自動アプリケーション・スイッチオーバーの準備
データベース移行およびスイッチオーバーの完了後にアプリケーションでのサービスの中断を最小限に抑えたり、なくすには、ソース・データベースからターゲット・データベースに接続を自動的に切り替えるようにアプリケーションを準備します。
ノート:
物理的な移行では、Autonomous Databaseターゲットは、自動アプリケーション・スイッチオーバーをサポートしていません。次のサンプル接続文字列では、アプリケーションはソース・データベースに接続し、使用できない場合は、接続がターゲット・データベースに切り替わります。
(DESCRIPTION=
(FAILOVER=on)(LOAD_BALANCE=on)(CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=source_database_scan)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=target_database_scan)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=zdm_prod_svc)))
この例では、ソース・データベースで、zdm_prod_svcという名前のサービスを作成します。
srvctl add service -db clever -service zdm_prod_svc -role PRIMARY
-notification TRUE -session_state dynamic -failovertype transaction
-failovermethod basic -commit_outcome TRUE -failoverretry 30 -failoverdelay 10
-replay_init_time 900 -clbgoal SHORT -rlbgoal SERVICE_TIME -preferred clever1,clever2
-retention 3600 -verbose
db_domain
がソースとターゲットの間で変更された場合、フェイルオーバーを有効にするには、アプリケーションで指定された接続文字列が両方に対応している必要があります。
(DESCRIPTION_LIST=
(FAILOVER=ON)
(LOAD_BALANCE=ON)
(DESCRIPTION=
(ADDRESS= (PROTOCOL=TCP) (HOST=SRC_SCAN) (PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=SVC.SRC_DOMAIN)))
(DESCRIPTION=
(ADDRESS= (PROTOCOL=TCP) (HOST=TGT_SCAN) (PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME= SVC.TGT_DOMAIN))
関連項目:
https://www.oracle.com/goto/maaのOracle Active Data Guardのベスト・プラクティス・ページのクライアント・フェイルオーバーのベスト・プラクティスに関するOracle MAAホワイト・ペーパーOracle Database開発ガイドの高可用性
親トピック: データベース移行の準備
移行ジョブのカスタマイズ
指定した移行ジョブ・フェーズの最初または最後に実行できるスクリプトを使用して、Zero Downtime Migrationワークフローをカスタマイズできます。Zero Downtime Migrationでは、これらのカスタマイズはユーザー・アクションを含むカスタム・プラグインと呼ばれます。
次の各トピックでは、移行ジョブをカスタマイズする方法について説明します。
- ユーザー・アクションを含むカスタム・プラグインについて
Zero Downtime Migrationでは、プラグインして移行ジョブの一部として実行するカスタム・スクリプトまたはスクリプトのバンドルは、ユーザー・アクションを含むカスタム・プラグインと呼ばれます。 - ユーザー・アクションを含むカスタム・プラグインに提供されるパラメータ
Zero Downtime Migrationは、実行時にユーザー・アクション・スクリプトを起動し、ロジックのプログラミングに使用できる自動移入ENV変数のセットを提供します。 - ユーザー・アクション・スクリプト
次のユーザー・アクション・スクリプトの例を使用して、独自のスクリプトを作成できます。 - ユーザー・アクションの登録
ユーザー・アクションを特定の操作フェーズのカスタマイズとしてプラグインするには、Zero Downtime Migrationサービス・ホストに登録する必要があります。 - アクション・テンプレートの作成
ユーザーアクション・プラグインを登録したら、移行ジョブに関連付けることができる一連のアクション・プラグインをまとめるアクション・テンプレートを作成します。 - アクション・プラグインの更新
Zero Downtime Migrationサービス・ホストに登録されたアクション・プラグインを更新できます。 - アクション・プラグインの問合せ
Zero Downtime Migrationサービス・ホストに登録されたアクション・プラグインを問い合せることができます。 - 移行ジョブとのアクション・テンプレートの関連付け
移行ジョブを実行する際、移行ジョブの一環として実行するプラグインを指定するイメージ・タイプを指定できます。
親トピック: データベース移行の準備
ユーザー・アクションを含むカスタム・プラグインについて
Zero Downtime Migrationでは、プラグインして移行ジョブの一部として実行するカスタム・スクリプトまたはスクリプトのバンドルは、ユーザー・アクションを含むカスタム・プラグインと呼ばれます。
ユーザー・アクションを含むカスタム・プラグインは、ユーザー・アクションとも呼ばれ、移行ジョブの操作フェーズに関連付けて、フェーズの前または後に実行できます。
事前アクションは、関連付けられたフェーズの開始時に実行されるユーザー・アクションです。同様に、事後アクションは、関連付けられたフェーズの終了時に実行されます。
ユーザー・アクションが移行フェーズに関連付けられると、Zero Downtime Migrationはそれを各ノード(Autonomous Database以外の場合)にコピーし、ユーザー・アクションをローカルで実行します。Zero Downtime Migrationは、開発者がDBNAME、DBHOME、DB SCANおよびZDMログの場所を使用するための一連のパラメータと、その他の多数のパラメータをユーザー・アクション・スクリプトの実行に提供します。
Autonomous Databaseの場合、Zero Downtime Migrationを使用すると、SQLをユーザー・アクションとして登録し、JDBC接続を介してZero Downtime MigrationサーバーからAutonomous DatabaseインスタンスでSQLを実行できます。
親トピック: 移行ジョブのカスタマイズ
ユーザー・アクションを含むカスタム・プラグインに提供されるパラメータ
Zero Downtime Migrationは、実行時にユーザー・アクション・スクリプトを起動し、ロジックのプログラミングに使用できる自動移入ENV変数のセットを提供します。
これらの変数はENV変数として値とともに提供されるため、これらの値を使用してカスタム・プラグインをプログラミングできます。
たとえば、ZDM_SRCDBHOME
の値は、現在の移行ジョブのソース・データベースに関連付けられたデータベース・ホームを指定し、同様にSRC_SCAN_NAME
は、データベースへの接続に使用できるソース・データベースのスキャン・リスナー情報を示します。
次に、ユーザー・アクション・パラメータと予想される値のリストを示します。詳細は、脚注を参照してください。
RHP_OPTYPE=MIGRATE_DATABASE
RHP_PHASE=PRE
ZDM_SRCDB=src_db_name
ZDM_SRCDBHOME=src_db_home
ZDM_TARGETDB=tgt_db_name
ZDM_TARGETDBHOME=tgt_db_home
RHP_PROGRESSLISTENERHOST=zdm_node_name
RHP_PROGRESSLISTENERPORT=zdm_progress_listener_port
LOG_PATH=src/tgt_zdm_log_path1
SRC_SCAN_NAME=src_scan_name
SRC_SCAN_PORT=src_scan_port
TGT_SCAN_NAME=tgt_scan_name
TGT_SCAN_PORT=tgt_scan_port
RHP_USERACTIONDATA=user_action_data2
RHP_OP_PHASE=current_job_phase3
1LOG_PATH
は、将来の参照用にログ・ファイルを格納するカスタム・プラグインのソースまたはターゲット・ノードのZero Downtime Migrationログ・パスを指定します。
2RHP_USERACTIONDATA
は、zdmcli migrate database
コマンドのオプション-useractiondata user_action_data
で指定されたuseraction引数を指定します
3RHP_OP_PHASE
は、移行ジョブの現在のフェーズを指定します(例: ZDM_VALIDATE_SRC
)。
親トピック: 移行ジョブのカスタマイズ
ユーザー・アクション・スクリプト
次のユーザー・アクション・スクリプトの例を使用して、独自のスクリプトを作成できます。
オンプレミス・ソースおよびノード・アクセスのあるクラウド・ターゲットの場合、Zero Downtime Migrationではユーザー・アクションがスクリプトである必要があります。スクリプト・ファイルがそれぞれのノードにコピーされ、ローカルで実行されます。
Autonomous Databaseターゲットの場合、Zero Downtime Migrationでは、ユーザー・アクション・スクリプトがSQLファイル(.sql)である必要があり、これはJDBC接続を使用してAutonomous Databaseターゲットで実行されます。
例3-1 action.sh
指定されたパラメータを検出するユーザー・アクション・スクリプトの例を次に示します。
#!/bin/sh
for var in $@
do
if [[ ${var} == *"ZDM_SRCDB="* ]]
then
IFS='=' read -ra DBARR <<< "${var}"
SRCDBNAME=${DBARR[1]}
fi
if [[ ${var} == *"ZDM_TARGETDB="* ]]
then
IFS='=' read -ra DBARR <<< "${var}"
TARGETDBNAME=${DBARR[1]}
fi
if [[ $var == *"ZDM_SRCDBHOME="* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
SRCDBHOME=${PATHARR[1]}
fi
if [[ $var == *"ZDM_TARGETDBHOME="* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
TARGETDBHOME=${PATHARR[1]}
fi
if [[ $var == *"RHP_OP_PHASE="* ]]
then
IFS='=' read -ra PHASEARR <<< "$var"
ZDMPHASE=${PHASEARR[1]}
fi
if [[ $var == *"eval"* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
EVALRUN=${PATHARR[1]}
fi
if [[ $var == *"LOG_PATH"* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
LOGPATH=${PATHARR[1]}
fi
done
echo "`date` Starting CUSTOM_USERACTION" >> $LOG_PATH/CUSTOM_USERACTION.log
echo $@ >> $LOG_PATH/CUSTOM_USERACTION.log
例3-2 ユーザー・アクションでのSQL*Plusの実行
#!/bin/sh
for var in $@
do
if [[ ${var} == *"ZDM_SRCDB="* ]]
then
IFS='=' read -ra DBARR <<< "${var}"
SRCDBNAME=${DBARR[1]}
fi
if [[ ${var} == *"ZDM_TARGETDB="* ]]
then
IFS='=' read -ra DBARR <<< "${var}"
TARGETDBNAME=${DBARR[1]}
fi
if [[ $var == *"ZDM_SRCDBHOME="* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
SRCDBHOME=${PATHARR[1]}
fi
if [[ $var == *"ZDM_TARGETDBHOME="* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
TARGETDBHOME=${PATHARR[1]}
fi
if [[ $var == *"RHP_OP_PHASE="* ]]
then
IFS='=' read -ra PHASEARR <<< "$var"
ZDMPHASE=${PHASEARR[1]}
fi
if [[ $var == *"eval"* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
EVALRUN=${PATHARR[1]}
fi
if [[ $var == *"LOG_PATH"* ]]
then
IFS='=' read -ra PATHARR <<< "$var"
LOGPATH=${PATHARR[1]}
fi
done
check_dv_staus()
{
export ORACLE_HOME=${2}
export PATH=$ORACLE_HOME/bin:$PATH
export LOGFILE=$3
export currenthostname=`hostname -a` >> $LOGFILE
echo "Current DB Host=$currenthostname" >> $LOGFILE
CURRENTNODE=`srvctl status database -db ${1} | grep $currenthostname | cut -d" " -f2` >> $LOGFILE
SQLRETURN=$?
echo "Curent DB Node=${CURRENTNODE}" >> $LOGFILE
if [ "$SQLRETURN" -ne "0" ]; then
return 1
fi
export ORACLE_SID=${CURRENTNODE}
echo "`date` Checking Database Vault Status" >> $LOGFILE
$ORACLE_HOME/bin/sqlplus -s / as sysdba 2>> $LOGFILE << EOF > /dev/null
whenever sqlerror exit 1
SET PAGESIZE 60
SET LINESIZE 1300
SET VERIFY OFF TRIMSPOOL ON HEADING OFF TERMOUT OFF FEEDBACK OFF
spool ${LOGFILE} append;
SELECT 'Check Status : '||PARAMETER FROM V\$OPTION WHERE PARAMETER = 'Oracle Database Vault' AND VALUE='TRUE';
SELECT 'Check Grant : '||GRANTED_ROLE from dba_role_privs where GRANTED_ROLE in ('DV_PATCH_ADMIN') and grantee='SYS';
select distinct ('Check TDE enabled ' || ENCRYPTED) from dba_tablespaces where ENCRYPTED='YES';
spool off
EOF
SQLRETURN=$?
if [ "$SQLRETURN" -ne "0" ]; then
return 1
fi
if grep -q "Check Status : Oracle Database Vault" $LOGFILE;
then
echo "`date`:$ORACLE_SID:Database Vault is enabled " >> $LOGFILE
if grep -q "Check Grant : DV_PATCH_ADMIN" $LOGFILE;
then
return 3 # sys privs already granted
else
return 4 # sys privs are not granted
fi
else
echo "`date`:$ORACLE_SID: DV is not enabled" >> $LOGFILE
return 2
fi
}
if [[ $ZDMPHASE == "ZDM_VALIDATE_SRC" || $ZDMPHASE == "ZDM_VALIDATE_TGT" ]]
then
export LOGFILE=$LOG_PATH/${SRCDBNAME}_${ZDMPHASE}_datavault.log
echo "`date` Start User Action for Phase: $ZDMPHASE " > $LOGFILE
echo $@ >> $LOGFILE
check_dv_staus $SRCDBNAME $SRCDBHOME $LOGFILE
CHECKDV_STATUS_RETURN_CODE=$?
if [ "$CHECKDV_STATUS_RETURN_CODE" -eq "1" ]; then
echo "`date`:${SRCDBNAME}:Unable to check DataVault status" >> $LOGFILE
exit 1
fi
if [ "$CHECKDV_STATUS_RETURN_CODE" -eq "2" ]; then
echo "`date`:${SRCDBNAME}:DataVault is not enabled " >> $LOGFILE
exit 0
fi
if [ "$CHECKDV_STATUS_RETURN_CODE" -eq "3" ];
then
echo "`date`:${SRCDBNAME}:Database Vault SYS privileges granted" >> $LOGFILE
exit 0
fi
例3-3 アクション・ファイル・アーカイブ・エクストラクタaction_extract.sh
ユーザー・アクションの登録の説明に従って複数のユーザー・アクションをアクション・ファイルにバンドルする場合は、この例に示すように、アクション・ファイルを解凍するスクリプトも指定する必要があります。
#!/bin/sh
MKDIR=/bin/mkdir
DATE=/bin/date
UNZIP=/usr/bin/unzip
#get the current location, extract path from it and then from the same
directory perform unzip to /tmp directory
script_path=$0
script_dir=${script_path%/*}
timestamp=$($DATE +%s)
unzip_dir=/tmp/rhp_${timestamp}
$MKDIR $unzip_dir
$UNZIP ${script_dir}/pack.zip -d $unzip_dir
echo "/bin/sh ${unzip_dir}/pack/main.sh $@"
/bin/sh ${unzip_dir}/pack/main.sh "$@"
アーカイブが抽出されると、action_extract.shによってmain.shが実行され、ユーザー・アクション・スクリプトが実行されます。
#!/bin/sh
script_path=$0
script_dir=${script_path%/*}
#extract args and execute all scripts
echo "/bin/sh ${script_dir}/wc_add_pre.sh $@"
/bin/sh ${script_dir}/wc_add_pre.sh "$@"
action_phase_pre.sh
#!/bin/sh
touch /tmp/SAMPLE_PRE_OUT.txt;
echo $* >> /tmp/SAMPLE_PRE_OUT.txt;
親トピック: 移行ジョブのカスタマイズ
ユーザー・アクションの登録
ユーザー・アクションを特定の操作フェーズのカスタマイズとしてプラグインするには、Zero Downtime Migrationサービス・ホストに登録する必要があります。
ZDMCLI add useraction
コマンドは、ソース・サーバーまたはターゲット・サーバーで実行する必要があるカスタム・アクション・スクリプトを登録します。ユーザー・アクション・スクリプトはZero Downtime Migrationメタデータにコピーされます。スクリプトを変更する必要がある場合は、modify useraction
コマンドを使用できます。アクション・スクリプトは、特定の移行ジョブの任意の数のカスタム・アクションに含めることができます。
アクションを関連付ける必要がある移行ジョブ・フェーズを決定し、-optype MIGRATE_DATABASE
と操作の各フェーズ、プラグインがそのフェーズと比較して-pre
または-post
のどちらで実行されるか、エラー時の要件を指定して、ZDMCLI
コマンドADD USERACTION
を実行します。
カスタム・プラグインは、移行ジョブ・ワークフローのZDM_SETUP_TGT
の後の操作フェーズに登録できます。
ユーザー・アクションで実行時にエラーが発生した場合、-onerror
オプションを使用して動作を指定できます。このオプションは、ABORT
に設定してプロセスを終了するか、CONTINUE
に設定して、カスタム・プラグインがエラーで終了した場合でも移行ジョブを続行できます。
Zero Downtime Migrationソフトウェア・インストール・ユーザー(zmduser
など)を使用してデータベース移行ジョブにユーザー・アクションを追加します。
次の例は、ユーザー・アクションzdmvaltgt
およびzdmvalsrc
を追加する方法を示しています。
zdmuser> $ZDM_HOME/bin/zdmcli add useraction -useraction zdmvaltgt -optype MIGRATE_DATABASE
-phase ZDM_VALIDATE_TGT -pre -onerror ABORT -actionscript /home/zdmuser/useract.sh
zdmuser> $ZDM_HOME/bin/zdmcli add useraction -useraction zdmvalsrc -optype MIGRATE_DATABASE
-phase ZDM_VALIDATE_SRC -pre -onerror CONTINUE -actionscript /home/zdmuser/useract1.sh
前述のコマンドでは、-actionscript
オプションに指定されているスクリプトuseract.sh
およびuseract1.sh
がZero Downtime Migrationサービス・ホストのリポジトリ・メタデータにコピーされ、アクション・テンプレートを使用して実行される移行ジョブに関連付けられている場合に実行されます。
1つのアクションでの複数のスクリプトの実行
複数のスクリプトを単一の事前アクションまたは事後アクションとして実行する必要がある場合は、次の例に示すように、すべてのアクション・スクリプトをアクション・ファイル・アーカイブとしてバンドルし、アクション・スクリプトとともに指定できます。アクション・スクリプトは、アクション・ファイルを解凍し、その中のスクリプトを起動する必要があります。
zdmuser> $ZDM_HOME/bin/zdmcli add useraction -useraction reconfigure_services
-optype MIGRATE_DATABASE -phase ZDM_RECOVER_TGT -post -onerror ABORT
-actionscript /home/zdmuser/action_extract.sh
-actionfile /home/zdmuser/pack.zip
スクリプトの例およびスクリプトの要件は、ユーザー・アクション・スクリプトを参照してください。
親トピック: 移行ジョブのカスタマイズ
アクション・テンプレートの作成
ユーザーアクション・プラグインを登録したら、移行ジョブに関連付けることができる一連のアクション・プラグインをまとめるアクション・テンプレートを作成します。
アクション・テンプレートは、ZDMCLIコマンドadd imagetype
を使用して作成します(イメージ・タイプimagetype
は、特定のタイプのデータベース移行に必要なすべてのユーザーアクションをまとめたものです)。データベースの移行に必要なすべてのユーザーアクション・プラグインを関連付けるイメージ・タイプを作成します。作成したイメージ・タイプは、同じプラグイン・セットを必要とするすべての移行操作で再利用できます。
ここで作成するイメージ・タイプの基本タイプは、次の例に示すようにCUSTOM_PLUGIN
である必要があります。
たとえば、前述の例で作成したユーザーアクションzdmvalsrcとzdmvaltgtの両方をまとめるイメージ・タイプACTION_ZDM
を作成できます。
zdmuser> $ZDM_HOME/bin/zdmcli add imagetype -imagetype ACTION_ZDM -basetype
CUSTOM_PLUGIN -useractions zdmvalsrc,zdmvaltgt
親トピック: 移行ジョブのカスタマイズ
アクション・プラグインの更新
Zero Downtime Migrationサービス・ホストに登録されたアクション・プラグインを更新できます。
次の例では、ユーザーアクションzdmvalsrcを変更して-pre
アクションのかわりに、-post
アクションにする方法を示します。
zdmuser> $ZDM_HOME/bin/zdmcli modify useraction -useraction zdmvalsrc -phase ZDM_VALIDATE_SRC
-optype MIGRATE_DATABASE -post
この変更は、すべての関連するアクション・テンプレートに伝播されるため、アクション・テンプレートを更新する必要はありません。
親トピック: 移行ジョブのカスタマイズ
アクション・プラグインの問合せ
Zero Downtime Migrationサービス・ホストに登録されたアクション・プラグインを問い合せることができます。
ユーザー・アクションの構成を表示するには:
zdmuser> $ZDM_HOME/bin/zdmcli query useraction -h
使用方法の詳細は、query useractionを参照してください。
親トピック: 移行ジョブのカスタマイズ
移行ジョブとのアクション・テンプレートの関連付け
移行ジョブを実行する際、移行ジョブの一環として実行するプラグインを指定するイメージ・タイプを指定できます。
例として、前述の例で作成したアクション・テンプレートACTION_ZDMを指定して(-imagetype ACTION_ZDM
)移行コマンドを実行すると、イメージ・タイプが組み込まれて移行ジョブ・ワークフローの一環としてuseract.shスクリプトおよびuseract1.shスクリプトが実行されます。
デフォルトでは、アクション・プラグインは、クラスタのすべてのノードの指定された操作フェーズで実行されます。移行コマンド・オプション-tgtarg2
で指定されたアクセス資格証明が指定のターゲット・ノードに対して一意である場合、追加のauth引数を組み込んで、他のクラスタ・ノードへのアクセスに必要な認証資格証明を指定する必要があります。たとえば、-tgtarg2 nataddrfile:auth_file_with_node_and_identity_file_mapping
と指定します。
node1およびnode2で構成される2クラスタ・ノード用の一般的なnataddrfileを次に示します。
node1:node1:identity_file_path_available_on_zdmservice_node
node2:node2:identity_file_path_available_on_zdmservice_node
親トピック: 移行ジョブのカスタマイズ