RACをセットアップしました。 2つのリスナーLISTENERとLISTENER_DGがあります。 LISTENERはリスニングポート1521 LISTENER_DGはリスニング1530
接続中にポート1521を示していても、クライアントがSHARED接続モードを使用してデータベースに接続すると、スキャンリスナーがポート1530のvip ipに接続を転送することがあります。netadminsが1530ではなくクライアントの1521ポートを開いただけなので、接続は失敗します。
これは、共有接続モードでのみ発生します。 DEDICATEDはうまく機能します。
LISTENER_DG(ポート1530)はData Guard Brokerに使用され、そのために1521以外のポートを使用しています。
1530イベントクライアントへのスキャン転送接続がtnsnames.oraの1521ポートを使用するのはなぜですか?
見つかりましたPDF about Oracle Single Client Access Name(SCAN)
同じサブネット上の複数のポートでSCANを使用
For the purpose of allowing applications to maintain a distinguishable connect string on Host / port level using one SCAN as the Host or to enable port-based firewall configurations, SCAN can be set up to support more than one port for the same subnet.
**異なるポートが初期接続にのみ使用されることに注意する必要があります。 SCANポートでSCANを使用した接続が確立されると、ポートの割り当ては維持されず、Oracle RACクラスタ内の接続のルーティングは、1つ以上のローカル・リスナーに登録されたデータベース・サービスを使用して実行されます。つまり、すべてのSCANポートが同じように扱われるため、任意のSCANポートに着信する接続を、同じサブネット内の任意のポートにある登録済みローカルリスナーに転送できます。 **
Note also that the multi-port assignment differs per version. Oracle Grid Infrastructure 11.2.0.3 would not let you set up multiple ports on one SCAN anymore, while Oracle Grid Infrastructure 11.2.0.2 would have let you use this configuration. Support for this configuration is resumed with Oracle Grid Infrastructure 11.2.0.3.6 and higher as well as Oracle Grid Infrastructure 12c.
Local_listenerを値に設定しています:(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(Host = node1-vip-hq)(PORT = 1530)))(ADDRESS =(PROTOCOL = TCP)(Host = node1- vip-hq)(PORT = 1521)))
したがって、私のローカルリスナーは1530と1521です。スキャンからの着信接続は、それらのいずれかにリダイレクトできます。
このリスナーで静的に登録された別のリスナー(ポート1522)を追加しましたが、local_listenerパラメーターでこのリスナーを示していません。
このポートへの接続は、スキャンではなくVIPアドレスを介して行う必要があります。そのように:
> MYDB_JOB = (DESCRIPTION =
> (ADDRESS_LIST=
> (FAILOVER=on)
> (LOAD_BALANCE=on)
> (ADDRESS=(PROTOCOL=tcp)(Host= node1-vip-hq)(PORT=1522))
> (ADDRESS=(PROTOCOL=tcp)(Host= node1-vip-hq)(PORT=1522))
> )
> (CONNECT_DATA =
> (SERVER = DEDICATED)
> (SERVICE_NAME = MYDB)
> ) )