ヘッダーをスキップ
Oracle® TimesTen In-Memory Databaseインストレーション・ガイド
11gリリース2 (11.2.2)
B66440-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 移行、バックアップおよびリストア

この章では次の項目において、TimesTenデータベースの移行、バックアップおよびリストアについて説明します。

要: データベースのコピー、移行、およびリストア

データベースのコピー、リストアおよび移行用のTimesTenユーティリティでは、様々な移行およびアップグレード・タスクを実行できます。関連ユーティリティには次のものが含まれます。

  • ttBackupユーティリティ: 同じメジャー・リリース・ラインおよび同じプラットフォームでのみ互換性のあるデータベースのイメージ・コピーを作成します。これは一般的なバックアップ・ユーティリティですが、マイナー・アップグレード(たとえば11.2.2.x.xから11.2.2.y.y)のためのバックアップ、またはデータベースのサイズの変更を必要としない移行のためのバックアップにも使用できます。

    このユーティリティは、1つにチェックポイント・ファイルおよびログ・ファイルのコピーを保存し、イメージを作成します。

  • ttRestoreユーティリティ: ttBackupを使用してバックアップしたデータベースをリストアします。

  • ttMigrateユーティリティ: バイナリ・ファイルにデータベースをエクスポートするか、ttMigrateで作成したバイナリ・ファイルからデータベースをインポートします。(Oracle Databaseに精通していると、このユーティリティが実質的にOracle Databaseのエクスポートおよびインポート機能に似ていることがわかります。)このユーティリティは、リリースに中立で、プラットフォームに固有の形式でデータベースをエクスポートします。メジャー・アップグレードに使用できます(たとえば11.2.1.x.xから11.2.2.y.y)。

    プラットフォーム間を移動するには、ttMigrateCS -cクライアント/サーバー・バージョンを使用して、ターゲット・システムで適切な形式を使用できるようにリモート・データベースをターゲット・システム上のファイルにエクスポートします。次にttMigrate -rを使用してファイルのコンテンツをデータベースにリストアします。


    注意:

    ttMigratettMigrateCSバージョンはUNIXでのみ使用できます。Windowsシステムでは、ttMigrateを使用して同等の処理を実行し、定義済TimesTenクライアントDSNを通じてターゲット・システムからソース・システムに接続します。

  • ttBulkCpユーティリティ: ASCIIファイルにデータベース表を書き込むか、ttBulkCpで作成したASCIIファイルからデータベースに表をリストアします。

  • ttSchemaユーティリティ: データベースのスキーマまたは選択したデータベース・オブジェクト(表、ビュー、シーケンスなど)の作成に使用するSQL DDL文を出力します。ttBulkCpと組み合せると、ttBulkCpからデータをリストアする前に、表を作成するSQL文を使用するときに役に立ちます。

  • ttDestroyユーティリティ: データベースを新しい場所に移動する場合、新しいデータベースが正常に機能することを確認した後に、必要に応じてこのユーティリティを使用して古いデータベースを破棄できます。

これらのユーティリティについては、『Oracle TimesTen In-Memory Databaseリファレンス』のユーティリティに関する説明を参照してください。


注意:

または、ttBackupおよびttRestoreに対応するC関数を使用することもできます。『Oracle TimesTen In-Memory Database C開発者ガイド』のTimesTenユーティリティAPIに関する説明を参照してください。

通常のタスクには次の内容が含まれる場合があります。

TimesTenアップグレード

データベースの移行

データベースの変更

その他のタスク

  • データベースのスナップショット作成、および同じ状態でのデータベースのリストア。ttBackupおよびttRestoreを使用します。

  • データベースの選択した表を新しい場所またはプラットフォームへ移動。ターゲットが同じプラットフォームにある場合はttMigrateを使用できます。ターゲットが別のプラットフォームにある場合は、ttMigratettMigrateCSを組み合せて使用します。(ttBulkCpttSchemaを使用して他のプラットフォームに移行することもできますが、一般的にはttMigratettMigrateCSを使用する方が簡単で高速です。)

  • メタデータの変更(たとえば、列名の変更)。ttBulkCpおよびttSchemaを使用します。


