DBMS_FILE_TRANSFER Package in Oracle Database 10g

DBMS_FILE_TRANSFER Package in Oracle Database 10g

Oracle 10g introduceerd de DBMS_FILE_TRANSFER package welke voorziet in een API om binair files tussen database server te kopiëren.


  • DAGELIJKS GEBRUIKS AANWIJZINGEN
  • COPY_FILE
  • GET_FILE
  • PUT_FILE

Gebruiksaanwijzingen

Allen van de momenteel gesteunde procedures hebben een aantal gebruiksaanwijzingen:

  • De gebruiker moet leesrechten op de source directory object hebben en schrijven privilege op de destination directory object.
  • De procedure zet directory object namen om naar hoofdletters tenzij ze door dubbelquotes zijn omringd.
  • Te kopiëren files moeten een veelvoud van 512 bytes in grootte zijn.
  • Te kopiëren files moeten gelijk of kleiner zijn dan 2 terabytes.
  • File transfers zijn niet transactional.
  • Files worden binair gekopieerd zodat geen character conversie plaatsvindt.
  • File copies kunnen gemonitored worden middels uitlezen van de view V$SESSION_LONGOPS.

COPY_FILE

De procedure COPY_FILE staat u toe om binaire dossiers van één plaats naar een andere plaats op de zelfde server te kopiëren.

-- Creëer de source en destination directory objects.
CREATE OR REPLACE DIRECTORY db_files_dir1 AS '/u01/oradata/DB10G/';
CREATE OR REPLACE DIRECTORY db_files_dir2 AS '/u02/oradata/DB10G/';

-- Zet een tablespace in read only mode zodat we het kunnen gebruiken voor -- een test file transfer.

ALTER TABLESPACE users READ ONLY;

-- Kopiëer de file.
BEGIN
DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object => 'DB_FILES_DIR1',
source_file_name => 'USERS01.DBF',
destination_directory_object => 'DB_FILES_DIR2',
destination_file_name => 'USERS01.DBF');
END;
/

-- Zet de tablespace terug in read write mode.
ALTER TABLESPACE users READ WRITE;


Het controleren van de bestemmingsfolder zal laten zien dat de file met succes is gekopiëerd.

 

GET_FILE

De procedure GET_FILE staat u toe om binair files van een remote server naar de lokale server te kopiëren.

-- Login aan de remote server.
conn system/password@remoteserver

 

-- Creëer de source directory object en switch de mode van een tablespace.
CREATE OR REPLACE DIRECTORY db_files_dir1 AS '/u01/oradata/DB10G/';
ALTER TABLESPACE users READ ONLY;

-- Login aan de local server.
CONN system/password@local

-- Creëer dedestination directory object en een database link.
CREATE OR REPLACE DIRECTORY db_files_dir2 AS '/u02/oradata/DB10G/';
CREATE DATABASE LINK remote CONNECT TO system IDENTIFIED BY password USING 'REMOTE';

-- Get de file.
BEGIN
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object => 'DB_FILES_DIR1',
source_file_name => 'USERS01.DBF',
source_database => 'REMOTE',
destination_directory_object => 'DB_FILES_DIR2',
destination_file_name => 'USERS01.DBF');
END;
/

-- Login aan de remote server.
CONN system/password@remote

-- Switch de tablespace terug naar read write mode.
ALTER TABLESPACE users READ WRITE;

Checking de destination directory op de lokale server laat zien dat de file met succes is gekopieerd.

 

PUT_FILE

De procedure PUT_FILE staat u toe om binair dossiers van de lokale server naar een remote server te kopiëren.

-- Login aan de remote server.
Systeem CONN/password@remote

-- Creëer het object van de destinationfolder.
CREATE OR REPLACE DIRECTORY db_files_dir2 AS '/u02/oradata/DB10G/';

-- Login aan de locale server.
CONN system/password@local

-- Creëer de source directory object, database link en switch de mode van een tablespace.
CREATE OR REPLACE DIRECTORY db_files_dir1 AS '/u01/oradata/DB10G/';
CREATE DATABASE LINK remote CONNECT TO system IDENTIFIED BY password USING 'REMOTE';
ALTER TABLESPACE users READ ONLY;

-- Put the file.
BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => 'DB_FILES_DIR1',
source_file_name => 'USERS01.DBF',
destination_directory_object => 'DB_FILES_DIR2',
destination_file_name => 'USERS01.DBF',
destination_database => 'REMOTE');
END;
/

-- Switch de tablespace terug naar read write mode.
ALTER TABLESPACE users READ WRITE;

Het controleren van de bestemmingsfolder op de remote server zal laten zien dat de file met
succes is gekopieerd.

Voor mee informatie zie:

  • DBMS_FILE_TRANSFER
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 160 gasten online