データベースのバックアップおよびリストア
TimesTen Classicでデータベースをバックアップおよびリストアする機能は、データを保護するために不可欠です。潜在的なデータ損失のリスクを最小化するために、定期的なバックアップを実行することをお薦めします。
バックアップおよびリストアの手順を実行するには、ttBackupおよびttRestoreユーティリティを使用します。詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttBackupおよびttRestoreを参照してください。これらのユーティリティを実行できるのは、次の場合にデータベースのバックアップおよびリストアを行うときのみです。
-
ユーティリティのバージョンの最初の2桁が、データベースのバージョンの最初の2桁と一致する
-
ユーティリティのプラットフォームがデータベースのプラットフォームと一致する
リリース番号の形式の詳細は、リリース番号の概要を参照してください。
ノート:
クライアントのみの環境ではこれらのユーティリティは使用できません。
この項に関連する情報は次のとおりです。
バックアップ機能
すべてのデータベースのバックアップには、バックアップ・ポイント(バックアップを開始した時点)で存在していたとおりにデータベースをリストアするために必要な情報が含まれています。指定したバックアップからデータベースをリストアすると、バックアップ・ポイント前にコミットしたすべてのトランザクションの変更がリストアされます。
バックアップ操作はアトミックです。正常に完了した場合は、データベースをバックアップ・ポイントの状態にリストアするために使用可能なバックアップが作成されます。詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttBackupを参照してください。
ノート:
-
バックアップ・ディレクトリの内容は手動で変更しないでください。バックアップ・ディレクトリ内のいずれかのファイルを追加、削除または変更(
ttBackup
およびttRestore
による変更は除く)すると、バックアップの整合性が損なわれる場合があります。この場合、バックアップからデータベースをリストアできないことがあります。 -
キャッシュ・グループを含んでいるデータベースは、
ttBackup
ユーティリティを使用してバックアップすることができます。ただし、このようなバックアップをリストアするときは、特別な考慮が必要になります。キャッシュ・グループ内にリストアされているデータは、古くなっているか、バックエンドOracle Databaseと同期していないことがあります。キャッシュ・グループを含むデータベースをリストアするには、Oracle TimesTen In-Memory Databaseキャッシュ・ガイドのキャッシュ・グループを含むTimesTen Classicデータベースのバックアップおよびリストアを参照してください。
バックアップのタイプ
TimesTen Classicでは次のタイプのバックアップがサポートされます。
-
完全: 完全バックアップには、最新の一貫性のあるチェックポイント・ファイルおよび既存のすべてのトランザクション・ログ・ファイルが含まれています。このバックアップではデータベース全体が保存されます。完全バックアップの場合は、既存のバックアップと新しいバックアップの両方を保持するための十分なディスク領域があることを確認します。完全バックアップはストリーム・バックアップにすることができます。ストリーム・バックアップでは、データベースのバックアップ・ファイルが
stdout
に書き込まれます。 -
増分: 増分バックアップは、最新の増分バックアップまたは増分を有効にした完全なファイル・バックアップから作成されたすべてのトランザクション・ログ・レコードでバックアップを増加させることによって、既存のバックアップのバックアップ・ポイントを時間的に先に進めます。増分バックアップは、バックアップを最後のバックアップ・ポイント以降に作成されたすべてのトランザクション・ログ・レコードで増補することによって、バックアップ・ポイントを後の時点まで進めます。
通常、増分バックアップは、全体バックアップよりコピーするデータ量が少ないため、処理が早く完了します。増分バックアップでは、ディスク使用率を増加し、リストアにかかる時間を長くすることによって全体バックアップより高いパフォーマンスが実現されています。増分バックアップは、バックアップにかかる時間、ディスク使用率、リストアにかかる時間のバランスを考慮し、全体バックアップと組み合せて使用してください。増分バックアップではトランザクション・ログが保持されるため、増分バックアップを定期的に実行する必要があります。
増分バックアップを実行するには、ご使用のバックアップで
ttBackup
ユーティリティを-fileFullEnable
または-fileIncrOrFull
オプションで実行し、増分バックアップを許可する必要があります。いずれにしても、ご使用のバックアップで事前に増分が有効化されていなかった場合、後続の増分バックアップが有効化される前に、ファイル全体のバックアップが実行されます。TimesTen Classicでは、データベースごとに最大8つの増分可能なバックアップ・インスタンスを作成できます。9つ目の増分バックアップ開始を試行すると、TimesTen Classicはエラーを返します。増分バックアップが有効か無効かにかかわらず、バックアップからデータベースをリストアすると、リストアされたデータベースの増分バックアップは無効になります。増分バックアップを有効にするには、
-fileFullEnable
または-fileIncrOrFull
を指定してttBackup
ユーティリティを再度実行する必要があります。
特定のバックアップ・パスに格納されている、特定のデータベースのバックアップ情報が含まれている一連のファイルは、バックアップ・インスタンスと呼ばれます。バックアップ・インスタンスは、増分バックアップに対して明示的に使用可能にする必要があります。
この表に、TimesTen Classicでサポートされているバックアップ・タイプのリストを示します。詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttBackupを参照してください:
バックアップ・タイプ | ファイルまたはストリーム | 全体または増分 | 増分可能 | コメント |
---|---|---|---|---|
|
ファイル |
全体 |
いいえ |
デフォルト |
|
ファイル |
全体 |
はい |
完全バックアップ、および増分バックアップが有効にされたことによるバックアップ |
|
ファイル |
増分 |
はい |
増分バックアップが不可の場合は失敗します |
|
ファイル |
どちらでも |
はい |
可能な場合は |
|
ストリーム |
全体 |
いいえ |
ストリーム・バックアップ |
|
なし |
なし |
いいえ |
バックアップを実行せず、増分バックアップを無効にします。トランザクション・ログ・ファイルが蓄積されません。 |
データベースのリストア
ttRestore
ユーティリティを実行し、ttBackup
ユーティリティを使用して以前に作成したデータベース・バックアップをリストアします。このユーティリティの詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttRestoreを参照してください。
ノート:
または、ttBackup
およびttRestore
に対応するC関数を使用することもできます。詳細は、Oracle TimesTen In-Memory Database C開発者ガイドのTimesTenユーティリティAPIを参照してください。
バックアップおよびリストアの例
データベースは同じホスト上の別のディレクトリにバックアップおよびリストアできます。同じプラットフォーム・タイプの別のホストのデータベースをバックアップおよびリストアすることもできます。
例:
単純なバックアップおよびリストアの実行
この例では、database1
データベースを/scratch/backup
ディレクトリにバックアップします。次に、ttDestroy
を実行してデータベースを削除します。(既存のデータベースを上書きしようとすると、ttRestore
がエラーを返します。)最後に、ttRestore
を実行してdatabase1
データベースをリストアします。
% ttBackup -dir /scratch/backup database1 Backup started ... Backup complete % ttDestroy database1 % ttRestore -dir /scratch/backup database1 Restore started ... Restore complete
他のディレクトリへのデータベースの移動
TimesTenデーモンは、データベースのチェックポイント・ファイルのフルパス名を使用してデータベースを識別します。データベースを別のディレクトリに移動するには、ttBackup
ユーティリティを使用してデータベースをバックアップし、新しいデータベースのパス名を示す新しいDSN定義を作成します。その後で、ttRestore
を使用して、データベースを新しい場所にリストアします。
この例では、/scratch/tmp
ディレクトリを一時記憶域に使用し、データベース名がdatabase1
の/scratch/old/database1
をデータベース名がdatabase1_new
の/scratch/new/database1
に移動します。