DB2/HADR を使用した非常にユニークなシナリオのように見えます。
connect_proc を使用してデータベースへのログインを監視し、有効なホスト名のテーブルに対して接続のホスト名をバウンスします。ホスト名がそのリストにある場合、アクセスが許可されてログに記録されます。ホスト名がそのリストにない場合、「ACCESS RESTRICTED」で 20001 エラーが返されます。
私たちの問題は、データベースへの接続にあります。
接続文字列がこれであると仮定しましょう: jdbc:db2://host3:1000/vpcdb:clientRerouteAlternateServername=host3,host2,host1;clientRerouteAlternatePortNumber=1000,1000,100;queryCloseImplicit=2;enableSeamlessFailover=yes;enableClientAffinitiesList=yes;blockingReadConnectionTimeout= 1200;
host1 が 1 次 HADR DB の場合は 1776 を受け取り、host3 が 1 次 HADR DB の場合はアクセスを取得します。
以下を使用してトリガーが無効になっている場合: update db cfg using connect_proc NULL@ アクセスが許可されます
具体的には、4.14.111 と 4.13.80 の複数の DB2 ドライバーが使用されています。ここでのもう 1 つの興味深い点は、上記のいずれの構成もトリガーがアクティブな Squirrel では機能しますが、activemq や他のアプリケーションでコネクタとして使用された場合は機能しないことです。