PLSQL ile dosya kopyalamak,transfer etmek.

PLSQL ile dosya kopyalamak, transfer etmek.

Plsql ile dosyaları baska bir lokasyona tasımamız gerektiğinde
başvuracağımız iki yöntem var_.İkisini de örneklerle görelim.

DBMS_FILE_TRANSFER.COPY_FILE prosedürü ile dosya kopyalamak:

Hedef ve kaynak DIRECTORY oluşturuyoruz.

CREATE OR REPLACE DIRECTORY source_dir AS '/u01/oradata/DB11G/source';
CREATE OR REPLACE DIRECTORY dest_dir AS '/u01/oradata/DB11G/dest';

Kullanıcıya(USER1) directoryler üzerinde yetki veriyoruz.

GRANT READ,WRITE ON DIRECTORY source_dir TO USER1;
GRANT READ,WRITE ON DIRECTORY dest_dir TO USER1;

Kullanıcıya(USER1) paketi kullanması için yetki veriyoruz..

GRANT EXECUTE ON DBMS_FILE_TRANSFER TO USER1;
--plsql dosya taşıması
BEGIN
DBMS_FILE_TRANSFER.copy_file(
source_directory_object => 'SOURCE_DIR',
source_file_name => 'ora_temp.dat',
destination_directory_object => 'DEST_DIR',
destination_file_name => 'ora_temp.dat');
END;

Yukarıdaki blok ile plsqle ora_temp.dat dosyasını,source_dir dizininden dest_dir dizinine taşımasını söyledik.

Notlar:
*Daha çok oracle BACKUP ve oracle BINARY dosyaların taşınmasında kullanılır.
*Bu yöntemle kullanıcının hedef ve kaynak lokasyonlara okuma, yazma yetkisi olmalı.
*Dosya boyutu max 2TB ve aşağısı olmalıdır.
*Dosya boyutu 512 byte ve katları şeklinde olmalıdır.
*Uzun süren taşıma işlemini aşağıdaki sorgu ile takip edebiliriz.

 SELECT * FROM V$SESSION_LONGOPS;

UTL_FILE.FCOPY prosedürü ile dosya kopyalamak:

Plsql ile dosya taşımanın bir başka yöntemide UTL_FILE paketi.

Hedef ve kaynak dizin oluşturuyoruz.

CREATE OR REPLACE DIRECTORY source_dir AS '/u01/oradata/DB11G/source';
CREATE OR REPLACE DIRECTORY dest_dir AS '/u01/oradata/DB11G/dest';

Kullanıcıya(USER1) directoryler üzerinde yetki veriyoruz.

GRANT READ,WRITE ON DIRECTORY source_dir TO USER1;
GRANT READ,WRITE ON DIRECTORY dest_dir TO USER1;

Kullanıcıya(USER1) paketi kullanması için yetki veriyoruz..

GRANT EXECUTE ON UTL_FILE TO USER1;
--plsql dosya taşıması
BEGIN
UTL_FILE.fcopy(
source_directory_object => 'SOURCE_DIR',
source_file_name => 'ora_temp.dat',
destination_directory_object => 'DEST_DIR',
destination_file_name => 'ora_temp.dat');
END;

Notlar:
*Herhangi bir dosya taşımasında kullanılabilir.
*512 bytes katları dosya zorunluluğu yoktur.

UTL_FILE.fremove prosedürü ile dosya silmek:

SOURCE_DIR dizinindeki ora_temp.dat dosyasını silecektir..

BEGIN
utl_file.fremove( ‘SOURCE_DIR’ , ‘ora_temp.dat’ ‘);

END;

Tagged: , , , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir