ttBackupおよびttRestoreユーティリティを使用したバックアップおよびリストア
ttBackup
ユーティリティを使用すると、特定の時間のデータをすべて含むTimesTenデータベースがバックアップされます。
そのため、これらのキャッシュ・グループを再度使用する場合、このバックアップのリストアでは、キャッシュ・グループ内のリストア済データは古く、バックエンドOracle Databaseのデータと同期しないために、追加のアクションが必要です。『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』の「TimesTen Classicでのデータのバックアップ、リストアおよび移行」を参照してください。
ノート:
『Oracle TimesTen In-Memory Databaseリファレンス』の「ttBackup」および「ttRestore」を参照してください。
リストア済データベースが元々接続していたデータベースとは別のバックエンドOracle Databaseに接続する場合で、データベースのバックアップおよびリストアにttBackup
ユーティリティおよびttRestore
ユーティリティを使用する場合は、次の手順を実行します。
-
ttBackup
ユーティリティ・コマンドを実行して、データベースおよびそのオブジェクトをバイナリ・ファイルにバックアップします。たとえば、一時記憶域として/tmp/dump
ディレクトリを使用してcache1
データベースをバックアップするには、次のように指定します。% ttBackup -dir /tmp/dump -connstr "DSN=cache1"
-
キャッシュ・エージェントを停止します。
% ttIsql -connstr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet" Command> call ttCacheStop;
-
(オプション) TimesTenデータベースからすべてのキャッシュ・グループを削除します。データベースはキャッシュ・グループにまだ存在するため、TimesTenではキャッシュ・グループを削除することをお薦めします。
Command> DROP CACHE GROUP readcache; Command> exit; Disconnecting... Done.
-
同じ場所または別の場所にリストアする前にデータベースを破棄します。
% ttDestroy cache1
-
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 **************************************************************************
-
ttRestore
ユーティリティを使用してデータベースをリストアした後に、一時ディレクトリを削除します。% ttRestore -dir /tmp/dump -connstr "DSN=cache1" Restore started ... Restore complete % rm -r /tmp/dump
-
キャッシュ・グループ内でデータを再同期化するために、次の手順でキャッシュ・グループを削除して再作成する必要があります。
-
キャッシュ管理ユーザー資格証明を指定してTimesTenデータベースに接続します。
-
ttRestore
ユーティリティを使用してリストアされたキャッシュ・グループを削除します。データが同期していないため、エラーが表示される場合があります。 -
ttCacheUidPwdSet
組込みプロシージャを使用してOracleキャッシュ管理ユーザーの名前およびパスワードを登録します。 -
キャッシュ・エージェントを起動します。
-
キャッシュ・グループを再作成し、必要があれば再ロードします。
% 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は読取り専用キャッシュ・グループのデータを自動リフレッシュできません。