Oracle BFILE 文件存储及操作(oracle bfile)
Oracle BFILE 文件存储及操作
Oracle BFILE 是 Oracle 数据库支持的一种特殊类型,它可以让数据库操作系统外的非数据库文件,即非表空间文件。其应用场景有两个:一是解决空间不足的问题;二是大型 JPG 图片的存储处理。
BFILE 类型的字段在 Oracle 中不占用任何表空间,只是在表中存储文件的路径信息,文件真正存储在操作系统中指定的文件系统中。也就是说 Oracle 可以把操作系统的文件映射到数据库中做成结构化数据存储。
Oracle 需要初始化参数HF_DIRS来实现 BFILE 的功能,其属性如下:
–初始化参数
alter system set hf_dirs = ‘*C:\Oracle’;
要存储 BFILE 文件,首先要使用 CREATE DIRECTORY 来映射操作系统环境,使 Oracle 找到文件所在的路径。以下是语句示例:
–映射操作系统环境
create or replace directory picture_dir as ‘C:\Oracle\Images’;
然后就可以创建表,数据库中含有 BFILE 类型的字段,以下为示例:
CREATE TABLE demo(
filename varchar2(50) primary key,
file BFILE
)
最后,就可以利用 BFILE 分拆出的接口进行文件的存取操作了,以下是示例:
–存储文件
begin
dbms_lob.fileopen(
destination_lob => file,
filename => ‘C:\Oracle\Images\demo.jpg’,
open_mode => dbms_lob.file_readonly
);
insert into demo VALUES (‘demo.jpg’, file);
dbms_lob.fileclose (file);
end;
/
使用 BFILE 时,还需要注意文件路径和权限控制,如果不正确设置路径和权限,数据库就无法正常访问到文件,所以在此特别提醒,在使用 BFILE 时,一定要正确设置 Oracle 数据库的文件路径,以及对数据库操作系统外文件的权限控制。
总结而言,Oracle BFILE 是 Oracle 提供的一种特殊类型,可以让数据库操作系统外的文件被结构化地存储在 Oracle 中,从而能够有效应对多媒体数据的存储问题,但是在使用 BFILE 存取多媒体文件时,要特别注意数据库环境和文件路径等信息的设置,以确保数据库能顺利直接访问到文件。