Eftersom du är på 10g kan du göra detta med Data Pump API. Du måste ha läs- och skrivbehörighet på ett katalogobjekt som mappas till målkatalogen för OS.
I följande exempel exporterar jag två tabeller, EMP och DEPT, till en fil som heter EMP.DMP i en katalog som identifieras av 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 frågar:
"Finns det ett liknande datapumpverktyg eller API tillgängligt för exekvering från klientsidan"
DataPump, både PL/SQL API och OS-verktyget, skriver till Oracle-kataloger. En Oracle-katalog måste representera en OS-katalog som är synlig för databasen. Vanligtvis är det en katalog på servern, även om jag antar att det är teoretiskt möjligt att mappa en PC-enhet till nätverket. Du måste övertyga din nätverksadministratör om att det här är en bra idé, det är svårt att sälja, för det är det inte...
De äldre IMP- och EXP-verktygen läser och skrev från klientkataloger, så det är teoretiskt möjligt att IMP en lokal dumpfil till en fjärrdatabas. Men jag tror inte att detta är ett praktiskt tillvägagångssätt. Till sin natur tenderar dumpfiler att vara stora, så import över ett nätverk är långsam och misslyckas. Det är en mycket bättre lösning att zippa dumpfilen, kopiera den till servern och importera den därifrån.