Oracleデータベースへのキャッシュ・エージェント接続の制限
Cacheでは、キャッシュ管理のために、キャッシュ・エージェントごとにOracle Databaseへの接続が一定数開始されます。グリッドが大きい場合は、必要なキャッシュ・エージェント接続の数を管理できます。
TimesTen Scaleout内の各キャッシュ・エージェントにより、Oracleデータベースへの接続を使用して、11個のアクティブなキャッシュ管理スレッドが起動されます。また、キャッシュ・エージェントごとに、自動リフレッシュ間隔当たり2つの接続がさらに追加されます。たとえば、異なる自動リフレッシュ間隔が4つあるキャッシュ・グループが定義されている場合、自動リフレッシュ間隔を管理するキャッシュ・エージェントごとに、Oracleデータベースへの接続が(2*4)=8個、追加で作成されます。したがって、TimesTen Scaleoutでキャッシュを使用するときに作成される、Oracleデータベースへの接続の合計数は、次のとおりです。
total_number_connections = num_cache_agents * (11 + (2 * num_interval))
次の例では、次の条件のグリッドを使用します。
-
k=3。
-
そのグリッド内のデータベースは、レプリカ・セットを10個にして定義されています。
-
ユーザーが、自動リフレッシュ間隔が4つあるキャッシュグループを指定します。
この例では、host01
、host02
、… host30
という順にラベルが付いた、30個のホストを作成します。この例のこれらのホストにある各データ・インスタンスで1つのキャッシュ・エージェントが実行される場合、それらのキャッシュ・エージェントを処理するためのOracleデータベースへの接続の数は、次のようになります。
30 * (11 + (2*4)) = 570
大きなグリッドでインスタンスごとに1つのキャッシュ・エージェントが起動された場合、Oracleデータベースへのキャッシュ管理接続が余分にオープンされるという状況が発生します。大きなグリッドの場合は、そのようにしないで、キャッシュ・エージェントの一部のみを起動することをお薦めします。起動できるキャッシュ・エージェントの最小数は、自動リフレッシュ間隔ごとに1つとkファクタごとに1つです。
num_cache_agents = (num_interval + k)
したがって、前述の例では、自動リフレッシュ間隔が4つあり、kファクタが3であるため、ttGridAdmin dbCacheStart -instance
コマンドを使用して、(4+3)=7個のキャッシュ・エージェントを起動します。
各キャッシュ・エージェントには、キャッシュ管理タスクを実行するためにOracleデータベースに接続されたスレッドと、自動リフレッシュ処理を実行するリフレッシャ・スレッドがあります。自動リフレッシュ間隔は、各キャッシュ・エージェントによって各キャッシュ・エージェントの平均間隔が自動リフレッシュされるように、アクティブなキャッシュ・エージェント間でリバランスされます。
この例では、7個のキャッシュ・エージェントを起動します。
% ttGridAdmin dbCacheStart -instance host01 database1
Database database1 : Starting cache agents.
% ttGridAdmin dbCacheStart -instance host02 database1
Database database1 : Starting cache agents.
% ttGridAdmin dbCacheStart -instance host03 database1
Database database1 : Starting cache agents.
% ttGridAdmin dbCacheStart -instance host04 database1
Database database1 : Starting cache agents.
% ttGridAdmin dbCacheStart -instance host05 database1
Database database1 : Starting cache agents.
% ttGridAdmin dbCacheStart -instance host06 database1
Database database1 : Starting cache agents.
% ttGridAdmin dbCacheStart -instance host07 database1
Database database1 : Starting cache agents.
7個のキャッシュ・エージェントが起動されており、それぞれに4つの自動リフレッシュ間隔があると、キャッシュ管理のみのためにOracleデータベースへの接続が(7 * (11 + (2*4))= 133個あることになります。自動リフレッシュ処理およびキャッシュ管理タスクは、7個のデータ・インスタンス間でロード・バランシングされます。可用性要件に応じて、ユーザーは、キャッシュ・グループで必要となる自動リフレッシュ間隔の数を減らすことで、接続数をさらに制限できます。
キャッシュ・エージェントは最初の7個のデータ・インスタンスに存在することがわかっているため、キャッシュ・エージェントを必要とするすべての手動キャッシュ操作は、これら7個のデータ・インスタンスのいずれかで実行する必要があります。キャッシュ・エージェントが実行されていないデータ・インスタンスから手動キャッシュ操作を実行する必要がある場合は、次の手順を実行できます。
-
アクティブ管理インスタンスで、
ttGridAdmin dbCacheStart
コマンドを実行することで、キャッシュ操作を実行する必要があるデータ・インスタンスのキャッシュ・エージェントを起動します(たとえば、host19
)。% ttGridAdmin dbCacheStart -instance host19 database1 Database database1 : Starting cache agents.
-
host19
にあるデータ・インスタンスでキャッシュ操作を実行します。 -
手動キャッシュ操作が完了したら、アクティブ管理インスタンスで
ttGridAdmin dbCacheStop
コマンドを実行することで、そのデータ・インスタンスのキャッシュ・エージェントを停止します。% ttGridAdmin dbCacheStop -instance host19 database1 Database database1 : Stopping cache agents.