Oracle的文件操作——UTIL_FILE包和DBMS_LOB包
最近客户要求从老数据库迁移数据,其中涉及到把 Blob 格式的图片转为文件格式,通过研究编写了一个简单的存储过程,输入 Blob 可以向指定文件夹输出文件,供参考。
源代码
1 | create or replace procedure fnBlobtoFile(inBlob blob, outDIR varchar2, outFile varchar2) is |
UTIL_FILE 包是否支持远程文件操作?
答案是肯定的,但需要解决权限问题。
在 Windows 环境下,Oracle 的服务是通过本地系统登录的。
而本地系统账户是没有远程文件或映射磁盘的访问权限。
这里我们需要使用管理员账户登录 Oracle 服务:
关闭 OracleServiceORCL 和 OracleOraDb11g_home1TNSListener 服务;
设置两个服务的登录账户,以管理员身份登录;
重启两个服务,可以看到服务右侧显示为 Administrator 账户;
使用 Administrator 账户登录需要操作的远程文件夹:
\\192.168.0.102\d$\files
输入远程主机的用户名、密码,并保存凭证;
修改输出文件夹 directory 为完整的 UNC 地址:
1 | l_sql:='create or replace directory out_DIR as '''\\192.168.0.102\d$\files';'''; |
这样,就可以通过 UTIL_FILE 进行远程文件操作了!