3 必要な接続の構成

Zero Downtime Migrationサービス・ホストとソースおよびターゲットのデータベース・サーバー間に接続を設定する必要があります。

Zero Downtime Migrationサービス・ホストからソースおよびターゲットのデータベース・サーバーへの接続の構成

ノート:

これらのステップは、ソースとターゲットの両方がSSHキー(共同管理データベース)を使用してアクセスされる物理移行および論理移行に適用できます。

これらのステップは、ターゲットがAutonomous Databaseである論理移行では適用できません

次の手順を実行して、Zero Downtime Migrationサービス・ホストとソースおよびターゲットのデータベース・サーバー間で必要な接続を確保します。

  1. Zero Downtime Migrationサービス・ホストで、Zero Downtime Migrationソフトウェア・インストール・ユーザーにRSA認証キー・ペアがパスフレーズなしで使用できることを確認します。
    新しいキー・ペアをパスフレーズなしで生成する必要がある場合は、Zero Downtime Migrationソフトウェア・インストール・ユーザーとして、パスフレーズなしのSSHキーの生成の説明に従って新しいキー・ペアを生成します。
  2. 秘密キー・ファイルの名前を変更します。
    zdm_installed_user_home/.ssh/id_rsaファイルの名前をzdm_installed_user_home/.ssh/zdm_service_host.ppkに変更します。
  3. 次の依存関係を使用して、zdm_installed_user_home/.ssh/id_rsa.pubファイルの内容をopc_user_home/.ssh/authorized_keysファイルに追加します。

    ソース・データベース・サーバーの場合:

    • ソース・データベース・サーバーにrootユーザーでアクセスする場合、アクションは必要ありません。
    • ソース・データベース・サーバーにSSHを介してアクセスする場合は、 zdm_installed_user_home/.ssh/id_rsa.pubファイルの内容をすべてのソース・データベース・サーバー上にあるopc_user_home/.ssh/authorized_keysファイルに追加します。

    ターゲット・データベース・サーバーの場合:

    • ターゲット・データベース・サーバーはクラウド上にのみあり、SSHを介したアクセスであるため、zdm_installed_user_home/.ssh/id_rsa.pubファイルの内容をすべてのターゲット・データベース・サーバー上にあるopc_user_home/.ssh/authorized_keysファイルに追加します。

    opcユーザーは、データベース・サーバーへのアクセスに使用される標準のOracleクラウド・ユーザーですが、sudo権限を持つ任意の特権ユーザーを使用できます。ソース・データベースとターゲット・データベースに異なるユーザーを使用することもできます。

  4. ソースおよびターゲットのデータベース・サーバー名は、名前の解決サーバーまたはITインフラストラクチャで承認されている代替方法でZero Downtime Migrationサービス・ホストから解決可能であることを確認します。

    ソースおよびターゲットのデータベース・サーバー名の解決方法の1つとして、ソースおよびターゲットのデータベース・サーバー名およびIPアドレスの詳細をZero Downtime Migrationサービス・ホストの/etc/hostsファイルに追加します。

    次の例では、IPアドレス・エントリが192.x.x.xと表示されていますが、実際のパブリックIPアドレスを追加する必要があります。

    #OCI public IP two node RAC server details
    192.0.2.1 ocidb1
    192.0.2.2 ocidb2
    #OCIC public IP two node RAC server details
    192.0.2.3 ocicdb1
    192.0.2.4 ocicdb2

    オプションで、Zero Downtime Migrationでは、論理移行と物理移行の両方で要塞ホストを介した接続ができます。

  5. ソースおよびターゲットのデータベース・サーバーのポート22がZero Downtime Migrationサービス・ホストからの着信接続要求を受け入れることを確認します。
  6. Zero Downtime Migrationサービス・ホストからすべてのソースおよびターゲットのデータベース・サーバーへの接続をテストします。
    zdmuser> ssh -i zdm_service_host_private_key_file_location user@source/target_database_server_name

    次に例を示します。

    zdmuser> ssh -i /home/zdmuser/.ssh/zdm_service_host.ppk opc@ocidb1
    zdmuser> ssh -i /home/zdmuser/.ssh/zdm_service_host.ppk opc@ocicdb1

    ノート:

    Zero Downtime Migrationの操作時のSSH接続では、Zero Downtime Migrationサービス・ホストとソースおよびターゲットのデータベース・サーバーの間に、パスフレーズの入力を必要としない非対話型の直接アクセスが必要です。
  7. TTYを無効にして、SSH特権ユーザーに対して無効になっていることを確認します。

    Zero Downtime Migrationがリモート・ホストで非対話形式でコマンドを実行できるように、TTYをオフにする必要があります。

    sudo権限を設定するには様々な方法があるため、zdmuserに対してTTYを無効にする多数の方法があります。たとえば、/etc/sudoersファイルで次のデフォルトを設定できます。

    Defaults:zdmuser !requiretty

    次のコマンドを実行して、TTYが無効になっていることを確認します。

    
    ssh -i zdm_service_host_private_key_file_location
     user@source_database/target_database_server_name
     "sudo_location_source/target_database /bin/sh -c date"

    TTYが無効になっている場合、前述のコマンドはエラーなしでリモート・ホストから日付を返します。

    SSHがTTYを必要とするように構成されている場合、出力には次のようなエラーが表示されます。

    
    
    [opc@zdm-server ~]$ ssh -i /home/zdmuser/.ssh/zdm_service_host.ppk opc@ocidb1
     "/usr/bin/sudo /bin/sh -c date"
    
    sudo: sorry, you must have a tty to run sudo

