Öncelikle neden böyle bir ihtiyacımız doğduğunu görelim.
Bu işlem yapılmadan önce DB sunucunuzda yeterli alan olup olmadığını kontrol edin export edilen dosyaların büyüklükleri file sisteminizin dolmasına neden olabilir.
Bu işlemlerin tamamı oracle db sunusunda yapılacaktır. Oracle sunucumuz linux olduğunu varsayarak gerekli işlemleri yapalım.
Linux terminal penceresinde dizin oluşturma.
1 |
create or replace directory IMAGEDIR as '/home/oracle/Pictures'; |
Oracle Schema yetki verilmesi.
1 2 3 4 5 |
grant read on directory imagedir to SCHEMANAME; call dbms_java.grant_permission('SCHEMANAME', 'java.io.FilePermission', '/home/oracle/Pictures/*', 'WRITE'); call dbms_java.grant_permission('ORDSYS', 'java.io.FilePermission', '/home/oracle/Pictures/*', 'WRITE'); |
Procedur oluşturma.
1 2 3 4 5 6 7 8 9 10 11 12 |
create or replace procedure RSM_EXPORT (per_id number) is IMG_BLOB BLOB; ctx raw(32767) := null; begin select photo as sicilno from personel where sicil=per_id; ORDSYS.ORDImage.export(ctx, IMG_BLOB, 'file', 'IMAGEDIR', sicilno||'.jpg'); end RSM_EXPORT; |
1 |
exec RSM_EXPORT(12345); |
Procedur oluşturduktan sonra çalıştırarak tanımlanan dizine dosyamız oluşturulmuş olur. 12345.jpg
Oracle BLOB alanları nasıl export ederiz?
Güzel bir bilgilendirme olmuş, elinize sağlık