Oracle Databaseの移行でキャッシュ・オブジェクトのクリーン・アップが必要

キャッシュを設定すると、キャッシュ・オブジェクトおよびメタデータがTimesTenとOracleの両方のデータベースにインストールされます。Oracle Databaseを移行すると、バックエンドのOracle Databaseのキャッシュ・メタデータが正しくなくなります。したがって、Oracle Databaseを移行する前に、TimesTenとOracleの両方のデータベースからキャッシュ・オブジェクトとメタデータをクリーン・アップする必要があります。

  1. DROP CACHE GROUP文ですべてのキャッシュ・グループを削除します。

    次の例では、TimesTenキャッシュ管理ユーザーとしてcache1データベースに接続し、customer_ordersキャッシュ・グループを削除します。

    % ttIsql "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
    Command> DROP CACHE GROUP customer_orders;

    「キャッシュ・グループの削除」を参照してください。

  2. TimesTenとOracleの両方のデータベースでキャッシュをクリーン・アップします。TimesTenとOracleの両方のデータベースでキャッシュをクリーン・アップしないと、キャッシュ・エラーが発生します。

    • TimesTen Classicを使用する場合は、SQL*Plusスクリプトtimesten_home/install/oraclescripts/cacheCleanUp.sqlをOracleキャッシュ管理ユーザーとして実行し、キャッシュ処理に使用されるOracle Databaseキャッシュ・オブジェクトおよびメタデータをクリーン・アップします。TimesTen Classicシステムのホスト名およびTimesTenデータベース(パスを含む)を引数としてcacheCleanUp.sqlスクリプトに渡します。

    • TimesTen Scaleoutでは、SQL*Plusスクリプトtimesten_home/install/oraclescripts/scaleoutCacheCleanUp.sqlをOracleキャッシュ管理ユーザーとして実行し、キャッシュ処理に使用されるOracle Databaseキャッシュ・オブジェクトおよびメタデータをクリーン・アップします。グリッド名とTimesTenデータベース名は、引数としてscaleoutCacheCleanUp.sqlスクリプトに渡されます。

      次の例は、TimesTenデータベースに、キャッシュ表sales.customersおよびsales.ordersを含む1つの読取り専用キャッシュ・グループcustomer_ordersを示しています。この例では、TimesTen ClassicシステムにcacheCleanUp.sqlスクリプトを使用します。これは、この2つのキャッシュ表に関連付けられている変更ログ表およびトリガーを削除します。scaleoutCacheCleanup.sqlスクリプトは、入力パラメータとしてグリッド名とデータベース名を必要とする点を除き、TimesTen Scaleoutの場合と同じ方法で実行されます。

      % cd timesten_home/install/oraclescripts
      % sqlplus cacheadmin/orapwd
      SQL> @cacheCleanUp "sys1" "/disk1/databases/database1"
      
      *****************************OUTPUT**************************************
      Performing cleanup for object_id: 69959 which belongs to table : CUSTOMERS
      Executing: delete from tt_07_agent_status where host = sys1 and datastore =
      /disk1/databases/database1 and object_id = 69959
      Executing: drop table tt_07_69959_L
      Executing: drop trigger tt_07_69959_T
      Executing: delete from tt_07_user_count where object_id = object_id1
      Performing cleanup for object_id: 69966 which belongs to table : ORDERS
      Executing: delete from tt_07_agent_status where host = sys1 and datastore =
      /disk1/databases/database1 and object_id = 69966
      Executing: drop table tt_07_69966_L
      Executing: drop trigger tt_07_69966_T
      Executing: delete from tt_07_user_count where object_id = object_id1
      **************************************************************************
  3. Oracle Databaseの移行を実行します。

  4. Oracleの移行によってOracleキャッシュ管理ユーザーとその表領域が排除された場合は、Oracle Databaseでキャッシュを再度設定します。TimesTenデータベースをチェックして、TimesTenキャッシュ管理ユーザーとスキーマ・ユーザーがまだ存在していることを確認します。「キャッシュ・インフラストラクチャの設定」を参照してください。

  5. キャッシュ・グループを再作成します。「キャッシュ・グループの定義」を参照してください。