这篇文章主要介绍oracle中dbfs文件系统怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、DBFS介绍

Dbfs在文件和目录之上创建了一个标准的文件系统结构,并且将数据存储在数据库基表里面。DBFS很像NFS,因为它提供了一个与本地文件系统相同的共享的网络文件系统。与NFS一样,由Server与Client组成。

在DBFS中,Server为Oracle数据库,文件存储在表的一个SecureFiles LOBs 字段里面。一个PLSQL存储过程的集合,提供了访问文件系统的基本操作,比如说create、open、read、write,ls 。DBFS目录库允许每个数据库用户创建一个或多个文件系统,并且可以被clients使用。每个文件系统拥有专有的数据表,保证文件系统的内容。

二、Client端安装fuse

确定fuse版本

uname –a

Linux DB-SERVER-02 2.6.18-164.el5#1 SMP Tue Aug 1815:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

本机kernelversion 2.6.18

Kernel version 2.6.x

x>9都需要使用 fuse-2.7.4

下载fuse安装包

下载地址:

http://fuse.sourceforge.net

或者

http://sourceforge.net/projects/fuse

检查kernel-devel 包

# rpm –q kernel-devel

如果没有安装,挂载安装盘后安装package

安装fuse

$ tar -xzvf fuse-2.7.4.tar.gz

$ cd [fuse_src_dir]

$ ./configure --prefix=/usr--with-kernel=[yourkernel dir]

$ make

$ sudo su

# make install

# /sbin/depmod

# /sbin/modprobe fuse

# chmod 666 /dev/fuse

# echo "/sbin/modprobefuse" >>/etc/rc.modules

示例

查看是否安装了所需安装包

[root@mytest ~]# rpm -q kernel-devel

package kernel-devel is not installed

挂载光盘

[root@mytest dev]# mount /dev/hdc /mnt

mount: block device /dev/hdc iswrite-protected,mounting read-only
安装kernel-devel包

[root@mytest Server]# rpm -ivhkernel-devel-2.6.18-308.el5.x86_64.rpm

Preparing...###########################################[100%]

1:kernel-devel###########################################[100%]

查看kernelversion

[root@mytest Server]# uname -a

Linux mytest 2.6.18-308.el5#1 SMP Sat Feb 25 12:40:07EST 2012 x86_64 x86_64 x86_64 GNU/Linux

ftp 将fuse2.7.4 上传至服务器/root目录下

[root@mytest ~]# pwd

/root

[root@mytest ~]# ls -l fuse-2.7.4.tar.gz

-rw-r--r-- 1 root root 506658 Jun 11 13:54fuse-2.7.4.tar.gz

解压

[root@mytest ~]# tar -xzvf fuse-2.7.4.tar.gz

[root@mytest ~]# cd fuse-2.7.4

安装

[root@mytest fuse-2.7.4]#./configure

[root@mytest fuse-2.7.4]#make

[root@mytest fuse-2.7.4]#make install

[root@mytest fuse-2.7.4]#/sbin/depmod

[root@mytest fuse-2.7.4]#/sbin/modprobe fuse

[root@mytest fuse-2.7.4]#chmod 666 /dev/fuse

[root@mytest fuse-2.7.4]#echo "/sbin/modprobefuse" >> /etc/rc.modules

三、Server端Oracle数据库配置

Server端配置流程

1创建表空间

新建的表空间用来存储dbfs中相关数据。

2创建用户

新建用户用来管理dbfs相关的文件以及源数据

3授权

管理dbfs的用户需要拥有相关权限

4执行dbfs初始化脚本

Dbfs配置脚本路径:

$ORACLE_HOME/rdbms/admin/dbfs_create_filesystem_advanced

注意,需要使用新建的用户执行该脚本。

示例

使用dba用户登录

