この章では次の項目において、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を使用してファイルのコンテンツをデータベースにリストアします。
|
注意: ttMigrateのttMigrateCSバージョンは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アップグレード
TimesTenマイナー・アップグレードまたはパッチ・アップグレード: データベースのサイズまたは構造を変えずに同じメジャー・リリース・ラインのTimesTenリリースに移行します。ttBackupおよびttRestoreを使用してオフライン・アップグレードを実行できます。「TimesTenの別のマイナー・リリースまたはパッチ・リリースへの移行(オフライン・アップグレード)」を参照してください。
また、より一般的な方法として、TimesTenインストールのインプレース・アップグレードも実行できます。「インプレース・アップグレード」を参照してください。
TimesTenメジャー・アップグレード: TimesTenの新しいメジャー・リリースへ移行します。
古いリリースでttMigrate -cを使用してデータをエクスポートし、新しいリリースでttMigrate -rを使用してデータをインポートすることでオフライン・アップグレードを実行できます。「TimesTenの他のメジャー・リリースへの移行」を参照してください。
状況に適切な場合は、ttMigrateを使用してレプリケーションによるオンライン・アップグレードを実行できます。「レプリケーションを使用したオンライン・アップグレード」を参照してください。
データベースの移行
TimesTenの同じメジャー・リリース・ラインを使用する同じプラットフォームの他のシステムへの移行。ttBackupおよびttRestoreを使用します。「他のコンピュータ(同じプラットフォーム)へのデータベースの移行」を参照してください。
他のハードウェア・プラットフォームまたはソフトウェア・プラットフォームへの移行、または32-bitシステムから64-bitシステムへの移行。ttMigrateCSおよびttMigrateを使用します。「他のプラットフォームへのデータベースの移行」を参照してください。
データベースの変更
同じシステムの他のディレクトリへの移動。ttBackupおよびttRestoreを使用します。「他のディレクトリへのデータベースの移動」を参照してください。
データベースのサイズの縮小。ttMigrateを使用します。「データベースのサイズの縮小」を参照してください。
|
注意: この手順は、データベースを縮小して断片化を減らすためにも使用できます。 |
その他のタスク
データベースのスナップショット作成、および同じ状態でのデータベースのリストア。ttBackupおよびttRestoreを使用します。
データベースの選択した表を新しい場所またはプラットフォームへ移動。ターゲットが同じプラットフォームにある場合はttMigrateを使用できます。ターゲットが別のプラットフォームにある場合は、ttMigrateにttMigrateCSを組み合せて使用します。(ttBulkCpとttSchemaを使用して他のプラットフォームに移行することもできますが、一般的にはttMigrateとttMigrateCSを使用する方が簡単で高速です。)
メタデータの変更(たとえば、列名の変更)。ttBulkCpおよびttSchemaを使用します。
|
注意: DataStore (他のディレクトリへのデータベースの移動で使用)やPermSize(データベース・サイズの縮小に使用)などの変更を反映するには、接続属性をリセットする必要があります。
接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
TimesTenのバックアップおよびリストア機能を使用すると、TimesTenデータベースのバックアップを作成し、後でデータベースのリストアが可能になります。バックアップおよびリストア機能は、主に、失われた最新の状態のデータベースをリストアするために使用します。TimesTenのバックアップおよびリストア機能の使用方法の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttBackupに関する説明およびttRestoreに関する説明に関する説明を参照してください。
|
注意: クライアントのみのインストールではこれらのユーティリティは使用できません。 |
すべてのデータベースのバックアップには、バックアップ・ポイント(バックアップを開始した時点)で存在していたとおりにデータベースをリストアするために必要な情報が含まれています。指定したバックアップからデータベースをリストアすると、バックアップ・ポイント前にコミットしたすべてのトランザクションの変更がリストアされます。
バックアップ操作は自動的に行われ、正常に完了した場合は、データベースをバックアップ・ポイントの状態にリストアするために使用可能なバックアップが作成されます。なんらかの理由で失敗した場合は、既存のバックアップのファイルをそのままにし、バックアップ・ポイントは変更されません。
TimesTenはバックアップ・パス(ディレクトリ名およびオプションのベース名から構成)によって指定された場所にデータベースのバックアップを書き込みます。バックアップの作成時に、バックアップ・ディレクトリおよびベース名を指定する必要があります。ベース名は、指定がない場合は、デフォルトでデータベース自体のベース名となります。
|
重要:
|
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アーキテクチャとオペレーティング・システムが同じシステム間でデータベースをコピーするには、次の手順を実行します。
アプリケーションをデータベースから切断します。
ttBackupを使用して、元のシステムのデータベースをバックアップします。例:
ttBackup -dir /tmp/dump -fname salesdata SalesData
バックアップを新しいシステムに移動します。
新しいシステムのデータベースのDSNを作成します。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のUNIX上でのデータ・マネージャDSNの作成に関する説明またはWindows上でのデータ・マネージャDSNの作成に関する説明を参照してください。
DataStore接続属性が新しいシステム上の場所に正しく設定されていることを確認します。
ttRestoreを使用して新しいシステムでバックアップをリストアします。例:
ttRestore -dir /tmp/dump -fname salesdata NewSalesData
新しいシステムで要求どおりにデータベースが稼働したら、ttDestroyユーティリティを使用して古いシステムのデータベースを破棄し、古いDSNを削除します。
TimesTenデータベースの内部形式はプラットフォーム間で異なります。この手順を使用して、データベースを1つのプラットフォームから別のプラットフォームに移動し(たとえば、SolarisからLinux、32-bitプラットフォームから64-bitプラットフォームへの移動)、ターゲット・プラットフォーム用に再フォーマットできます。
アプリケーションをデータベースから切断します。
ターゲット・システムからttMigrateCS (またはWindowsの同等の処理)を使用してクライアント/サーバー・モードで移動元のデータベースに接続し、-cオプションを使用してターゲット・システムのデータベース用のデータ/ファイルを作成します。例:
ttMigrateCS -c salesdata1 salesdata.dat
ターゲット・システムで、データベースのDSNを作成します。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のUNIX上でのデータ・マネージャDSNの作成に関する説明またはWindows上でのデータ・マネージャDSNの作成に関する説明を参照してください。
次の例のように、AutoCreate=1を使用してデータベースを再作成します。
ttIsql -connstr "dsn=salesdata2;AutoCreate=1" -e "quit"
この時点でデータベースは空です。
DataStore接続属性が新しいシステム上の場所に正しく設定されていることを確認します。
ターゲット・システムで、ttMigrateユーティリティに-rオプションおよび-relaxedUpgradeオプションを指定して、ttMigrateCSで作成したファイルを新しいデータベースにインポートします。例:
ttMigrate -r -relaxedUpgrade salesdata2 salesdata.dat
新しいシステムで要求どおりにデータベースが稼働したら、ttDestroyユーティリティを使用して古いシステムのデータベースを破棄し、古いDSNを削除します。
|
注意: 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システムで同等の操作を実行します。)
一時ディレクトリを作成します。例:
mkdir /tmp/dump
アプリケーションをデータベースから切断します。
ttBackupを使用して、データベースを一時ディレクトリにバックアップします。例:
ttBackup -dir /tmp/dump -fname salesdata SalesData
データベースをメモリーからアンロードします。詳細は、「メモリーからのデータベースのアンロード」を参照してください。
新しい場所のDSN定義を作成し、新しいデータベースのパスを指定します。例: /new/SalesData/sales/NewSalesData
DataStore接続属性が新しい場所に正しく設定されていることを確認します。
新しい場所でバックアップをリストアします。例:
ttRestore -dir /tmp/dump -fname salesdata NewSalesData
一時ディレクトリを削除します。例:
rm -r /tmp/dump
データベースが新しい場所で稼働していることを確認したら、必要に応じてttDestroyユーティリティを使用して古い場所のデータベースを破棄し、古いDSNを削除します。
データベースに特定のサイズの永続領域(PermSize DSN属性で示される)を定義した場合は、表または行を削除しても、それより小さいサイズでロードすることはできません。ttBackupで作成したデータベースのコピーにも、埋め込まれたデータベースの永続領域のサイズが適用されます。
データベースの永続領域の割当てサイズを減らすには、ttMigrateユーティリティを使用してコピーを保存し、小さい永続領域サイズでデータベースを再作成し、データをリストアします。
データベースの永続領域のサイズを小さくするには、次の手順を実行します。
アプリケーションをデータベースから切断します。
ttMigrate -cオプションを使用してデータベースのデータ・ファイルを作成します。例:
ttMigrate -c salesdata /tmp/salesbackup
データベースをメモリーからアンロードします。詳細は、「メモリーからのデータベースのアンロード」を参照してください。
新しいDSNを作成するのではなく、元のDSNを変更する場合は、ttDestroyユーティリティを使用して元のデータベース・ファイルを破棄してから、バックアップをリストアする必要があります。
より小さいPermSize値を指定するデータベースの新しいコピー用に、新しいDSN定義を作成します。
次の例のように、AutoCreate=1を使用してデータベースを再作成します。
ttIsql -connstr "dsn=salesdata;AutoCreate=1" -e "quit"
この時点でデータベースは空です。
ttMigrate -rおよび-relaxedUpgradeオプションを使用して、バックアップをリストアします。例:
ttMigrate -r -relaxedUpgrade salesdata /tmp/salesbackup
|
注意:
|
ttMigrateユーティリティを使用すると、1つ以上の移行オブジェクトをTimesTenデータベースからバイナリ・データ・ファイルに保存したり、それらのオブジェクトをバイナリ・データ・ファイルからTimesTenデータベースにリストアすることができます。移行オブジェクトには、表、キャッシュ・グループ定義、ビュー、順序などがあります。
次の項目では、移行時にグローバリゼーションの問題を伴って発生する事項を説明します。
『Oracle TimesTen In-Memory Databaseリファレンス』のttMigrateに関する説明を参照してください。
ttMigrateユーティリティによって、オブジェクトのキャラクタ・セットで保存する各オブジェクトにタグが付けられます。デフォルトでは、ttMigrateによって、オブジェクトのデータがデータベース・キャラクタ・セットで格納されますが、-saveAsCharsetオプションを使用して異なるキャラクタ・セットを選択することもできます。このオプションは、作成モード(-c)または追加モード(-a)で指定できます。
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より前のリリースでは、キャッシュ・グループ表にこれらのデータ型は使用できません。