SUDOアクセスの構成

場合によっては、ソースおよびターゲットのデータベース・サーバーでsudoを使用して操作を実行するための権限を特定のユーザーに付与する必要があります。

ノート:

これらのステップは、ソースとターゲットの両方がSSHキー(共同管理データベース)を使用してアクセスされる物理移行および論理移行に適用できます。

これらのステップは、ターゲットがAutonomous Databaseである論理移行では適用できません

ソース・データベース・サーバーの場合:

  • ソース・データベース・サーバーに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にも適用できます。
  1. パスフレーズなしのSSHキーの生成の情報を使用して、ターゲットのOracle Cloud Infrastructureサーバーでopcユーザー用にパスフレーズなしのSSHキー・ファイルを生成します。ターゲットがOracle RACデータベースである場合は、最初のOracle RACサーバーからパスフレーズなしでSSHキー・ファイルを生成します。
  2. Oracle Cloud Infrastructureサーバーのopc_user_home/.ssh/id_rsa.pubファイルの内容をOracle Cloud Infrastructure server opc_user_home/.ssh/authorized_keysファイルに追加します。
  3. ターゲットのOracle Cloud Infrastructureサーバーの秘密SSHキー・ファイルをソース・サーバーの/root/.ssh/ディレクトリにコピーします。ソースがOracle RACデータベースである場合は、ファイルをすべてのソース・サーバーにコピーします。
    管理しやすくするために、秘密SSHキー・ファイルの名前はターゲット・サーバー名と同じままにし、.ppk拡張子を付けたままにしておきます。たとえば、ocidb1.ppk (ocidb1はターゲット・サーバー名)とします。

    ファイルの権限は次のようになります。

    /root/.ssh>ls -l ocidb1.ppk
    -rw------- 1 root root 1679 Oct 16 10:05 ocidb1.ppk
  4. ソース・サーバーの/root/.ssh/configファイルに次のエントリを挿入します。
    Host *
      ServerAliveInterval 10  
      ServerAliveCountMax 2
    
    Host OCI_server_name   
      HostName OCI_server_IP_address
      IdentityFile Private_key_file_location 
      User OCI_user_login  
      ProxyCommand /usr/bin/nc -X connect -x proxy_name:proxy_port %h %p

    説明

    • OCI_server_nameは、ドメイン名なしのOracle Cloud Infrastructureターゲット・データベース・サーバー名です。Oracle RACデータベースの場合は、ドメイン名なしの最初のOracle RACサーバー名を使用します。
    • OCI_server_IP_addressは、Oracle Cloud Infrastructureターゲット・データベース・サーバーのIPアドレスです。Oracle RACデータベースの場合は、最初のOracle RACサーバーのIPアドレスを使用します。
    • Private_key_file_locationは、ソース・データベース・サーバー上の秘密キー・ファイルの場所で、これは前述のステップ3でターゲット・データベース・サーバーからコピーしたファイルです。
    • OCI_user_loginは、ターゲット・データベース・サーバーへのアクセスに使用されるOSユーザーです。
    • proxy_nameは、プロキシ・サーバーのホスト名です。
    • proxy_portは、プロキシ・サーバーのポートです。

    プロキシ設定は、プロキシ・サーバーを接続に使用しない場合には不要になることもあります。たとえば、ソース・データベース・サーバーがOracle Cloud Infrastructure Classic上にある場合、ProxyCommandで始まる行を削除したり、コメントにすることができます。

    たとえば、関係のある値を指定した後の/root/.ssh/configファイルは次のようになります。

    Host *
      ServerAliveInterval 10  
      ServerAliveCountMax 2
    
    Host ocidb1
      HostName 192.0.2.1
      IdentityFile /root/.ssh/ocidb1.ppk
      User opc
      ProxyCommand /usr/bin/nc -X connect -x www-proxy.example.com:80 %h %p
    

    ファイルの権限は次のようになります。

    /root/.ssh>ls -l config
    -rw------- 1 root root 1679 Oct 16 10:05 config

    前述の例では、Oracle Cloud Infrastructureサーバー名はocidb1であり、Oracle Cloud InfrastructureサーバーのパブリックIPアドレスは192.0.2.1です。

    ソースがOracle Cloud Infrastructure Classicサーバーである場合、proxy_nameは必要ないため、ProxyCommandで始まる行を削除したり、コメントにすることができます。

    ソースがOracle RACデータベースである場合は、同じ/root/.ssh/configファイルをすべてのソースOracle RACデータベース・サーバーにコピーします。このファイルには、Oracle Cloud Infrastructureサーバー名、Oracle Cloud InfrastructureサーバーのパブリックIPアドレスおよび最初のOracle Cloud Infrastructure Oracle RACサーバーの秘密キー・ファイルの場所といった情報が構成されます。

  5. 最初のターゲットOracle Cloud Infrastructureサーバーにソース・サーバーからSSHできることを確認してから、SSHトンネルを有効にします。
    Oracle RACデータベースの場合は、すべてのソース・サーバーから最初のターゲットOracle Cloud Interfaceサーバーへの接続をテストします。

    秘密キーを使用して、次のようにします。

    [root@ocicdb1 ~] ssh -i /root/.ssh/ocidb1.ppk opc@ocidb1
    Last login: Fri Dec  7 14:53:09 2018 from 192.0.2.3
    
    [opc@ocidb1 ~]$

    ノート:

    SSH接続には、ソース・データベース・サーバーとターゲット・データベース・サーバー間に、パスフレーズの入力を必要としない非対話型の直接アクセスが必要です。
  6. ソース・サーバーで次のコマンドを実行してSSHトンネルを有効にします。
    ssh -f OCI_hostname_without_domain_name -L ssh_tunnel_port_number:OCI_server_IP_address:OCI_server_listener_port -N

    説明

    • OCI_hostname_without_domain_nameは、ドメイン名なしのOracle Cloud Infrastructureターゲット・データベース・サーバー名です。Oracle RACデータベースの場合は、ドメイン名なしの最初のOracle RACサーバー名を使用します。
    • ssh_tunnel_port_numberは、1024-65545の範囲の使用できる一時的なポートです。SSHトンネル・ポートは、サーバーの他のプロセスで使用されていないことを確認してから使用します。
    • OCI_server_listener_portはターゲット・データベースのリスナー・ポート番号です。リスナー・ポートは、ソース・データベース・サーバーとOracle Cloud Infrastructureターゲット・サーバー間でオープンされている必要があります。
    • OCI_server_IP_addressは、ターゲット・データベース・サーバーのIPアドレスです。シングル・インスタンス・データベースの場合は、Oracle Cloud InfrastructureサーバーのIPアドレスを指定します。Oracle RACデータベースの場合は、Oracle Cloud InfrastructureのSCAN名をドメイン名付きで指定します。ドメイン名付きのSCAN名が解決できない場合や機能しない場合は、lsnrctl statusコマンド出力を使用して取得したIPアドレスを指定します。次に例を示します。
      Listening Endpoints Summary...
        (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
        (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.9)(PORT=1521)))
        (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.10)(PORT=1521)))

    次に、SSHトンネルを有効にするために実行するコマンドの例を示します。

    [root@ocicdb1~]ssh -f ocidb1 -L 9000:192.0.2.9:1521 -N

    Oracle RACデータベースの場合は、すべてのソース・サーバーについてこのステップを繰り返す必要があります。

  7. SSHトンネルをテストします。
    ソース・サーバーにログインし、oracleユーザーに切り替えてデータベース環境をソースとして参照し、次のコマンドを実行します。
    tnsping localhost:ssh_tunnel_port

    次に例を示します。

    [oracle@ocicdb1 ~] tnsping localhost:9000

    コマンド出力は、次のようになります。

    TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 22-JAN-2019 05:41:57
    Copyright (c) 1997, 2014, Oracle.  All rights reserved.
    Used parameter files:
    Used HOSTNAME adapter to resolve the alias
    Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=9000)))
    OK (50 msec)

    tnspingが機能しない場合、SSHが有効になっていません。

    Oracle RACの場合は、すべてのソース・サーバーについてこのステップを繰り返す必要があります。

