この章では次の項目において、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より前のリリースでは、キャッシュ・グループ表にこれらのデータ型は使用できません。