日本語PDF

6.10.5 SCANを使用したOracle RACデータベースへの接続について

tnsnames.oraファイルを構成するかわりに、SCANを使用してデータベースに接続するようにOracle RACデータベース・クライアントを構成することをお薦めします。

Oracle Database 11g リリース2より前のOracle RACリリースのノードVIPアドレスを使用してクラスタに接続するように構成されたクライアントは、既存の接続アドレスを引き続き使用できます。SCANの使用は必須ではありません。以前のリリースのOracle Databaseをアップグレードすると、データベースはローカル・リスナーだけではなく、SCANリスナーにも登録されるので、クライアントがSCANを使用してそのデータベースに接続できるようになります。

SCANがDNSで解決される場合、DNSはクライアントに対して3つのSCAN VIPアドレスをすべて返します。GNSによってSCANが解決される場合は、DNSのゾーン委任がGNSにルックアップ要求を送信するため、クライアントに3つのSCAN VIPアドレスが戻されます。

Oracle Database 19cのデータベース・クライアントは、SCANを使用してデータベースに接続します。簡易接続メソッドには接続の確立のタイムアウトおよび再試行回数を指定する機能がないため、SCANでは簡易接続メソッドを使用しないことをお薦めします。かわりに、アプリケーションではOracle Net接続記述子を次の形式で使用する必要があります。

(DESCRIPTION =
      (CONNECT_TIMEOUT=90) (RETRY_COUNT=20)(RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3)
                   ( ADDRESS = (PROTOCOL = TCP)(HOST=scan)(PORT=1521))
                      (CONNECT_DATA=(SERVICE_NAME=service_name)))

scanは、クラスタのSCANを表します。ポート番号を指定しない場合、デフォルト値の1521がTCPポート識別子に使用されます。service_nameは動的データベース・サービスの名前です。

その後、クライアントでは、返された1つのSCAN VIPアドレスを使用してSCANリスナーに問い合せます。SCANリスナーがクライアントから接続要求を受け取ると、SCANリスナーはクラスタ内で最もロードされていない、要求されたサービスを提供しているインスタンスを識別します。次に、最もロードされていないインスタンスが実行中のノードのローカル・リスナーに接続要求をリダイレクトし、クライアントにローカル・リスナーのアドレスを付与します。次に、ローカル・リスナーは、データベース・インスタンスへの接続を作成します。

例6-1 Oracle Net接続記述子を使用したOracle RACへの接続

SCANがsales1-scan.mycluster.example.comであるクラスタでOracle RACデータベースが実行されている場合は、次のような接続記述子を使用して、データベース・サービスoltp.example.comに対する接続要求を送信できます。

(DESCRIPTION =
      (CONNECT_TIMEOUT=90) (RETRY_COUNT=20)(RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3)
                 ( ADDRESS = (PROTOCOL = TCP)(HOST=sales1-scan.mycluster.example.com)(PORT=1521))
                           (CONNECT_DATA=(SERVICE_NAME=oltp.example.com)))

SCANがDNSで解決される場合、DNSはクライアントに対して3つのSCAN VIPアドレスをすべて返します。GNSによってSCANが解決される場合は、DNSのゾーン委任がGNSにルックアップ要求を送信するため、クライアントに3つのSCAN VIPアドレスが戻されます。その後、クライアントでは、返された1つのSCAN VIPアドレスを使用してSCANリスナーに問い合せます。

SCANリスナーがクライアントから接続要求を受け取ると、SCANリスナーはクラスタ内で最もロードされていない、要求されたサービスを提供しているインスタンスを識別します。次に、最もロードされていないインスタンスが実行中のノードのローカル・リスナーに接続要求をリダイレクトし、クライアントにローカル・リスナーのアドレスを付与します。次に、ローカル・リスナーは、データベース・インスタンスへの接続を作成します。