oracle中dbfs文件系统怎么用
这篇文章主要介绍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文件系统怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。