注意:

DataStore (他のディレクトリへのデータベースの移動で使用)やPermSize(データベース・サイズの縮小に使用)などの変更を反映するには、接続属性をリセットする必要があります。

接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。


ータベースのバックアップとリストア

TimesTenのバックアップおよびリストア機能を使用すると、TimesTenデータベースのバックアップを作成し、後でデータベースのリストアが可能になります。バックアップおよびリストア機能は、主に、失われた最新の状態のデータベースをリストアするために使用します。TimesTenのバックアップおよびリストア機能の使用方法の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttBackupに関する説明およびttRestoreに関する説明に関する説明を参照してください。


注意:

クライアントのみのインストールではこれらのユーティリティは使用できません。

TimesTenのバックアップ機能

すべてのデータベースのバックアップには、バックアップ・ポイント(バックアップを開始した時点)で存在していたとおりにデータベースをリストアするために必要な情報が含まれています。指定したバックアップからデータベースをリストアすると、バックアップ・ポイント前にコミットしたすべてのトランザクションの変更がリストアされます。

バックアップ操作は自動的に行われ、正常に完了した場合は、データベースをバックアップ・ポイントの状態にリストアするために使用可能なバックアップが作成されます。なんらかの理由で失敗した場合は、既存のバックアップのファイルをそのままにし、バックアップ・ポイントは変更されません。

TimesTenはバックアップ・パス(ディレクトリ名およびオプションのベース名から構成)によって指定された場所にデータベースのバックアップを書き込みます。バックアップの作成時に、バックアップ・ディレクトリおよびベース名を指定する必要があります。ベース名は、指定がない場合は、デフォルトでデータベース自体のベース名となります。


重要:

  • バックアップ・ディレクトリの内容は手動で変更しないでください。バックアップ・ディレクトリ内のいずれかのファイルを追加、削除または変更(ttBackupおよびttRestoreによる変更は除く)すると、バックアップの整合性が損なわれる場合があります。この場合、バックアップからデータベースをリストアできないことがあります。

  • キャッシュ・グループを持つデータベースはttBackupユーティリティでバックアップできますが、このようなバックアップには特別に注意が必要です。キャッシュ・グループ内にリストアされているデータは、古くなっているか、バックエンドOracle Databaseと同期していないことがあります。キャッシュ・グループを含んでいるデータベースをリストアするには、Oracle TimesTen Application-Tier Database Cacheユーザーズ・ガイドのキャッシュ・グループを使用したデータベースのバックアップおよびリストアに関する説明を参照してください。


使用可能なバックアップのタイプ

TimesTenでは全体バックアップと増分バックアップの両方がサポートされます。また、TimesTenでは、ストリーム・バックアップも可能です。

  • ストリーム: ストリーム・バックアップでは、データベースのバックアップ・ファイルがstdoutに書き込まれます。

  • 全体: 全体バックアップでは、データベース全体が保存されます。全体バックアップの場合、新しいバックアップが作成されるまで、既存のバックアップおよび新しいバックアップの両方を保持できる十分なディスク領域が必要です。

  • 増分: 増分バックアップでは、同一のデータベースに既存する増分可能バックアップが増補されます。増分バックアップは、バックアップを最後のバックアップ・ポイント以降に作成されたすべてのトランザクション・ログ・レコードで増補することによって、バックアップ・ポイントを後の時点まで進めます。

    通常、増分バックアップは、全体バックアップよりコピーするデータ量が少ないため、処理が早く完了します。増分バックアップでは、ディスク使用率を増加し、リストアにかかる時間を長くすることによって全体バックアップより高いパフォーマンスが実現されています。増分バックアップは、バックアップにかかる時間、ディスク使用率、リストアにかかる時間のバランスを考慮し、全体バックアップと組み合せて使用してください。

    増分バックアップを実行するには、最初に、ご使用のバックアップでttBackupユーティリティ・コマンドを-fileFullEnableまたは-fileIncrOrFullオプションで実行し、増分バックアップを許可する必要があります。いずれにしても、ご使用のバックアップで事前に増分が有効化されていなかった場合、後続の増分バックアップが有効化される前に、ファイル全体のバックアップが実行されます。TimesTenでは、データベースごとに最大8つの増分可能なバックアップ・インスタンスを作成できます。9つ目の増分バックアップ開始を試行すると、TimesTenはエラーを返します。

    増分バックアップが有効か無効かにかかわらず、バックアップからデータベースをリストアすると、リストアされたデータベースの増分バックアップは無効になります。したがって、増分バックアップを実行する場合、-fileFullEnableまたは-fileIncrOrFullオプションを指定してttBackupユーティリティ・コマンドを再度実行し、増分バックアップを有効にする必要があります。

