PLSQL ile Dizin Listeleme

PLSQL ile dizin listeleme

Bu makalemizde SYS.DBMS_BACKUP_RESTORE paketi ile oracle’ın bir dizininde hangi dosyalar var onları listeleyeceğiz.Benzer örneği java ile bir başka makalede yapmıştık.Ona da bakmak isterseniz;
java ile dizin listelemeye göz atabilirsiniz..

-SYS ile oracle type create ediyoruz.

CREATE TYPE file_array AS TABLE OF VARCHAR2(200);

-SYS ile fonksiyonumuzu oluşturuyoruz.

CREATE OR REPLACE FUNCTION LIST_FILES (dir_name IN VARCHAR2,lp_string IN VARCHAR2 DEFAULT NULL)
RETURN file_array pipelined AS
lv_pattern VARCHAR2(1024);
lv_ns VARCHAR2(1024);
BEGIN
SELECT directory_path
INTO lv_pattern
FROM dba_directories
WHERE directory_name=dir_name;
SYS.DBMS_BACKUP_RESTORE.SEARCHFILES(lv_pattern, lv_ns);
FOR file_list IN (SELECT FNAME_KRBMSFT AS file_name
FROM X$KRBMSFT
WHERE FNAME_KRBMSFT LIKE '%'|| NVL(lp_string, FNAME_KRBMSFT)||'%' ) LOOP
PIPE ROW(file_list.file_name);
END LOOP;
END;

-Fonksiyonumuza yetki verip synonym oluşturuyoruz.

GRANT EXECUTE ON list_files TO PUBLIC;
CREATE PUBLIC SYNONYM list_files FOR sys.list_files;

-Dizin adını verip fonksiyonumuzu test edelim.

SELECT * FROM TABLE(list_files('DATA_PUMP_DIR'));
C:\ORACLE\ADMIN\ORCL\DPDUMP\dp.log
 
SELECT * FROM TABLE(list_files('DATA_FILE_DIR'));
C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DEMO\SCHEMA\SALES_HISTORY\olp_v3.sql
C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DEMO\SCHEMA\SALES_HISTORY\sale1v3.dat

Umarım faydalı olur..

 

 

Tagged: , , , ,

Bir cevap yazın

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