Oracle GoldenGate Hubの追加接続の前提条件

Oracle GoldenGateを使用してオンライン論理移行を実行するには、Zero Downtime Migrationサービス・ホストとソースおよびターゲット・データベース・サーバー間の接続に加えて、Oracle GoldenGateハブとソースおよびターゲット・データベース・サーバー間の接続も確保する必要があります。

OCIネットワーク・セキュリティ・ルールで次の接続が許可されていることを確認します

表3-1 オンライン論理移行の前提条件接続

接続 ソース 接続先
SQL*Net GoldenGateハブ ソース・データベース
SQL*Net GoldenGateハブ ターゲット・データベース
HTTPS ZDMサーバー GoldenGateハブ

Zero Downtime Migrationサーバーは、OCI RESTエンドポイントへのポート443を介したHTTPSコールを実行できる必要があります。

Zero Downtime Migrationのポートの要件

Zero Downtime Migrationサービス・ホスト、ソースおよびターゲットのデータベース・サーバー、Oracle Cloud Object Storeサービス間の通信に必要なポートは、次の表を参照してください。

表3-2 Zero Downtime Migrationの通信ポート

イニシエータ ターゲット プロトコル ポート 用途 説明
Zero Downtime Migrationサービス・ホスト ソースおよびターゲットのデータベース・サーバー TCP 22 SSH Zero Downtime Migrationの操作フェーズを実行する認証ベースの操作

