ttMigrateユーティリティを使用したTimesTen Classicデータベースのバックアップおよびリストア

ttMigrateユーティリティは、TimesTen Classicデータベースの表および索引をバイナリ・ファイルに保存します。

キャッシュ・グループが移行されてバイナリ・ファイルに含まれている場合、キャッシュ・グループの定義およびスキーマは含まれていますが、キャッシュ・グループのデータは移行されていません。

ノート:

『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』「TimesTen Classicでのデータのバックアップ、リストアおよび移行」および『Oracle TimesTen In-Memory Databaseリファレンス』「ttMigrate」を参照してください。

リストア済データベースが元々接続していたデータベースとは別のバックエンドOracle Databaseに接続する場合で、データベースのバックアップおよびリストアにttMigrateユーティリティを使用する場合は、次の手順を実行します。

  1. キャッシュ・エージェントを停止します。

    % ttIsql -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
    Command> call ttCacheStop;
    Command> exit
    Disconnecting...
    Done.
  2. ttMigrate -cユーティリティ・コマンドを実行して、データベースおよびそのオブジェクトをバイナリ・ファイルに保存します。

    % ttMigrate -c "DSN=cache1" cache1.ttm
    ...
    Saving user CACHEADMIN
    User successfully saved.
    
    Saving user sales
    User successfully saved.
     
    Saving table CACHEADMIN.READTAB
      Saving rows...
      2/2 rows saved.
    Table successfully saved.
     
    Saving cache group CACHEADMIN.READCACHE
      Saving cached table SALES.READTAB
    Cache group successfully saved.
  3. (オプション) TimesTenデータベースからすべてのキャッシュ・グループを削除します。データベースはキャッシュ・グループにまだ存在するため、TimesTenではキャッシュ・グループを削除することをお薦めします。TimesTenデータベースを破棄する前にすべてのキャッシュ・グループを削除すると、Oracle Databaseにあるそのキャッシュ・グループのメタデータがすべて削除されます。ただし、今後のステップでcacheCleanup.sqlスクリプトを使用する場合、このスクリプトはOracle Databaseのメタデータを削除します。

    エラーが報告される場合もありますが、これは無視しても差し支えありません。

    Command> DROP CACHE GROUP readcache;
    Command> exit
    Disconnecting...
    Done.
  4. TimesTenデータベースを破棄します。

    % ttDestroy cache1
  5. Oracle Databaseでオブジェクトをクリーン・アップします。前述のステップでキャッシュ・グループを削除しなかった場合は、Oracleキャッシュ管理ユーザーとしてSQL*Plusスクリプトtimesten_home/install/oraclescripts/cacheCleanUp.sqlを実行すると、自動リフレッシュ処理の実装に使用されるOracle Databaseオブジェクトを削除できます。TimesTen Classicシステムのホスト名およびTimesTenデータベース(パスを含む)を引数としてcacheCleanUp.sqlスクリプトに渡します。

    ttCacheInfoユーティリティまたはcacheInfo.sqlスクリプトをOracleキャッシュ管理ユーザーとして実行し、ホスト名およびデータベース名を確認できます。

    % cd timesten_home/install/oraclescripts
    % sqlplus cacheadmin/orapwd
    SQL> @cacheCleanUp "sys1" "/users/OracleCache/cache1"
    
    *****************************OUTPUT**************************************
    Performing cleanup for object_id: 69959 which belongs to table : CUSTOMER
    Executing: delete from tt_05_agent_status where host = sys1 and datastore =
    /users/OracleCache/cache1 and object_id = 69959
    Executing: drop table tt_05_69959_L
    Executing: drop trigger tt_05_69959_T
    Executing: delete from tt_05_user_count where object_id = object_id1
    Performing cleanup for object_id: 69966 which belongs to table : ORDERS
    Executing: delete from tt_05_agent_status where host = sys1 and datastore =
    /users/OracleCache/cache1 and object_id = 69966
    Executing: drop table tt_05_69966_L
    Executing: drop trigger tt_05_69966_T
    Executing: delete from tt_05_user_count where object_id = object_id1
    **************************************************************************
    
  6. データベースを作成してリストアします。

    1. 最初の接続リクエストでTimesTenデータベースを作成します。

    2. キャッシュ表ユーザーおよびTimesTenキャッシュ管理ユーザーを作成します。これらのユーザーに適切な権限を付与します。

      ノート:

      移行元のTimesTen Classicのリリースによっては、ユーザーおよび権限が移行されない場合があります。Oracle TimesTen In-Memory DatabaseリファレンスttMigrateを参照してください。

      % ttIsql cache1
      Command> CREATE USER cacheadmin IDENTIFIED BY timesten;
       User created.
       
      Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheadmin;
      Command> CREATE USER sales IDENTIFIED BY timesten; 
      User created.
       
      Command> exit
      Disconnecting...
      Done.
    3. ttCacheUidPwdSet組込みプロシージャを使用してOracleキャッシュ管理者ユーザーの名前およびパスワードを登録します。

      % ttIsql -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
      Command> call ttCacheUidPwdSet('cacheadmin','orapwd');
      Command> exit
      Disconnecting...
      Done.
  7. ttMigrate -rユーティリティ・コマンドを使用して、保存したバイナリ・ファイルからデータベースをリストアします。

    % ttMigrate -r -relaxedUpgrade -cacheuid cacheadmin -cachepwd orapwd
     -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
     cache1.ttm
    ...
    Restoring table CACHEADMIN.READTAB
      Restoring rows...
      2/2 rows restored.
    Table successfully restored.
     
    Restoring cache group CACHEADMIN.READCACHE
      Restoring cached table SALES.READTAB
      1/1 cached table restored.
    Cache group successfully restored.
  8. リストアされたデータベースに接続し、キャッシュの自動リフレッシュ状態をリセットします。

    1. ttIsqlを使用してTimesTenデータベースに接続します。

    2. キャッシュ・エージェントを起動します。

    3. 自動リフレッシュの状態をONに設定するようキャッシュ・グループを変更します。

      % ttIsql -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
      Command> call ttCacheStart;
      Command> ALTER CACHE GROUP readcache SET AUTOREFRESH STATE ON;

ノート:

リストア済TimesTenデータベースがどのバックエンドOracle Databaseとも接続できない場合、TimesTenは読取り専用キャッシュ・グループのデータを自動リフレッシュできません。