特定のバックアップ・パスに格納されている、特定のデータベースのバックアップ情報が含まれている一連のファイルは、バックアップ・インスタンスと呼ばれます。バックアップ・インスタンスは、増分バックアップに対して明示的に使用可能にする必要があります。

既存のバックアップ・ファイルは、全体バックアップまたは増分バックアップの失敗によって変更される場合があります。ただし、これによって、これらのファイルからデータ・ストアをリストアできなくなることはありません。

TimesTenでサポートされるバックアップのタイプには次のものがあります。

バックアップ・タイプ ファイルまたはストリーム 全体または増分 増分可能 コメント
fileFull ファイル 全体 いいえ これがデフォルトです。
fileFullEnable ファイル 全体 はい
fileIncremental ファイル 増分 はい 増分バックアップが不可の場合は失敗します。
fileIncrOrFull ファイル どちらか はい 可能な場合はfileIncremental、そうでない場合はfileFullEnableを実行します。
streamFull ストリーム 全体 いいえ
incrementalStop なし なし いいえ バックアップは作成せず、単に既存の増分可能バックアップを無効にします。

データベースの移行

この項では次の項目において、TimesTenデータベースの新しい場所への移行について説明します。

これらの手順は、スタンドアロンのTimesTenデータベースに使用できます。レプリケーションおよびTimesTen Cacheのシナリオは考慮されていません。


注意:

後述の各項の説明にあるとおり、プラットフォーム間またはビット・レベル間でデータベースを移動する場合、ttMigrateCS (ttMigrateのクライアント/サーバー・バージョン)またはWindowsでの同等の処理が必要です。このユーティリティは、保存するデータベースにリモートでアクセスし、ローカル・ターゲット・システムにデータ・ファイルを作成することでターゲット・システムの正しい形式を保証します。Windowsでの同等の処理では、ttMigrateを使用して定義済TimesTenクライアントDSNを通じてターゲット・システムからソース・システムに接続します。

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

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

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

  1. アプリケーションをデータベースから切断します。

  2. ttBackupを使用して、元のシステムのデータベースをバックアップします。例:

    ttBackup -dir /tmp/dump -fname salesdata SalesData
    
  3. バックアップを新しいシステムに移動します。

  4. 新しいシステムのデータベースのDSNを作成します。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のUNIX上でのデータ・マネージャDSNの作成に関する説明またはWindows上でのデータ・マネージャDSNの作成に関する説明を参照してください。

  5. DataStore接続属性が新しいシステム上の場所に正しく設定されていることを確認します。

  6. ttRestoreを使用して新しいシステムでバックアップをリストアします。例:

    ttRestore -dir /tmp/dump -fname salesdata NewSalesData
    
  7. 新しいシステムで要求どおりにデータベースが稼働したら、ttDestroyユーティリティを使用して古いシステムのデータベースを破棄し、古いDSNを削除します。

他のプラットフォームへのデータベースの移行

