131 lines
3.9 KiB
Markdown
131 lines
3.9 KiB
Markdown
|
|
On **target** database create a directory and an user for database link:
|
||
|
|
```sql
|
||
|
|
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:
|
||
|
|
```sql
|
||
|
|
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:
|
||
|
|
```sql
|
||
|
|
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:
|
||
|
|
```sql
|
||
|
|
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;
|
||
|
|
```
|