10gを使用しているため、DataPumpAPIを使用してこれを行うことができます。宛先OSディレクトリにマップするディレクトリオブジェクトに対する読み取りおよび書き込みアクセス権が必要です。
次の例では、EMPとDEPTの2つのテーブルを、DATA_PUMP_DIRで識別されるディレクトリ内のEMP.DMPというファイルにエクスポートしています。
SQL> declare
2 dp_handle number;
3 begin
4 dp_handle := dbms_datapump.open(
5 operation => 'EXPORT',
6 job_mode => 'TABLE');
7
8 dbms_datapump.add_file(
9 handle => dp_handle,
10 filename => 'emp.dmp',
11 directory => 'DATA_PUMP_DIR');
12
13 dbms_datapump.add_file(
14 handle => dp_handle,
15 filename => 'emp.log',
16 directory => 'DATA_PUMP_DIR',
17 filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
18
19 dbms_datapump.metadata_filter(
20 handle => dp_handle,
21 name => 'NAME_LIST',
22 value => '''EMP'',''DEPT''');
23
24 dbms_datapump.start_job(dp_handle);
25
26 dbms_datapump.detach(dp_handle);
27 end;
28 /
PL/SQL procedure successfully completed.
SQL>
@DerekMaharは尋ねます:
「クライアント側から実行できる同様のデータポンプツールまたはAPIはありますか?」
PL / SQL APIとOSユーティリティの両方であるDataPumpは、Oracleディレクトリに書き込みます。 Oracleディレクトリは、データベースに表示されるOSディレクトリを表す必要があります。通常、これはサーバー上のディレクトリですが、理論的にはPCドライブをネットワークにマッピングすることは可能だと思います。これは良い考えだとネットワーク管理者を説得する必要があります。そうではないので、売り込みは難しいです...
古いIMPおよびEXPユーティリティは、クライアントディレクトリから読み取りおよび書き込みを行うため、理論的には、ローカルダンプファイルをリモートデータベースにIMPすることが可能です。しかし、これは実際的なアプローチではないと思います。その性質上、ダンプファイルは大きくなる傾向があるため、ネットワークを介したインポートは遅く、失敗する傾向があります。ダンプファイルをzip形式で圧縮し、サーバーにコピーしてそこからインポートする方がはるかに優れたソリューションです。