キャッシュ・エージェントと呼ばれるTimesTenプロセスは、キャッシュ・グループのロードやリフレッシュなどの非同期のキャッシュ処理を実行します(『Oracle TimesTen In-Memory Database概要』のCache Connect to Oracleに関する説明を参照)。Cache Connect to Oracle処理の多くは、キャッシュ・エージェントを使用せずに、TimesTenで直接実行できます。
次の1つ以上の条件に該当する場合は、キャッシュ・グループが含まれているデータ・ストアごとに、個別のキャッシュ・エージェントを起動する必要があります。
注意: | UNIX Platformsのキャッシュ・エージェントに、ORACLE_HOMEおよびLD_LIBRARY_PATHまたはSHLIB_PATHの環境変数が「UNIX PlatformでのCache Connect to Oracleの設定」で示されているように設定されている必要があります。 |
次の項で説明するように、DSNのキャッシュ・エージェントは、コマンドラインまたはプログラムから起動できます。
また、Cache Administratorを使用すると、ブラウザからもキャッシュ・エージェントを起動できます。詳細は、「Cache Administrator」を参照してください。
注意: | アクセス制御を有効にしてTimesTenをインストールした場合、キャッシュ・エージェントを起動または停止するには、データ・ストアに対してADMIN権限が必要です。また、TimesTenユーザー名はOracleユーザー名と一致している必要があります(これは、内部ユーザーおよび外部ユーザーの両方に適用されます)。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のアクセス制御に関する説明を参照してください。 |
コマンドラインからキャッシュ・エージェントを制御するには、ttAdminユーティリティを使用します。ttAdminユーティリティを使用して、次のタスクを実行できます。
ttAdminユーティリティの使用方法の詳細は、『Oracle TimesTen In-Memory Database APIリファレンス・ガイド』を参照してください。
次のいずれかのキャッシュ・グループ・タイプを使用している場合は、「Oracleユーザーの作成および権限の設定」で示されているOracle権限を持つキャッシュ管理ユーザー・アカウントが必要です。
キャッシュ管理ユーザーIDは、次のルールに従っている必要があります。
キャッシュ管理パスワードは、次のルールに従っている必要があります。
キャッシュ・エージェントを起動する前にキャッシュ管理ユーザーIDおよびパスワードを設定します。次の構文を使用します。
ttAdmin -cacheUidPwdSet -cacheUid cacheUid -cachePwd cachePwd DSN
注意: | データ・ストア内に自動リフレッシュ・キャッシュ・グループまたはAWTキャッシュ・グループが存在している場合、キャッシュ管理ユーザーIDおよびパスワードを再設定することはできません。これらのキャッシュ・グループを削除してから、キャッシュ管理ユーザーIDおよびパスワードを再設定する必要があります。 |
ttAdmin -cacheUidPwdSet -cacheUid testuser -cachePwd mypass myOraCache
キャッシュ管理ユーザーIDおよびパスワードを変更する場合は、キャッシュ・エージェントを再起動する必要があります。
注意: | データ・ストアにキャッシュ・グループが存在しない場合は、キャッシュ管理ユーザーIDおよびパスワードを設定しないでください。キャッシュ・グループが存在しない場合にキャッシュ管理ユーザーIDおよびパスワードを設定すると、それらのキャッシュ管理ユーザーIDおよびパスワードがOracleデータベースに対して不必要に使用され、検証されます。 |
コマンドラインからキャッシュ・エージェントを起動するには、次の構文を使用します。
ttAdmin -cacheStart DSN
ttAdmin -cacheStart myOraCache
相対パスのDSNで識別されるデータ・ストアのキャッシュ・エージェントを起動しようとすると、TimesTenはその実行位置から相対的にデータ・ストアを検索し、失敗します。たとえば、Windowsで、DSNのデータ・ストアにパスをDataStore=.\dsn1
と指定し、次のコマンドでキャッシュ・エージェントを起動しようとしたとします。
ttAdmin -cacheStart dsn1
キャッシュ・エージェントは、install_dir\srv\dsn1
でデータ・ストアを検索します。その位置ではデータ・ストアを検出できないため、エージェントは起動されません。UNIXでは、キャッシュ・エージェントは次の位置を検索します。
/var/TimesTen/tt
version/
bits
キャッシュ・エージェントを停止するには、次の構文を使用します。
ttAdmin -cacheStop DSN
ttAdmin -cacheStop myOraCache
注意: | AUTOREFRESH機能を使用している場合は、キャッシュ・グループの削除または変更後すぐにキャッシュ・エージェントを停止しないでください。2分以上待機してください。キャッシュ・エージェントでは、AUTOREFRESHによって使用されたOracleオブジェクトをクリーンアップするためにこの時間が必要です。 |
ttCachePolicySetプロシージャをコールすることによって、キャッシュ・エージェント起動ポリシーを設定できます。現在のポリシーに戻るには、ttCachePolicyGetプロシージャを使用します。
デフォルトのキャッシュ・エージェント起動ポリシーはmanualです。TimesTenデーモンが再起動するとキャッシュ・エージェントが自動的に再起動するようにする場合は、キャッシュ・エージェント起動ポリシーをalwaysに設定します。このポリシーをalwaysに設定すると、すぐにキャッシュ・エージェントが起動します。
キャッシュ・エージェント起動ポリシーをalwaysに設定します。
CALL ttCachePolicySet ('always');
データ・ストアのキャッシュ・エージェントをプログラムから制御するには、まず、データ・ストアに接続します。ttCacheUidPwdSet、ttCacheStart、ttCacheStopまたはttCachePolicySetプロシージャを使用して、次のタスクを実行します。
ttCacheUidPwdSet、ttCacheStart、ttCacheStopおよびttCachePolicySetプロシージャの詳細は、『Oracle TimesTen In-Memory Database APIリファレンス・ガイド』の組込みプロシージャに関する説明を参照してください。
次のいずれかのキャッシュ・グループ・タイプを使用している場合は、「Oracleユーザーの作成および権限の設定」で示されているOracle権限を持つキャッシュ管理ユーザー・アカウントが必要です。
キャッシュ管理ユーザーIDは、次のルールに従っている必要があります。
キャッシュ管理パスワードは、次のルールに従っている必要があります。
キャッシュ・エージェントを起動する前にキャッシュ管理ユーザーIDおよびパスワードを設定します。ttCacheUidPwdSetプロシージャを使用します。
注意: | データ・ストアにキャッシュ・グループが存在しない場合は、キャッシュ管理ユーザーIDおよびパスワードを設定しないでください。キャッシュ・グループが存在しない場合にキャッシュ管理ユーザーIDおよびパスワードを設定すると、それらのキャッシュ管理ユーザーIDおよびパスワードがOracleデータベースに対して不必要に使用され、検証されます。 |
この例では、データ・ストアは、接続ハンドルhdbcで識別されます。キャッシュ管理ユーザーIDはtestuser、キャッシュ管理ユーザー・パスワードはmypassです。
sprintf( stmt, "CALL ttCacheUidPwdSet('testuser','mypass')");
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
sprintf( stmt, "CALL ttCacheStart()" );
rc = SQLAllocStmt( hdbc, &hstmt2 );
rc = SQLExecDirect( hstmt2, (SQLCHAR *) stmt, SQL_NTS );
キャッシュ・エージェントを起動するには、ttCacheStartプロシージャを使用します。
この例では、データ・ストアは接続ハンドルhdbcで識別されます。
sprintf( stmt, "CALL ttCacheStart()" );
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
注意: | 自動コミットを無効にしている場合は、ttCacheStartをコールする前とコールした後の両方でコミットする必要があります。 |
キャッシュ・エージェントを停止するには、ttCacheStopプロシージャを使用します。
sprintf( stmt, "CALL ttCacheStop()" );
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
ttCacheStopプロシージャには、オプションのパラメータstopTimeoutがあります。このパラメータで、キャッシュ・エージェントが停止するまでTimesTenデーモンが待機する時間を指定します。キャッシュ・エージェントが指定した時間内に停止しない場合、そのキャッシュ・エージェントはTimesTenデーモンによって停止されます。stopTimeoutのデフォルト値は100秒です。値0(ゼロ)は、永久に待機することを示します。
キャッシュ・エージェントを停止し、stopTimeoutを160秒に設定するには、次のように入力します。
sprintf( stmt, "CALL ttCacheStop(160)" );
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
注意: | 自動コミットを無効にしている場合は、ttCacheStopをコールする前とコールした後の両方でコミットする必要があります。 |
注意: | AUTOREFRESH機能を使用している場合は、キャッシュ・グループの削除または変更後すぐにキャッシュ・エージェントを停止しないでください。2分以上待機してください。キャッシュ・エージェントでは、AUTOREFRESHによって使用されたOracleオブジェクトをクリーンアップするためにこの時間を使用します。 |
ttCachePolicySetプロシージャをコールすることによって、キャッシュ・エージェント起動ポリシーを設定できます。現在のポリシーに戻るには、ttCachePolicyGetプロシージャを使用します。
デフォルトのキャッシュ・エージェント起動ポリシーはmanualです。TimesTenデーモンが再起動するとキャッシュ・エージェントが自動的に再起動するようにする場合は、キャッシュ・エージェント起動ポリシーをalwaysに設定します。このポリシーをalwaysに設定すると、すぐにキャッシュ・エージェントが起動します。
hdbc接続ハンドルで識別されるデータ・ストアのキャッシュ・エージェント起動ポリシーをalwaysに設定します。
sprintf( stmt, "CALL ttCachePolicySet ('always')");
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );