sql >> Base de Datos >  >> RDS >> Oracle

Tomando volcado de tablas en Oracle 10g usando el procedimiento PL/SQL

Como está en 10g, puede hacer esto con la API de bomba de datos. Debe tener acceso de lectura y escritura en un objeto de directorio que se asigna al directorio del sistema operativo de destino.

En el siguiente ejemplo, estoy exportando dos tablas, EMP y DEPT, a un archivo llamado EMP.DMP en un directorio identificado por 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 pregunta:

"¿Existe una herramienta de bombeo de datos similar o una API disponible para la ejecución desde el lado del cliente?"

DataPump, tanto la API de PL/SQL como la utilidad del sistema operativo, escriben en los directorios de Oracle. Un directorio de Oracle debe representar un directorio del sistema operativo que sea visible para la base de datos. Por lo general, ese es un directorio en el servidor, aunque supongo que, en teoría, es posible asignar una unidad de PC a la red. Tendría que persuadir a su administrador de red de que es una buena idea, es difícil de vender, porque no lo es...

Las utilidades IMP y EXP más antiguas leen y escriben desde directorios de clientes, por lo que teóricamente es posible IMP un archivo de volcado local en una base de datos remota. Pero no creo que este sea un enfoque práctico. Por su naturaleza, los archivos de volcado tienden a ser grandes, por lo que la importación a través de una red es lenta y propensa a fallar. Es una solución mucho mejor comprimir el archivo de volcado, copiarlo en el servidor e importarlo desde allí.