Oracle Instant Client を使用して Amazon RDS for Oracle DB インスタンスのデータポンプのインポートまたはエクスポートを実行するにはどうすればよいですか。

最終更新日: 2021 年 11 月 10 日

impdp および expdp クライアントを使用して、Oracle DB インスタンスの Amazon Relational Database Service (Amazon RDS) へのエクスポートとインポートを実行していきたいと思います。

解決方法

Amazon RDS for Oracle はマネージドデータベースであるため、impdp または expdp クライアントを使用するためのホストへのアクセス権がありません。Data Pump API を使用してインポートまたはエクスポートを実行する場合は、PL/SQL パッケージが必要です。Oracle Instant Client は、お使いのコンピュータまたは Amazon Elastic Compute Cloud(Amazon EC2)インスタンスのいずれかにインストールできる軽量クライアントです。Oracle Instant Client には、コマンドラインからエクスポートおよびインポートを実行するために使用できる impdp および expdp クライアントが含まれています。

Oracle Instant Client を使用する前に、次の操作を行ってください。

  • Doc ID 553337.1 を確認して、ダウンロードするバイナリがソースバージョンとターゲットバージョンのエクスポートをサポートしているかどうかをチェックします。通常は、同等またはそれ以降のバージョンのクライアントからのエクスポートがサポートされます。ターゲットの Amazon RDS メジャーバージョンと同じクライアントバージョンを使用したインポートがサポートされています。たとえば、ソースインスタンスのバージョンが 12.2 で、ターゲットインスタンスのバージョンが 18c の場合、Oracle Instant 18c Client の最新バージョンをインストールできます。
  • Data Pump を使用するには、Basic パッケージの上にツールパッケージをインストールします。パッケージをインストールするには、Oracle Instant Client に関する Oracle ドキュメントを参照してください。
  • ターゲット RDS インスタンスの夏時間 (DST) バージョンがソースインスタンスのそれと同じか遅いことを確認してください。そうでない場合は、ORA-39405 エラーが発生します。次のクエリを使用して、インスタンスの現在の DST バージョンを確認します。DST バージョンを利用可能な最新バージョンに更新するには、 TIMEZONE_FILE_AUTOUPPRADE オプションを使用します。
SELECT * FROM V$TIMEZONE_FILE;

Oracle Instant Client を使用してデータベースリンク経由でデータポンプのインポートまたはエクスポートをテストするには、次の手順を実行します。

1.    Amazon Linux 2 オペレーティングシステムを使用して、テスト用 Amazon EC2 インスタンスを作成します。

2.    ベーシック (RPM) パッケージとツール (RPM) パッケージをダウンロードします。この記事では、RPM ダウンロードについて考えます。

        oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm

        oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm

3.    バイナリを EC2 インスタンスに転送します。詳細については、SCP クライアントを使用して Linux インスタンスにファイルを転送するを参照してください。

4.    Oracle のドキュメントの RPM から Linux への Oracle インスタントクライアントをインストールする手順に従います
このプロセスにより、バイナリはデフォルトの場所 /usr/lib/oracle/example-client-version/client64 にインストールされます。たとえば、バージョン 19.8 のバイナリをダウンロードした場合、インストールのデフォルトのバイナリの場所は /usr/lib/oracle/19.8/client64 になります。

5.    SQL*Plus Package (RPM) パッケージをインストールして、EC2 インスタンスと RDS インスタンス間の接続をテストします。

6.    次の環境変数を設定または更新します。

export PATH=$PATH:/usr/lib/oracle/19.8/client64/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/19.8/client64/lib

7.    次のようなコマンドを実行して、 tnsnames.ora を保存するカスタムディレクトリを作成します。環境変数 TNS_ADMIN にそのディレクトリを指定します。

mkdir -p /root/tnsentries

tnsnames.ora ファイルがこのディレクトリの下にあることを確認します。

次のコマンドを実行して、環境変数 TNS_ADMIN がディレクトリを指していることを確認します。

export TNS_ADMIN=/root/tnsentries

8.    データポンプのインポートに必要な TNS エントリを tnsnames.ora ファイルに含めます。

9.    EC2 インスタンスからの接続を許可するように、ソース RDS インスタンスとターゲット RDS インスタンスのセキュリティグループのインバウンドルールを更新します。

10.    ソース RDS インスタンスにテストテーブルを作成し、次のようなクエリを実行してエクスポートを実行します。

CREATE TABLE TEST1 AS SELECT * FROM DBA_TABLES;
CREATE TABLE TEST2 AS SELECT * FROM DBA_OBJECTS;
CREATE TABLE TEST3 AS SELECT * FROM DBA_DATA_FILES;

11.    次のようなクエリを実行して、network_link パラメータで使用するソースデータベースとターゲットデータベースの間にデータベースリンクを作成します。

CREATE DATABASE LINK sample_conn CONNECT TO example-username IDENTIFIED BY example-password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT = example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';

データベースリンクを使用してターゲットインスタンスからソースインスタンスに接続するため、ソースデータベースのインバウンドルールはターゲットインスタンスの接続を許可するように設定されます。

12.    ソースインスタンスからターゲットインスタンスにデータをインポートするには、次のようなコマンドを実行します。

impdp admin@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn

次のような出力が得られます。

Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "ADMIN"."SYS_IMPORT_TABLE_01":  admin/********@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 3.625 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . imported "ADMIN"."TEST2"                              20634 rows
. . imported "ADMIN"."TEST1"                               1537 rows
. . imported "ADMIN"."TEST3"                                  6 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Job "ADMIN"."SYS_IMPORT_TABLE_01" successfully completed at Wed Oct 14 23:57:28 2020 elapsed 0 00:01:06

Oracle データポンプの概要に関する Oracle ドキュメント

DBMS_DATAPUMP に関する Oracle ドキュメント

この記事はお役に立ちましたか。


請求に関するサポートまたは技術サポートが必要ですか?