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

Tager dump af borde i oracle 10g ved hjælp af PL/SQL procedure

Da du er på 10g, kan du gøre dette med Data Pump API. Du skal have læse- og skriveadgang til et biblioteksobjekt, som er knyttet til destinations-OS-biblioteket.

I det følgende eksempel eksporterer jeg to tabeller, EMP og DEPT, til en fil kaldet EMP.DMP i en mappe identificeret af 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 spørger:

"Er der et lignende datapumpeværktøj eller API tilgængeligt til udførelse fra klientsiden"

DataPump, både PL/SQL API og OS-værktøjet, skriver til Oracle-mapper. En Oracle-mappe skal repræsentere en OS-mappe, som er synlig for databasen. Normalt er det en mappe på serveren, selvom jeg formoder, at det teoretisk er muligt at tilknytte et pc-drev til netværket. Du bliver nødt til at overbevise din netværksadministrator om, at dette er en god idé, det er et svært salg, for det er det ikke...

De ældre IMP- og EXP-værktøjer læste og skrev fra klientmapper, så det er teoretisk muligt at IMP en lokal dumpfil ind i en fjerndatabase. Men jeg tror ikke, det er en praktisk tilgang. I sagens natur har dumpfiler en tendens til at være store, så import på tværs af et netværk er langsom og udsat for fejl. Det er en meget bedre løsning at zippe dumpfilen, kopiere den til serveren og importere den derfra.



  1. Kan ikke sende strengværdi 1,2 som input til en orakelforespørgsel

  2. Prøvestørrelse og varigheden af ​​OPDATERINGSSTATISTIK:Betyder det noget?

  3. SQL Server ventehændelser -3

  4. PDOException SQLSTATE[HY000] [2002] Ingen sådan fil eller mappe