[oracle@mytest~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0Production on Thu Aug 213:40:42 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

开启数据库

SQL>startup

ORACLE instance started.

Total System Global Area 1653518336 bytes

FixedSize2213896 bytes

VariableSize956303352 bytes

DatabaseBuffers 687865856 bytes

Redo Buffers7135232 bytes

Database mounted.

Database opened.

创建表空间fsts(这里使用大文件表空间)

SQL>create bigfile tablespacefsts

2datafile'/u01/apps/oracle/oradata/david/fsts01.dbf'

3 size500m ;

Tablespace created.

创建用户dexter

SQL> create user dexter identified byxiaojundefault tablespace fsts quota unlimited on fsts ;

User created.

授权

SQL>grant create session,create table , createprocedure , dbfs_role to dexter ;

Grant succeeded.

SQL> conn dexter/xiaojun

Connected.

执行初始化脚本

SQL>@?/rdbms/admin/dbfs_create_filesystem_advancedfsts dir1 nocompressnodeduplicate noencrypt non-partition

四、客户端挂载

客户端使用需要用到dbfs_client命令,相关的程序都在Oracle client中,所以客户端必须安装Oracle client。

客户端配置流程

1.使用root用户

2. Add a new library path.

Command:

# echo "/usr/local/lib">>/etc/ld.so.conf.d/usr_local_lib.conf

3. Change directory to lib , andcreate thefollowing symbolic links to the

libclntsh.so.11.1 andlibnnz11.so libraries.

Command:

# cd /usr/local/lib

# ln -s$ORACLE_HOME/lib/libclntsh.so.11.1

# ln -s $ORACLE_HOME/lib/libnnz11.so

4. Locate libfuse.so, and create asymbolic linkthis library.

# locate libfuse.so

determined_path /libfuse.so

Command:

# ln –sdetermined_path/libfuse.so

5. Run ldconfigto create thelinks and cache for the new symbolic links.

Command:

# ldconfig

6. Create a symbolic link todbfs_client in/sbin as mount.dbfs.

Command:

# ln -s$ORACLE_HOME/bin/dbfs_client/sbin/mount.dbfs

7. Login as admin user. (Oraclerecommends th atyou do not perform the next step

as root user.)

8. Mount the DBFS store.

Command:

% dbfs_client @/dbfsdb-owallet,rw,user,direct_io /mnt/dbfs

9. [Optional] To test if the previous step wassuccessful, list the dbfs directory.

Command:

# ls /mnt/dbfs

后台执行:

nohup dbfs_clientETLUser@DBConnectString/mnt/dbfs < passwordfile.f &

示例

[oracle@mytest~]$ mkdir /u01/dbfs

[oracle@mytest~]$ ls -l /u01

drwxr-xr-x 2 oracleoinstall 4096 Aug2 13:51 dbfs

[root@mytest~]# echo "/usr/local/lib">>/etc/ld.so.conf.d/usr_local_lib.conf

[root@mytest~]# cd /usr/local/lib

[root@mytestlib]# ln -s/u01/apps/oracle/product/11gr2/db_1/lib/libclntsh.so.11.1

[root@mytestlib]# ln -s/u01/apps/oracle/product/11gr2/db_1/lib/libnnz11.so

[root@mytestlib]# find / -name libfuse.so

/usr/local/lib/libfuse.so

[root@mytestlib]# ln -s /usr/local/lib/libfuse.so

[root@mytestlib]# ldconfig

[root@mytestlib]# ln -s/u01/apps/oracle/product/11gr2/db_1/bin/dbfs_client/sbin/mount.dbfs

[root@mytestlib]# su - oracle

配置密码文件

使用oracle用户作为dbfs挂载的管理用户

创建密码文件

echo xiaojun > passwd.t

查看客户端的配置

[oracle@mytest~]$ vi$ORACLE_HOME/network/admin/tnsnames.ora

DAVID =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =mytest)(PORT= 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = david)

)

)

远程可以登录

[oracle@mytest~]$ sqlplus dexter/xiaojun@david

SQL*Plus: Release 11.2.0.1.0Production on Thu Aug 214:17:32 2012

Copyright (c) 1982, 2009, Oracle. All rightsreserved.

Connected to:

Oracle Database 11g Enterprise Edition Release11.2.0.1.0- 64bit Production

With the Partitioning, OLAP, Data Mining andRealApplication Testing options

SQL>

执行挂载命令

nohup dbfs_client dexter@david /u01/dbfs < passwd.t&

[1] 11665

[oracle@mytest ~]$ nohup: appending outputto`nohup.out'

[oracle@mytest ~]$ df -h

FilesystemSize Used Avail Use% Mounted on

/dev/sda130G 15G14G 53% /

/dev/sda33.9G 473M3.3G 13% /tmp

tmpfs2.0G 943M1.1G 48% /dev/shm

/dev/hdc3.7G 3.7G0 100% /mnt

dbfs1.5M 57K1.4M 4% /u01/dbfs

五、测试

[oracle@mytest ~]$ ll /u01

drwxr-xr-x 3 rootroot0 Aug 2 14:20 dbfs

[oracle@mytest ~]$ ll /u01/dbfs/

total 0

drwxrwxrwx 3 root root 0 Aug 2 14:09 dir1

[oracle@mytest~]$ echo test > /u01/dbfs/dir1/test.t

[oracle@mytest~]$ ll /u01/dbfs/dir1/

total 1

-rw-r--r--1 oracle oinstall 5 Aug 2 14:21 test.t

[oracle@mytest ~]$ cat /u01/dbfs/dir1/test.t

Test

[oracle@mytest~]$ mkdir /u01/dbfs/dir1/sub_dir

[oracle@mytest~]$ echo ffccddssdd >/u01/dbfs/dir1/sub_dir/test2.t

[oracle@mytest~]$ sqlplus dexter/xiaojun@david

SQL*Plus: Release 11.2.0.1.0Production on Thu Aug 214:28:49 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release11.2.0.1.0- 64bit Production

With the Partitioning, OLAP, Data Mining andRealApplication Testing options

Pathtype=1 表示文件 2表示目录

[sql] view plaincopyprint?

1. SQL>selectpathname,item,pathtypefromt_dir1;

2. PATHNAMEITEMPATHTYPE

3. ------------------------------------------------

4. /test.ttest.t1

5. /sub_dirsub_dir2

6. /sub_dir/test2.ttest2.t1

7. /ROOT2

8. /.sfs.sfs2

9. /.sfs/attributesattributes2

10. /.sfs/toolstools2

11. /.sfs/snapshotssnapshots2

12. /.sfs/RECYCLERECYCLE2

13. /.sfs/contentcontent2

14.

15. 10rowsselected.

SQL>select pathname , item , pathtype fromt_dir1 ;

PATHNAME ITEM PATHTYPE

------------------------------------------------

/test.t test.t 1

/sub_dir sub_dir 2

/sub_dir/test2.t test2.t 1

/ ROOT 2

/.sfs .sfs 2

/.sfs/attributes attributes 2

/.sfs/tools tools 2

/.sfs/snapshots snapshots 2

/.sfs/RECYCLE RECYCLE 2

/.sfs/content content 2

10 rowsselected.

配置完成

以上是“oracle中dbfs文件系统怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!