DBMS_CLOUD_IMPORTを使用したデータの移行
DBMS_CLOUD_IMPORTを使用すると、シンプルで一貫性のあるアプローチを使用して、OracleデータベースおよびOracle以外のデータベースからOracle Autonomous AI Databaseにデータをインポートできます。
- DBMS_CLOUD_IMPORTを使用したデータの移行
複数のデータベース・システムで作業する場合、テクノロジ、フォーマットおよびツールの違いにより、データの移動が複雑になることがあります。DBMS_CLOUD_IMPORTは、プラットフォーム間でデータをインポートするための統一されたアプローチを提供し、複数のツールやワークフローを管理する必要をなくすことで、このプロセスを簡素化します。 - 前提条件
Autonomous AIデータベースへのインポートを実行するための前提条件をリストします。 - DBMS_CLOUD_IMPORTを使用したデータのインポート
DBMS_CLOUD_IMPORTを使用してAutonomous AIデータベースにデータをインポートする方法について説明します。 - 異機種間インポートのモニターおよび診断
問題を診断し、データ・インポート操作の進行状況をモニターするには、次のデータ・ディクショナリ・ビューを問い合せます。これらのビューは、タスク・ステータス、実行の進行状況、パラレル操作および関連オブジェクトに関する詳細情報を提供します。
親トピック: Autonomous AI Databaseへの移行
DBMS_CLOUD_IMPORTを使用したデータの移行
複数のデータベース・システムで作業する場合、テクノロジ、フォーマットおよびツールの違いにより、データの移動が複雑になることがあります。DBMS_CLOUD_IMPORTは、プラットフォーム間でデータをインポートするための統一されたアプローチを提供し、複数のツールやワークフローを管理する必要をなくすことで、このプロセスを簡素化します。
DBMS_CLOUD_IMPORTは、高パフォーマンスで信頼性の高いデータ転送もサポートします。インポート・プロセスでは、パラレル実行を使用してスループットが向上し、メンテナンス中やソース・データベースへの接続が失われるなど、インポートが中断された場合、インポートは中断された場所から自動的に再開され、インポートを再開することなく完了が保証されます。
OracleデータベースおよびサポートされているOracle以外のデータベース(MySQL、PostgreSQL、Amazon Redshiftなど)からデータをインポートできます。Oracleソースの場合、データ・オブジェクトとデータベース・オブジェクトの両方がインポートされます。Oracle以外のソースの場合、インポートでは、Oracle互換フォーマットへのデータ型の自動変換によるデータ移動に重点を置きます。
この機能により、柔軟なデータ・インポートがサポートされます。要件に基づいて、データベース全体またはデータのサブセット(選択したスキーマや表など)をインポートできます。Oracleには、進捗をモニターし、インポート・ステータスを追跡するためのデータ・ディクショナリ・ビューも用意されています。
主な利点
- プラットフォーム間の統合データ・インポート: 複数のツールを使用せずに、OracleデータベースおよびOracle以外のデータベースからデータをインポートします。
- 高パフォーマンスのデータ転送: パラレル実行を使用して大量のデータを移動します。
- 組込みのレジリエンシ: ソース・データベースへのメンテナンスまたは接続の損失など、中断後にインポート操作を自動的に再開します。
- 柔軟なデータ選択: データベース全体またはデータのサブセット(特定のスキーマまたは表を含む)をインポートします。
詳細は、次を参照してください:
親トピック: DBMS_CLOUD_IMPORTを使用したデータの移行
前提条件
Autonomous AI Databaseへのインポートを実行するための前提条件をリストします。
インポートを開始する前に、次の前提条件が満たされていることを確認してください。
-
ADMINユーザーとしてログインする必要があります。 -
DBMS_CLOUD_IMPORTサブプログラムは、インポート・タスクの一部として暗黙的に作成されたデータベース・リンクを使用してソース・データベースにアクセスします。この接続を確立するには、リモート・データベース資格証明を使用して資格証明オブジェクトを作成し、インポート・タスクの作成時にそれを参照する必要があります。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。 -
Oracle以外のソース・データベースの場合、
DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASKをコールするときにgateway_paramsパラメータにlongtovarchar => 'true'を指定します。これは、Oracle以外のデータベースのメタデータがLONG列で構成されているため必要です。例:gateway_params => JSON_OBJECT('db_type' VALUE <db_type>, 'longtovarchar' VALUE 'true')。 -
service_nameで指定されたデータベースがターゲット・スキーマに接続してアクセスできることを確認します。 -
インポート・ジョブは、計画メンテナンス・イベントや予期しない停止の後など、中断の時点から再開されます。パラレル処理および自動再開は、Oracle、MySQL、PostgreSQLおよびAmazon Redshiftソース・データベースでサポートされています。Oracle以外のソース・データベースの場合、パラレル処理および自動再開を有効にするには、次の前提条件が必要です(ソース・データベース・タイプに応じて追加の前提条件が適用される場合があります)。
-
ソース表はレンジ・パーティション化されています。
-
少なくとも1つの数値列にヒストグラム統計が存在します。
-
数値索引または主キーが存在します。
-
これらの前提条件が満たされない場合、表はCREATE TABLE AS SELECT (CTAS)を使用してコピーされます。この場合、パラレル処理はサポートされておらず、ジョブが中断されると、中断の時点から再開するのではなく、表の先頭から再開されます。
ソース・データベース・タイプに応じて、パラレル処理と信頼性の高い再起動性をサポートするために追加の前提条件が必要になる場合があります。詳細については、次を参照してください。
- PostgreSQLソース・データベース
- ソースPostgreSQLデータベースで必要なビューを作成します。PostgreSQLからの移行時にパラレル処理と信頼性の高い再起動性をサポートするには、ソース・データベースで必要なビューを作成します。ビューが存在しない場合、インポートでは
CREATE TABLE AS SELECT(CTAS)が使用され、そのモードではパラレル処理はサポートされず、表のロードが中断されると、最初から再起動されます。詳細は、CREATE TABLE AS SELECTを参照してください。 - これらのビューは、GitHubで使用可能なOracle提供のスクリプトを使用して作成できます。インポートを開始する前に、ソースPostgreSQLデータベースでスクリプトを確認して実行します。
- ソースPostgreSQLデータベースで必要なビューを作成します。PostgreSQLからの移行時にパラレル処理と信頼性の高い再起動性をサポートするには、ソース・データベースで必要なビューを作成します。ビューが存在しない場合、インポートでは
詳細は、PostgreSQL 18.3のドキュメントを参照してください。
- MySQLソース・データベース
-
MySQLはスキーマを使用しないため、MySQLソースでは
schema_listはサポートされていません。REATE_IMPORT_TASKを起動する場合は、schema_list([])に空の配列を指定します。 -
service_nameに指定した値がスキーマ名として使用されます。 -
ソースMySQLデータベースで必要なビューを作成します。MySQLからの移行時にパラレル処理と信頼性の高い再起動性をサポートするには、ソース・データベースで必要なビューを作成します。ビューが存在しない場合、インポートでは
CREATE TABLE AS SELECT (CTAS)が使用され、そのモードではパラレル処理はサポートされず、表のロードが中断されると、最初から再起動されます。詳細は、CREATE TABLE AS SELECTを参照してください。 -
これらのビューは、Githubで使用可能なOracle提供のスクリプトを使用して作成できます。インポートを開始する前に、ソースMySQLデータベースでスクリプトを確認して実行します。
-
詳細は、MySQLリファレンスを参照してください。
- Amazon Redshiftソース・データベース
-
データベース・リンク・アクセスの権限を付与します。 リモート表からデータを読み取るには、データベース・リンクの作成に使用するアカウントに、次のような必要な権限があることを確認する必要があります。
-
GRANT USAGE ON SCHEMA <remote_schema> TO <dblink_user>; -
GRANT SELECT ON <remote_schema>.<remote_table> TO <dblink_user>;
-
-
public以外のスキーマのメタデータの可視性を保証します。リモート・スキーマがpublicでなく、インポートでメタデータを問い合せる必要がある場合(たとえば、pg_table_defを使用)、スキーマをデータベース・リンク・ユーザーのsearch_pathに含める必要があります。次に例を示します。-
ALTER USER <dblink_user> SET search_path TO <new_value>;
-
-
詳細は、Amazon Redshiftのドキュメントを参照してください。
親トピック: DBMS_CLOUD_IMPORTを使用したデータの移行
DBMS_CLOUD_IMPORTを使用したデータのインポート
DBMS_CLOUD_IMPORTを使用してAutonomous AIデータベースにデータをインポートする方法について説明します。
Autonomous AI Databaseにデータをインポートするには、DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASKプロシージャを使用します。このプロシージャでは、必要な接続詳細およびオプションでインポートするオブジェクトを指定して、Oracleおよびサポートされている非Oracleデータベースからデータをインポートできます。
schema_listやtable_listなどのパラメータを指定することで、データベース全体またはデータのサブセット(特定のスキーマや表など)をインポートできます。このプロシージャを実行すると、Oracle Databaseによって、インポート・タスクを管理するOracle Schedulerジョブが作成されます。ジョブでは、指定された接続の詳細および資格証明を使用して、ソース・データベースへのデータベース・リンクを作成し、Autonomous AI Databaseにデータを転送します。
インポートの動作は、ソース・データベース・タイプによって異なります。
- OracleからOracleへのインポート:データ・オブジェクトとデータベース・オブジェクトの両方が移行されます。索引、制約およびパーティションは、ターゲットAutonomous AIデータベースに自動的に作成されます。インポートが中断された場合(たとえば、メンテナンスのため)、中断時点から再開されます。
- Oracle以外のデータベースからのインポート:データのみが移行されます。キー、索引、制約およびその他の依存オブジェクトは作成されません。パーティションが作成されるのは、ソース表がレンジ・パーティションの場合のみです。再開機能は前提条件によって異なります。それ以外の場合、インポートは最初から再開されます。
インポートは、ADMINユーザーとして実行する必要があります。ターゲットAutonomous AI Databaseはインポート中も使用可能なままですが、Oracleでは、インポートが完了するまでターゲット・データベースでの他のアクティビティを回避することをお薦めします。インポート・ジョブが(たとえば、計画メンテナンスや予期しない停止のために)中断された場合、ソース・データベース・タイプおよび前提条件が満たされているかどうかに応じて、中断または再起動の時点から再開できます。一時停止および再開を使用してジョブを一時停止してから続行することもできます。
- インポート・タスクの作成
インポート・タスクを作成するステップについて説明します。 - インポートの一時停止および再開
インポート操作を一時停止および再開する方法について説明します。 - インポートの進行状況のモニター
インポート・タスクを開始すると、スケジューラ・ジョブがバックグラウンドで実行され、Autonomous AI Databaseによってタスク・レベルと表レベルの両方で進行状況が記録されます。 - インポート・タスクの削除
インポート・タスクを削除するステップについて説明します。
親トピック: DBMS_CLOUD_IMPORTを使用したデータの移行
インポート・タスクの作成
インポート・タスクを作成するステップについて説明します。
インポート・タスクを作成して開始する前に、ソース・データベースに対する認証を設定します。DBMS_CLOUD_IMPORTは、資格証明オブジェクトを使用してソースに安全に接続します(また、タスクに必要なデータベース・リンクを作成します)。
インポート・タスクを作成するには、次のステップに従います。
インポートの中断と再開
インポート操作を中断および再開する方法について説明します。
必要に応じて、SUSPEND_IMPORT_TASKプロシージャを使用してインポートを一時的に一時停止できます。
BEGIN
DBMS_CLOUD_IMPORT.SUSPEND_IMPORT_TASK(
task_name => 'orcl_import_job'
);
END;
/これにより、すべての進行状況とメタデータを保持しながら、スケジューラ・ジョブが停止します。詳細は、SUSPEND_IMPORT_TASKプロシージャを参照してください。
インポートを続行するには、RESUME_IMPORT_TASKプロシージャを使用します。
BEGIN
DBMS_CLOUD_IMPORT.RESUME_IMPORT_TASK(
task_name => 'orcl_import_job'
);
END;
/ジョブは最後のチェックポイントから再開し、完了した表をスキップして残りの作業を続行します。
再開の動作は、ソース・データベースのタイプおよび前提条件によって異なります。並列処理と自動再開の前提条件が満たされると、インポートは中断の時点から続行されます。それ以外の場合、インポートでは
CREATE TABLE AS SELECT (CTAS)が使用されます。このモードでは、パラレル処理はサポートされず、ジョブが中断されると、表の先頭から再開されます。
詳細は、「RESUME_IMPORT_TASKプロシージャ」を参照してください。
インポート進捗のモニター
インポート・タスクを開始すると、スケジューラ・ジョブがバックグラウンドで実行され、Autonomous AI Databaseによってタスク・レベルと表レベルの両方で進行状況が記録されます。
- DBA_DATA_IMPORT_TASK_STATUS: タスク・レベルの進捗(全体的なステータス、完了率、アクティビティのサマリーなど)が表示されます(現在進行中の表など)。
- DBA_DATA_IMPORT_TABLE_STATUS: 失敗した表のステータスやエラーの詳細など、インポートされる各表の表レベルの進行状況が表示されます。
たとえば、DBA_DATA_IMPORT_TABLE_STATUSを問い合せて、表レベルの進行状況およびエラーを表示します。STATUS列は、各表の現在の状態(SUCCEEDED、FAILED、LOADING、STOPPEDなど)を示します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'db1_cred',
username => '<username>',
password => '<password>'
);
END;
/出力は次のようになります:
IMPORT_TASK_NAME SCHEMA_NAME SCHEMA_OBJECT STATUS
------------------ ------------- --------------- ----------
IMPORT_JOB1 SALES ORDERS SUCCEEDED
IMPORT_JOB1 SALES CUSTOMERS SUCCEEDED
IMPORT_JOB1 HR EMPLOYEES LOADING
IMPORT_JOB1 HR DEPARTMENTS FAILEDインポートが完了すると、スケジューラ・ジョブは自動的に無効になります。詳細は、異機種間インポートのモニターおよび診断を参照してください。
インポート・タスクの削除
インポート・タスクを削除するステップについて説明します。
インポートが完了し、不要になったら、インポート・タスクを削除できます。タスクを削除すると、スケジューラ・ジョブ、データベース・リンクおよび関連するメタデータが削除されます。ターゲット・スキーマにすでに作成されているオブジェクトまたはデータはロールバックされず、進行中の表を部分的にロードしたままにできます。
同じスキーマのインポートを再実行する場合は、部分的にロードされた表のクリーンアップを手動で行う必要がある場合があります。不完全な表を識別するには、クリーンアップを実行する前に、DBA_DATA_IMPORT_TABLE_STATUSなどのデータ・ディクショナリ・ビューを問い合せて表のステータスを確認します。
BEGIN
DBMS_CLOUD_IMPORT.DROP_IMPORT_TASK(
task_name => 'orcl_import_job'
);
END;
/この例では、ORCL_IMPORT_JOBインポート・ジョブを削除します。詳細は、DROP_IMPORT_TASKプロシージャを参照してください。
異機種間インポートのモニターおよび診断
問題を診断し、データ・インポート操作の進行状況を監視するには、次のデータ・ディクショナリ・ビューを問い合せます。これらのビューは、タスク・ステータス、実行の進行状況、パラレル操作および関連オブジェクトに関する詳細情報を提供します。
| ビューの名前 | 摘要 |
|---|---|
| DBA_DATA_IMPORT_TASK_STATUSビュー | 処理中に発生したエラーを含め、インポート・タスク内の各表のステータスが表示されます。 |
| DBA_DATA_IMPORT_TABLE_STATUSビュー | 処理済、ロード済および正常に完了した表の数などの進捗情報を含む、タスク・レベルの全体的な詳細が表示されます。 |
親トピック: DBMS_CLOUD_IMPORTを使用したデータの移行