ソースおよびターゲットのデータベース・サーバーでは、Zero Downtime Migrationサービス・ホストからの着信接続を受け入れる必要があります。

Autonomous Databaseターゲットには適用できません

Zero Downtime Migrationサービス・ホスト ソースおよびターゲットのデータベース・サーバー TCP 1521、2484またはジョブに適用可能なデータベースSCANリスナー・ポート SQL*Net 論理移行用
Zero Downtime Migrationサービス・ホスト Oracle Cloud Interface RESTエンドポイント SSL 443 OCI RESTエンドポイント 論理移行のターゲット検出
ソース・データベース・サーバー ターゲット・データベース・サーバー TCP 1521またはジョブに適用可能なデータベースSCANリスナー・ポート SQL*Net OracleのSQL*Netプロトコルを介したデータベースへのOracleクライアント接続を許可する必要があります。

データベース問合せ、Data Guard同期および構成を実行します。

ノート: デフォルト以外のポート番号(ポート1521以外のもの)をローカル・リスナー・アドレスに使用している場合、デフォルト以外のポートで接続を許可する必要があります。

ターゲット・データベース・サーバー ソース・データベース・サーバー TCP 1521または適用可能なデータベースSCANリスナー・ポート SQL*Net OracleのSQL*Netプロトコルを介したデータベースへのOracleクライアント接続を許可する必要があります。

スイッチオーバー後にソース・データベースがOracle Cloudの新しいプライマリと同期している必要がある場合に、REDOログの送信を許可します。Oracle Cloudからソース・データベース・サーバーに通信できない場合、この通信を回避するために、レスポンス・ファイルでSKIP_FALLBACKTRUEに設定します。

ノート: デフォルト以外のポート番号(ポート1521以外のもの)をローカル・リスナー・アドレスに使用している場合、デフォルト以外のポートで接続を許可する必要があります。

ソース・データベース・サーバー Oracle Cloud Object Storeサービス SSL 443 データベース・バックアップ・ストア。指定されたOracle Cloud Object Storeコンテナにソース・データベースのバックアップを作成します。 選択したバックアップ方法でOracle Cloud Object Storeサービスをバックアップ媒体として使用する場合、記載されたOracle Cloud Object Storeサービスが適合するポートにアクセスします。
ターゲット・データベース・サーバー Oracle Cloud Object Storeサービス SSL 443 データベース・バックアップ・ストア。指定されたOracle Cloud Object Storeコンテナからターゲット・データベースにソース・データベースのバックアップをリストアします。 選択したバックアップ方法でOracle Cloud Object Storeサービスをバックアップ媒体として使用する場合、記載されたOracle Cloud Object Storeサービスが適合するポートにアクセスします。

ノート:

ソース・データベースへのSSHアクセスがない場合、Zero Downtime Migrationワークフローの一部として次のアクションがスキップされます。
  • ダンプは、ソース・ノードからオブジェクト・ストアまたはターゲット・サーバーにアップロードまたは転送されません
  • Zero Downtime Migrationでは、データベース・ユーザーがソース・エクスポート・パスに対して書き込める場合、ソース・エクスポート・パスは検証されません
  • Zero Downtime Migrationでは、ソース・データベース・サーバーがOracle Cloud Object Storeに正常にアクセスできるかどうかは検証されません

ノート:

ルート資格証明を使用して移行を実行する場合(migrate database -scroot)、設定フェーズでは、エフェメラル範囲から選択した6つのポート、またはzdmbase/crsdata/zdm_service_host/rhp/conf/rhp.prefTRANSFERPORT_RANGEに設定されたポート範囲からの6つのポートが、Zero Downtime Migrationによって使用されます。指定したポートは、ソースまたはターゲット・データベース・サーバーのZero Downtime Migrationサービス・ホストからの着信接続を受け入れできる必要があります。

パスフレーズなしの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など)に生成されます。