データベースのエクスポートおよびインポート
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 CompletettGridAdmin dbExportStatusの出力で、グリッドのレプリカ・セットごとにデータベース・エクスポートが完了していることを確認してください。要素の状態の値がFailedと表示される場合は、次のタスクを実行します。
-
ttGridAdmin dbStatusdatabase1-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 deletedTimesTen 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_CompletettGridAdmin 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)を参照してください。