TimesTenデータベースの内部形式はプラットフォーム間で異なります。この手順を使用して、データベースを1つのプラットフォームから別のプラットフォームに移動し(たとえば、SolarisからLinux、32-bitプラットフォームから64-bitプラットフォームへの移動)、ターゲット・プラットフォーム用に再フォーマットできます。

  1. アプリケーションをデータベースから切断します。

  2. ターゲット・システムからttMigrateCS (またはWindowsの同等の処理)を使用してクライアント/サーバー・モードで移動元のデータベースに接続し、-cオプションを使用してターゲット・システムのデータベース用のデータ/ファイルを作成します。例:

    ttMigrateCS -c salesdata1 salesdata.dat
    
  3. ターゲット・システムで、データベースのDSNを作成します。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のUNIX上でのデータ・マネージャDSNの作成に関する説明またはWindows上でのデータ・マネージャDSNの作成に関する説明を参照してください。

  4. 次の例のように、AutoCreate=1を使用してデータベースを再作成します。

    ttIsql -connstr "dsn=salesdata2;AutoCreate=1" -e "quit"
    

    この時点でデータベースは空です。

  5. DataStore接続属性が新しいシステム上の場所に正しく設定されていることを確認します。

  6. ターゲット・システムで、ttMigrateユーティリティに-rオプションおよび-relaxedUpgradeオプションを指定して、ttMigrateCSで作成したファイルを新しいデータベースにインポートします。例:

    ttMigrate -r -relaxedUpgrade salesdata2 salesdata.dat
    
  7. 新しいシステムで要求どおりにデータベースが稼働したら、ttDestroyユーティリティを使用して古いシステムのデータベースを破棄し、古いDSNを削除します。


注意:

32-bitプラットフォームと64-bitプラットフォーム間の移動では、次の点に注意してください。
  • ビット・レベルを変更する場合、レプリケーション・スキームにデータベースを含めることはできません。

  • TimesTenは、32-bitおよび64-bitのデータベース間でのレプリケーションをサポートしません。


データベースの変更

この項では次の項目において、データベースが同じシステムにある場合のシナリオを説明します。

これらの手順は、スタンドアロンのTimesTenデータベースに使用できます。レプリケーションおよびTimesTen Cacheのシナリオは考慮されていません。


注意:

後述の各項の説明にあるとおり、プラットフォーム間またはビット・レベル間でデータベースを移動する場合、ttMigrateCS (ttMigrateのクライアント/サーバー・バージョン)またはWindowsでの同等の処理が必要です。このユーティリティは、保存するデータベースにリモートでアクセスし、ローカル・ターゲット・システムにデータ・ファイルを作成することでターゲット・システムの正しい形式を保証します。Windowsでの同等の処理では、ttMigrateを使用して定義済TimesTenクライアントDSNを通じてターゲット・システムからソース・システムに接続します。

他のディレクトリへのデータベースの移動

TimesTenデーモンは、データベースのチェックポイント・ファイルのフルパス名を使用してデータベースを識別します。TimesTenデータベースを別のディレクトリに移動するには、ttBackupユーティリティを使用してデータベースをバックアップし、新しいデータベースのパス名を示す新しいDSN定義を作成します。その後で、ttRestoreを使用して、データベースを新しい場所にリストアします。

次の手順の例では、一時記憶域として/tmp/dumpディレクトリを使用し、/old/SalesData/salesのデータベースSalesDataを、NewSalesDataという名前で/new/SalesData/salesに移動します。(この例はUNIXシステム向けです。Windowsシステムで同等の操作を実行します。)

  1. 一時ディレクトリを作成します。例:

    mkdir /tmp/dump
    
  2. アプリケーションをデータベースから切断します。

  3. ttBackupを使用して、データベースを一時ディレクトリにバックアップします。例:

    ttBackup -dir /tmp/dump -fname salesdata SalesData
    
  4. データベースをメモリーからアンロードします。詳細は、「メモリーからのデータベースのアンロード」を参照してください。

  5. 新しい場所のDSN定義を作成し、新しいデータベースのパスを指定します。例: /new/SalesData/sales/NewSalesData

  6. DataStore接続属性が新しい場所に正しく設定されていることを確認します。

  7. 新しい場所でバックアップをリストアします。例:

    ttRestore -dir /tmp/dump -fname salesdata NewSalesData
    
  8. 一時ディレクトリを削除します。例:

    rm -r /tmp/dump
    
  9. データベースが新しい場所で稼働していることを確認したら、必要に応じてttDestroyユーティリティを使用して古い場所のデータベースを破棄し、古いDSNを削除します。

