Oracle
 sql >> Database >  >> RDS >> Oracle

Acquisizione del dump delle tabelle in Oracle 10g utilizzando la procedura PL/SQL

Dato che sei su 10 g, puoi farlo con l'API Data Pump. È necessario disporre dell'accesso in lettura e scrittura su un oggetto directory che esegue il mapping alla directory del sistema operativo di destinazione.

Nell'esempio seguente sto esportando due tabelle, EMP e DEPT, in un file chiamato EMP.DMP in una directory identificata da 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 chiede:

"Esiste uno strumento di data pump o un'API simili disponibili per l'esecuzione dal lato client"

DataPump, sia l'API PL/SQL che l'utilità del sistema operativo, scrivono nelle directory Oracle. Una directory Oracle deve rappresentare una directory del sistema operativo visibile al database. Di solito è una directory sul server, anche se suppongo che sia teoricamente possibile mappare un'unità PC sulla rete. Dovresti convincere il tuo amministratore di rete che questa è una buona idea, è una vendita difficile, perché non lo è...

Le utilità IMP ed EXP precedenti leggono e scrivono dalle directory client, quindi è teoricamente possibile eseguire l'IMP di un file di dump locale in un database remoto. Ma non credo che questo sia un approccio pratico. Per loro natura, i file di dump tendono ad essere di grandi dimensioni, quindi l'importazione attraverso una rete è lenta e soggetta a errori. È una soluzione molto migliore per comprimere il file dump, copiarlo sul server e importarlo da lì.