3.9 KiB
Executable File
3.9 KiB
Executable File
On target database create a directory and an user for database link:
create directory DIR_DEST as '/mnt/yavin4/tmp/_oracle_/dir_dest';
create user USER_DBLINK identified by *****;
grant create session to USER_DBLINK;
grant read,write on directory DIR_DEST to user_dblink;
On source database create a directory and a database link:
create directory DIR_SOURCE as '/mnt/yavin4/tmp/_oracle_/dir_source';
create database link REMOTE_DB connect to USER_DBLINK identified by ***** using 'taris/WEDGEPRD';
select * from dual@REMOTE_DB;
Use DBMS_FILE_TRANSFER from soure database to copy a single file from source directory to target directory:
BEGIN
DBMS_FILE_TRANSFER.put_file(
source_directory_object => 'DIR_SOURCE',
source_file_name => 'Full_GREEDOPRD_01.dmp',
destination_directory_object => 'DIR_DEST',
destination_file_name => 'Full_GREEDOPRD_01.dmp',
destination_database => 'REMOTE_DB');
END;
/
DBMS_FILE_TRANSFER don't have a parallel option, but we can run parallel transfers using DBMS_SCHEDULER jobs:
create or replace procedure FILECOPY1 as
BEGIN
DBMS_FILE_TRANSFER.put_file(
source_directory_object => 'DIR_SOURCE',
source_file_name => 'Full_GREEDOPRD_01.dmp',
destination_directory_object => 'DIR_DEST',
destination_file_name => 'Full_GREEDOPRD_01.dmp',
destination_database => 'REMOTE_DB');
END;
/
create or replace procedure FILECOPY2 as
BEGIN
DBMS_FILE_TRANSFER.put_file(
source_directory_object => 'DIR_SOURCE',
source_file_name => 'Full_GREEDOPRD_02.dmp',
destination_directory_object => 'DIR_DEST',
destination_file_name => 'Full_GREEDOPRD_02.dmp',
destination_database => 'REMOTE_DB');
END;
/
create or replace procedure FILECOPY3 as
BEGIN
DBMS_FILE_TRANSFER.put_file(
source_directory_object => 'DIR_SOURCE',
source_file_name => 'Full_GREEDOPRD_03.dmp',
destination_directory_object => 'DIR_DEST',
destination_file_name => 'Full_GREEDOPRD_03.dmp',
destination_database => 'REMOTE_DB');
END;
/
create or replace procedure FILECOPY4 as
BEGIN
DBMS_FILE_TRANSFER.put_file(
source_directory_object => 'DIR_SOURCE',
source_file_name => 'Full_GREEDOPRD_04.dmp',
destination_directory_object => 'DIR_DEST',
destination_file_name => 'Full_GREEDOPRD_04.dmp',
destination_database => 'REMOTE_DB');
END;
/
begin
DBMS_SCHEDULER.create_job
(
job_name => 'JOB_FILECOPY1',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN FILECOPY1; END;',
start_date => sysdate,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job');
end;
/
begin
DBMS_SCHEDULER.create_job
(
job_name => 'JOB_FILECOPY2',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN FILECOPY2; END;',
start_date => sysdate,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job');
end;
/
begin
DBMS_SCHEDULER.create_job
(
job_name => 'JOB_FILECOPY3',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN FILECOPY3; END;',
start_date => sysdate,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job');
end;
/
begin
DBMS_SCHEDULER.create_job
(
job_name => 'JOB_FILECOPY4',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN FILECOPY4; END;',
start_date => sysdate,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job');
end;
/
drop procedure FILECOPY1;
drop procedure FILECOPY2;
drop procedure FILECOPY3;
drop procedure FILECOPY4;