ータベースのサイズの縮小

データベースに特定のサイズの永続領域(PermSize DSN属性で示される)を定義した場合は、表または行を削除しても、それより小さいサイズでロードすることはできません。ttBackupで作成したデータベースのコピーにも、埋め込まれたデータベースの永続領域のサイズが適用されます。

データベースの永続領域の割当てサイズを減らすには、ttMigrateユーティリティを使用してコピーを保存し、小さい永続領域サイズでデータベースを再作成し、データをリストアします。

データベースの永続領域のサイズを小さくするには、次の手順を実行します。

  1. アプリケーションをデータベースから切断します。

  2. ttMigrate -cオプションを使用してデータベースのデータ・ファイルを作成します。例:

    ttMigrate -c salesdata /tmp/salesbackup
    
  3. データベースをメモリーからアンロードします。詳細は、「メモリーからのデータベースのアンロード」を参照してください。

  4. 新しいDSNを作成するのではなく、元のDSNを変更する場合は、ttDestroyユーティリティを使用して元のデータベース・ファイルを破棄してから、バックアップをリストアする必要があります。

  5. より小さいPermSize値を指定するデータベースの新しいコピー用に、新しいDSN定義を作成します。

  6. 次の例のように、AutoCreate=1を使用してデータベースを再作成します。

    ttIsql -connstr "dsn=salesdata;AutoCreate=1" -e "quit"
    

    この時点でデータベースは空です。

  7. ttMigrate -rおよび-relaxedUpgradeオプションを使用して、バックアップをリストアします。例:

    ttMigrate -r -relaxedUpgrade salesdata /tmp/salesbackup
    

注意:

  • データベースの永続領域のサイズは、現在、データベースに格納されているデータで必要なサイズより小さくすることはできません。この値は、システム表sys.monitorperm_in_use_size列を問い合せることによって判断できます。

  • また、この手順を使用して、部分的な全表ページ、または索引ノードと範囲外の値を保管するヒープ・バッファに起因する断片化を減らすためにデータベースを圧縮することもできます。


移行時のグローバリゼーション・サポート

ttMigrateユーティリティを使用すると、1つ以上の移行オブジェクトをTimesTenデータベースからバイナリ・データ・ファイルに保存したり、それらのオブジェクトをバイナリ・データ・ファイルからTimesTenデータベースにリストアすることができます。移行オブジェクトには、表、キャッシュ・グループ定義、ビュー、順序などがあります。

次の項目では、移行時にグローバリゼーションの問題を伴って発生する事項を説明します。

『Oracle TimesTen In-Memory Databaseリファレンス』ttMigrateに関する説明を参照してください。

ブジェクトの移行とキャラクタ・セット

ttMigrateユーティリティによって、オブジェクトのキャラクタ・セットで保存する各オブジェクトにタグが付けられます。デフォルトでは、ttMigrateによって、オブジェクトのデータがデータベース・キャラクタ・セットで格納されますが、-saveAsCharsetオプションを使用して異なるキャラクタ・セットを選択することもできます。このオプションは、作成モード(-c)または追加モード(-a)で指定できます。

ttMigrateを使用してオブジェクトをリストアすると、そのデータは必要に応じて暗黙的にターゲット・データベースのデータベース・キャラクタ・セットに変換されます。受信したデータの一部をターゲット・データベースのデータベース・キャラクタ・セットで表現できない場合は、キャラクタ・セット変換の結果、データが失われる可能性があります。


