ttBackupおよびttRestoreユーティリティを使用したバックアップおよびリストア

ttBackupユーティリティを使用すると、特定の時間のデータをすべて含むTimesTenデータベースがバックアップされます。

そのため、これらのキャッシュ・グループを再度使用する場合、このバックアップのリストアでは、キャッシュ・グループ内のリストア済データは古く、バックエンドOracle Databaseのデータと同期しないために、追加のアクションが必要です。『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』「TimesTen Classicでのデータのバックアップ、リストアおよび移行」を参照してください。

ノート:

『Oracle TimesTen In-Memory Databaseリファレンス』「ttBackup」および「ttRestore」を参照してください。

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

  1. ttBackupユーティリティ・コマンドを実行して、データベースおよびそのオブジェクトをバイナリ・ファイルにバックアップします。たとえば、一時記憶域として/tmp/dumpディレクトリを使用してcache1データベースをバックアップするには、次のように指定します。

    % ttBackup -dir /tmp/dump -connstr "DSN=cache1"
  2. キャッシュ・エージェントを停止します。

    % ttIsql -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
    Command> call ttCacheStop;
  3. (オプション) TimesTenデータベースからすべてのキャッシュ・グループを削除します。データベースはキャッシュ・グループにまだ存在するため、TimesTenではキャッシュ・グループを削除することをお薦めします。

    Command> DROP CACHE GROUP readcache;
    Command> exit;
    Disconnecting...
    Done.
  4. 同じ場所または別の場所にリストアする前にデータベースを破棄します。

    % ttDestroy cache1
  5. Oracle Databaseのオブジェクトをクリーンアップします。自動リフレッシュ処理の実装に使用されるOracle Databaseオブジェクトを削除するには、Oracleキャッシュ管理ユーザーとして現在のデータベース・インストールからSQL*Plusスクリプトtimesten_home/install/oraclescripts/cacheCleanUp.sqlを実行します。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_07_agent_status where host = sys1 and datastore =
    /users/OracleCache/cache1 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 =
    /users/OracleCache/cache1 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
    **************************************************************************
  6. ttRestoreユーティリティを使用してデータベースをリストアした後に、一時ディレクトリを削除します。

    % ttRestore -dir /tmp/dump -connstr "DSN=cache1"
    Restore started ...
    Restore complete
    
    % rm -r /tmp/dump
  7. キャッシュ・グループ内でデータを再同期化するために、次の手順でキャッシュ・グループを削除して再作成する必要があります。

    1. キャッシュ管理ユーザー資格証明を指定してTimesTenデータベースに接続します。

    2. ttRestoreユーティリティを使用してリストアされたキャッシュ・グループを削除します。データが同期していないため、エラーが表示される場合があります。

    3. ttCacheUidPwdSet組込みプロシージャを使用してOracleキャッシュ管理ユーザーの名前およびパスワードを登録します。

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

    5. キャッシュ・グループを再作成し、必要があれば再ロードします。

    % ttIsql -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
    
    Command> DROP CACHE GROUP readcache;
    Command> call ttCacheUidPwdSet('cacheadmin','orapwd');
    Command> call ttCacheStart;
    Command> CREATE READONLY CACHE GROUP readcache
            AUTOREFRESH INTERVAL 5 SECONDS
            FROM sales.readtab
            (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));
    Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
    2 cache instances affected.

ノート:

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