Saat Anda menggunakan 10g, Anda dapat melakukannya dengan Data Pump API. Anda harus memiliki akses baca dan tulis pada objek direktori yang memetakan ke direktori OS tujuan.
Dalam contoh berikut saya mengekspor dua tabel, EMP dan DEPT, ke file bernama EMP.DMP dalam direktori yang diidentifikasi oleh DATA_PUMP_DIR.
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 bertanya:
"Apakah ada alat pompa data atau API serupa yang tersedia untuk dieksekusi dari sisi klien"
DataPump, baik PL/SQL API dan utilitas OS, menulis ke direktori Oracle. Direktori Oracle harus mewakili direktori OS yang dapat dilihat oleh database. Biasanya itu adalah direktori di server, meskipun saya kira secara teoritis mungkin untuk memetakan drive PC ke jaringan. Anda harus meyakinkan admin jaringan Anda bahwa ini adalah ide yang bagus, ini adalah penjualan yang sulit, karena tidak...
Utilitas IMP dan EXP yang lebih lama membaca dan menulis dari direktori klien, sehingga secara teori dimungkinkan untuk IMP file dump lokal ke database jarak jauh. Tapi saya tidak berpikir ini adalah pendekatan praktis. Secara alami, file dump cenderung besar, jadi mengimpor melalui jaringan lambat dan rentan terhadap kegagalan. Ini adalah solusi yang jauh lebih baik untuk meng-zip file dump, menyalinnya ke server dan mengimpornya dari sana.