注意:

  • オブジェクトを保存するときに-saveAsCharsetオプションを使用する場合は、ttMigrate -r -exactUpgradeを使用してオブジェクトをリストアできません。

  • データの保存中またはリストア中に暗黙的または明示的なキャラクタ・セット変換が発生した場合は、常に、ttMigrateユーティリティによって警告が発行されます。

  • データベースの移行時にキャラクタ・セット変換がリクエストされた場合は、キャラクタ・セット変換がリクエストされない場合よりパフォーマンスが低下します。


データがターゲット・データベースのデータベース・キャラクタ・セットでエンコードされているとわかっている場合は、-noCharsetConversionオプションをリストア時(-r)に使用できます。このオプションを使用すると、ttMigrateによって、データがターゲット・データベースと同じデータベース・キャラクタ・セットを使用しているとみなされます。

リリース7.0より前に作成されたタグ付けされていない文字データをリリース7.0以上のデータベースにリストアする場合、そのデータは、ttMigrateによってターゲット・データベースのデータベース・キャラクタ・セットと同様に処理されます。リリース7.0以下のすべてのTimesTenデータベースで、TIMESTEN8キャラクタ・セットが使用されています。

TIMESTEN8を使用するTimesTenデータベースから、別のキャラクタ・セットを使用するTimesTenデータベースへ移行中の場合、次の状況が発生する可能性があります。

  • 問合せ結果は、新しいキャラクタ・セットの新しいTimesTenデータベースでは異なる場合があります。ユーザー・アプリケーションはマルチバイト・キャラクタ・セットにて動作する可能性があり、TIMESTEN8キャラクタ・セットを使用して、文字列をそのまま格納する可能性があります。部分文字列と一致するLIKE述語(または任意のスカラー関数)を使用してデータを問い合せる際に、問合せエンジンがTIMESTEN8キャラクタ・セットでの文字境界で開始または終了しないバイナリ・パターンと一致する可能性があります(これがシングルバイト・キャラクタ・セットであるため)。各バイトは、実際にはマルチバイト・キャラクタの中に存在する場合でも、1文字として扱われます。

    ユーザーが長い文字列を分割して別の行に格納する場合は、別の問題が生じる可能性があります。複数行からの値を連結することによって、文字列が後で再構成される可能性があります。これは、TIMESTEN8キャラクタ・セットと連動する場合があります。ただしマルチバイト・キャラクタ・セットを使用する際に、パーティションが文字境界上にない場合は、文字列値を変更できます。この場合、文字列が文字境界で分割されていることを確認してください。

  • TIMESTEN8以外のキャラクタ・セットのデータベースにおける、文字列上での述語またはスカラー関数を使用する問合せで、パフォーマンスが低下する場合があります。

移行と長さセマンティクス

ttMigrateユーティリティを使用すると、CHARおよびVARCHAR2列の長さのセマンティクス情報が保存されます。これによって、TimesTenリリース7.0以上で作成されたデータベースにオブジェクトをリストアする際に、長さのセマンティクス情報がリストアされます。

リリース7.0より前のTimesTenにオブジェクトをリストアすると、キャラクタ・セマンティクスを持つ列はバイト・セマンティクスに変換され、列長は元の列のバイト長と同じになるように調整されます。

7.0より前のオブジェクトをリリース7.0以上に移行する場合は、バイト・セマンティクスが使用されます。

言語索引の移行

ttMigrateユーティリティでは、言語索引をサポートするTimesTenリリースへの言語索引の移行がサポートされています。リリース7.0より前のTimesTenに移行する場合は、ttMigrateによって、言語索引をリストアできないことを示す警告が発行されます。言語索引なしでも、表の移行は実行されます。

キャッシュ・グループ表の移行

NCHAR/NVARCHAR2列を含むキャッシュ・グループ表は、7.0より前のリリースにはリストアできません。7.0より前のリリースでは、キャッシュ・グループ表にこれらのデータ型は使用できません。