データベースのエクスポートおよびインポート
TimesTen Scaleoutのエクスポートおよびインポート機能を使用すると、2つのグリッド・データベース間でデータを移行できます。
次の状況では、データベースのエクスポートが必要になります。
-
ソース・データベースが、別のメジャー・リリースなど、パッチの互換性がないバージョンのTimesTen Scaleoutにあります。両方のタイプのアップグレード(パッチ互換またはそれ以外)の詳細は、グリッドのアップグレードを参照してください。
-
宛先データベースのグリッド・トポロジのレプリカ・セットが、データベースのエクスポート元となるグリッド・トポロジよりも少なくなっています。
データベースをエクスポートすると、TimesTen Scaleoutによって、各レプリカ・セットのエクスポートが非同期的に実行され、エクスポートされる各レプリカ・セットのサブコレクションが作成されます。
各エクスポート操作に必要なファイル・システム領域の詳細は、「バックアップまたはエクスポートのサイズの決定」を参照してください。
TimesTen Scaleoutを使用すると、データベース・エクスポートに関する次の手順を実行できます。
データベースのエクスポート
データベースをエクスポートする前に、グリッドのリポジトリが構成済であることを確認してください。「リポジトリの使用」を参照してください。
データベース・エクスポートの実行前にデータベースへのすべてのアプリケーション接続を切断して、データベース・エクスポート操作中にアプリケーションによってデータが変更されないようにします。また、データベースをクローズして、データベースへの新規接続ができないようにします。エクスポート操作中にトランザクションがコミットされると、データベースの一貫性が失われる可能性があります。
この例では、データベースdatabase1
のデータベース・エクスポートが作成され、リポジトリrepo1
にそのエクスポートが格納されます。デフォルトでは、データベース・エクスポートには、現在の日付と時刻に基づいて、Myyyymmddhhss
という名前が付けられます。管理インスタンスでttGridAdmin dbExport
コマンドを実行してください。
ノート:
-name
パラメータを追加して、データベース・エクスポート名を指定できます。たとえば、ttGridAdmin dbExport database1 -repository repo1 -name myexport
を実行すると、myexport
という名前のデータベース・エクスポートが作成されます。
% ttGridAdmin dbExport database1 -repository repo1
dbExport M20170302144218 started
データベース・エクスポート時間は、データベースのサイズ、データベースが使用しているレプリカ・セットの数、二次記憶域デバイスのパフォーマンスおよびネットワークのパフォーマンスによって異なります。データベース・エクスポートのステータスを確認するには、ttGridAdmin dbExportStatus
コマンドを使用します。「データベース・エクスポートのステータスの確認」を参照してください。
ttGridAdmin dbExport
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のデータベースのエクスポート(dbExport)を参照してください。
データベース・エクスポートのステータスの確認
ttGridAdmin dbExportStatus
コマンドを使用すると、特定のデータベースのすべてのデータベース・エクスポート・プロセスの進行状況を表示できます。
次の例では、データベースdatabase1
のすべてのデータベース・エクスポート・プロセスのステータスが表示されます。
% ttGridAdmin dbExportStatus database1
Database Export Repository Host Instance Elem State Started
--------- --------------- ---------- ----- --------- ---- --------- ------------------------
database1 M20170321073022 repo1 Completed 2017-03-21T07:30:27.000Z
host3 instance1 Complete
host6 instance1 Complete
ttGridAdmin dbExportStatus
の出力で、グリッドのレプリカ・セットごとにデータベース・エクスポートが完了していることを確認してください。要素の状態の値がFailed
と表示される場合は、次のタスクを実行します。
-
ttGridAdmin dbStatus
database1
-details
コマンドを使用して、その要素のホストおよびインスタンスが稼働していることを確認します。『Oracle TimesTen In-Memory Databaseリファレンス』のデータベースのステータスの監視(dbStatus)を参照してください。 -
バックアップを作成しようとしているリポジトリに、データベースのバックアップの作成に十分な空きファイル・システム領域があることを確認してください。
エクスポートの失敗の原因となった問題を解決した後、ttGridAdmin dbExportDelete
を使用して、失敗したデータベース・エクスポートを削除します。TimesTen Scaleoutでは、失敗したデータベース・エクスポートは自動的には削除されません。次に、ttGridAdmin dbExport
コマンドを使用して新しいデータベース・エクスポートを開始します。「データベース・エクスポートの削除」および「データベースのエクスポート」を参照してください。
ttGridAdmin dbExportStatus
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のデータベース・エクスポートのステータスの表示(dbExportStatus)を参照してください。
データベース・エクスポートの削除
TimesTen Scaleoutでは、データベース・エクスポートは自動的には削除されません。失敗したデータベース・エクスポートまたは古いデータベース・エクスポートがあるデータベース・エクスポートを削除するか、ファイル・システム領域を解放できる場合があります。
ttGridAdmin repositoryList -contents
コマンドを使用して、使用可能なデータベース・エクスポートとそれらに対応するリポジトリのすべてを表示します。「リポジトリおよびコレクションのリスト」を参照してください。
次の例では、リポジトリrepo1
からM20170321073022
という名前のデータベース・エクスポートを削除します。
% ttGridAdmin dbExportDelete -repository repo1 -name M20170321073022
Export M20170321073022 deleted
TimesTen Scaleoutでは、データベース・エクスポートに含まれるすべてのサブコレクションが削除されます。
ttGridAdmin dbExportDelete
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のデータベース・エクスポートの削除(dbExportDelete)を参照してください。
データベース・エクスポートのインポート
データベース・エクスポートをインポートする前に、次の点を考慮してください。
-
データベース・インポートを実行する場合は、インポート先のデータベースが存在する必要があります。データベースは、データが格納されていても空でもかまいません。元のデータベースのユーザーまたは表を作成する必要はありません。データベースにデータが含まれている場合は、データベース・インポートを実行する前にデータベース・バックアップを作成します。
-
エクスポートしたデータベースのデータベース名は、データベース・エクスポートをインポートするデータベースのデータベース名と一致している必要はありません。たとえば、
payroll
データベースのデータベース・エクスポートをnew_payroll
データベースにインポートできます。 -
エクスポートしたデータベースのK-safety値は、データベース・エクスポートをインポートするグリッドのK-safety値と一致している必要はありません。
-
データベース・インポートの実行前にデータベースへのすべてのアプリケーション接続を切断して、データベース・インポート操作中にアプリケーションによってデータが変更されないようにします。また、データベースをクローズして、データベースへの新規接続ができないようにします。インポート操作中にトランザクションがコミットされると、データベースの一貫性が失われる可能性があります。『Oracle TimesTen In-Memory Databaseリファレンス』のデータベースのクローズ(dbClose)を参照してください。
次の例では、リポジトリrepo1
のデータベース・エクスポートM20170321073022
からデータベースimport_db
をインポートします。管理インスタンスでttGridAdmin dbImport
コマンドを実行してください。
% ttGridAdmin dbImport import_db -repository repo1 -name M20170321073022 -numThreads 8
dbImport M20170321073022 started
ノート:
リストアを実行する前に、import_db
データベースが存在することを確認してください。「データベース定義の作成」を参照してください。
インポート時間は、データベース・エクスポートのサイズ、データベースが使用しているレプリカ・セットの数、二次記憶域デバイスのパフォーマンスおよびネットワークのパフォーマンスによって異なります。インポート操作のパフォーマンスを向上させるには、-numThreads
オプションを使用して、エクスポート・データベースから行を同時に読み取ってインポート・データベースに挿入するスレッド数を指定します。データベース・エクスポートのステータスを確認するには、ttGridAdmin dbExportStatus
コマンドを使用します。「データベース・インポートのステータスの確認」を参照してください。
ttGridAdmin dbImport
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のデータベースのインポート(dbImport)を参照してください。
データベース・インポートのステータスの確認
ttGridAdmin dbImportStatus
コマンドを使用すると、特定のデータベースのインポート・プロセスの進行状況を表示できます。
次の例では、データベースimport_db
のすべてのインポート・プロセスのステータスが表示されます。
% ttGridAdmin dbImportStatus import_db
Database Import Repository Host Instance Elem State Started
--------- --------------- ---------- ----- --------- ---- ---------------------- -------------
import_db M20170321073022 repo1 Import_Finale_Complete 2017-03-21...
host3 instance1 1 Import_Rows_Complete
host6 instance1 4 Import_Rows_Complete
ttGridAdmin dbImportStatus
の出力で、グリッドの各要素のインポート操作が完了していることを確認してください。そのデータベース名がある行のState
列がImport_Finale_Complete
としてマークされている場合、インポート操作は完全に完了しています。
デフォルトでは、インポート操作でエラーが発生した場合、操作は終了し、Import_Phase_Failed
状態になります。インポートを再試行するには、まず、失敗したインポート操作によって作成されたすべてのSQLオブジェクトを削除するか、データベースを破棄して再作成する必要があります。その後、インポート操作を再試行します。
ただし、エラーが予想されるインポート操作(サポートされていないSQLオブジェクトを含む新しいTimesTenリリースからのデータベース・エクスポートのインポートなど)の場合は、ttGridAdmin dbImport
コマンドの-errorTolerance
オプションを設定すると、すべてのエラーを無視してインポート操作を完了できます。エラーが発生した場合は、操作が完了し、Import_Complete_With_Errors
状態になります。発生したエラーは、データ・インスタンスのデーモン・ログにリストされます。『Oracle TimesTen In-Memory Databaseリファレンス』のデータベースのインポート(dbImport)を参照してください。
ttGridAdmin dbImportStatus
コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のデータベース・インポートのステータスの表示(dbImportStatus)を参照してください。