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: |