データベースのバックアップおよびリストア

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を参照してください:

バックアップ・タイプ ファイルまたはストリーム 全体または増分 増分可能 コメント

fileFull

ファイル

全体

いいえ

デフォルト

fileFullEnable

ファイル

全体

はい

完全バックアップ、および増分バックアップが有効にされたことによるバックアップ

fileIncremental

ファイル

増分

はい

増分バックアップが不可の場合は失敗します

fileIncrOrFull

ファイル

どちらでも

はい

可能な場合はfileIncremental、そうでない場合はfileFullEnableを実行します

streamFull

ストリーム

全体

いいえ

ストリーム・バックアップ

incrementalStop

なし

なし

いいえ

バックアップを実行せず、増分バックアップを無効にします。トランザクション・ログ・ファイルが蓄積されません。

データベースのリストア

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 に移動します。

  1. 一時ディレクトリを作成します。
    % mkdir /scratch/tmp
    
  2. アプリケーションをデータベースから切断します。
  3. データベースを一時ディレクトリにバックアップします
    % ttBackup -dir /scratch/tmp -fname database1 database1
    Backup started ...
    Backup complete
    
  4. データベースをメモリーからアンロードします。詳細は、データベースをメモリーからアンロードしますを参照してください。
  5. 新しいDSNをdatabase1_newという名前で作成し、DataStore属性にデータベースのフルパス名およびファイル名の接頭辞を設定します。
    [database1_new]
    DataStore=/scratch/new/database1/database1_new
    
  6. 新しい場所でバックアップをリストアします。
    % ttRestore -dir /scratch/tmp -fname database1 database1_new
    Restore started ...
    Restore complete
    
  7. 一時ディレクトリを削除します。
    rm -r /scratch/tmp
    
  8. データベースが新しい場所で稼働していることを確認したら、必要に応じてttDestroyユーティリティを実行して古い場所のデータベースを破棄し、古いDSNを削除します。

他のホスト(同じプラットフォーム)へのデータベースの移行

ttBackupおよびttRestoreユーティリティを使用して、TimesTen Classicの同じメジャー・リリース、同じCPUアーキテクチャ、同じオペレーティング・システムを持つ2つのホスト間でデータベースを移動できます。

CPUアーキテクチャとオペレーティング・システムが同じホスト間でデータベースをコピーするには、次の手順を実行します。

  1. アプリケーションをデータベースから切断します。
  2. ttBackupを使用して、元のホストのデータベースをバックアップします。
    %ttBackup -dir /scratch/tmp -fname database1 database1
    Backup started ...
    Backup complete
    
  3. バックアップを新しいホストに移動します。
  4. 新しいシステムのデータベースのDSNを作成します。詳細は、Oracle TimesTen In-Memory Databaseオペレーション・ガイドTimesTen Classic用のLinuxおよびUNIXでのDSNの作成を参照してください。
  5. ttRestoreを使用して新しいシステムでバックアップをリストアします。
    % ttRestore -dir /scratch/tmp -fname database1 database1_new
    Restore started ...
    Restore complete
    
  6. 新しいホストでデータベースが稼働したら、ttDestroyユーティリティを使用して古いホスト上のデータベースを破棄し、古いDSNを削除できます。