Существует несколько способов скопировать данные из одной базы данных Oracle в другую - ссылки на базы данных, DataPump, exp / imp (обычно не поддерживается, но все еще работает), SQL * Загрузка загрузчика экспорта CSV и т. Д.
В приведенном ниже примере создается ежедневное задание, которое извлекает данные из исходной базы данных через ссылку на базу данных в место назначения.
-- Source database: srcdb
-- Source user : srcuser
-- Source table : srctbl (owned by srcuser)
-- Destination database: destdb
-- Destination user : destuser
-- Destination table : desttbl (owned by destuser)
-- On destdb: grant destuser privilege to create database link and job
-- (Execute as SYS, or ask your DBA to do this)
SQL> GRANT CREATE DATABASE LINK TO destuser;
Grant succeeded.
SQL> GRANT CREATE JOB to destuser;
Grant succeeded.
-- On destdb, login as destuser and create database link that points to srcdb.
-- Link connects to srcdb as srcuser. Substitute your HOST, PORT, and SERVICE_NAME
SQL> CREATE DATABASE LINK srcdb CONNECT TO srcuser IDENTIFIED BY srcuserpass USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=srcdb)))';
Database link created.
-- On destdb: Log in as destuser and create daily job to
-- copy all rows from the source to the destination
SQL> EXECUTE DBMS_SCHEDULER.CREATE_JOB (
job_name => 'destuser.copyjob',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN INSERT INTO desttbl SELECT * FROM srctbl@srcdb; END;',
start_date => TO_DATE('06/17/2019 05:45 PM', 'MM/DD/YYYY HH:MI PM'),
repeat_interval => 'FREQ=DAILY',
end_date => NULL,
enabled => TRUE,
comments => 'Daily copy of data to dest from source');
END;
PL/SQL procedure successfully completed.
Для просмотра выполнения задания можно использовать представление USER_SCHEDULER_JOBS
.