共计 6970 个字符,预计需要花费 18 分钟才能阅读完成。
这篇文章主要介绍 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 18
15: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/modprobe
fuse /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 -ivh
kernel-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:07
EST 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:54
fuse-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/modprobe
fuse /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 2
13: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
Fixed
Size
2213896 bytes
Variable
Size
956303352 bytes
Database
Buffers 687865856 bytes
Redo Buffers
7135232 bytes
Database mounted.
Database opened.
创建表空间 fsts(这里使用大文件表空间)
SQL create bigfile tablespace
fsts
2 datafile
/u01/apps/oracle/oradata/david/fsts01.dbf
3 size500m ;
Tablespace created.
创建用户 dexter
SQL create user dexter identified byxiaojun
default tablespace fsts quota unlimited on fsts ;
User created.
授权
SQL grant create session,create table , create
procedure , dbfs_role to dexter ;
Grant succeeded.
SQL conn dexter/xiaojun
Connected.
执行初始化脚本
SQL @?/rdbms/admin/dbfs_create_filesystem_advanced
fsts 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 , and
create thefollowing symbolic links to the
libclntsh.so.11.1 and
libnnz11.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 a
symbolic linkthis library.
# locate libfuse.so
determined_path /libfuse.so
Command:
# ln –s determined_path
/libfuse.so
5. Run ldconfig to create the
links and cache for the new symbolic links.
Command:
# ldconfig
6. Create a symbolic link to
dbfs_client in /sbin as mount.dbfs.
Command:
# ln -s
$ORACLE_HOME/bin/dbfs_client/sbin/mount.dbfs
7. Login as admin user. (Oracle
recommends 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 previo
us step wassuccessful, list the dbfs directory.
Command:
# ls /mnt/dbfs
后台执行:
nohup dbfs_client
ETLUser@DBConnectString/mnt/dbfs passwordfile.f
示例
[oracle@mytest~]$ mkdir /u01/dbfs
[oracle@mytest~]$ ls -l /u01
drwxr-xr-x 2 oracle
oinstall 4096 Aug 2 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 2
14:17:32 2012
Copyright (c) 1982, 2009, Oracle. All rights
reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release
11.2.0.1.0- 64bit Production
With the Partitioning, OLAP, Data Mining andReal
Application 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
Filesystem
Size Used Avail Use% Mounted on
/dev/sda1
30G 15G 14G 53% /
/dev/sda3
3.9G 473M 3.3G 13% /tmp
tmpfs
2.0G 943M 1.1G 48% /dev/shm
/dev/hdc
3.7G 3.7G 0 100% /mnt
dbfs
1.5M 57K 1.4M 4% /u01/dbfs
五、测试
[oracle@mytest ~]$ ll /u01
drwxr-xr-x 3 root
root
0 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 2
14:28:49 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release
11.2.0.1.0- 64bit Production
With the Partitioning, OLAP, Data Mining andReal
Application Testing options
Pathtype=1 表示文件 2 表示目录
[sql] view plaincopyprint?
1. SQL select pathname , item , pathtype from t_dir1 ;
2. PATHNAME ITEM PATHTYPE
3. ——————– —————————-
4. /test.t test.t 1
5. /sub_dir sub_dir 2
6. /sub_dir/test2.t test2.t 1
7. / ROOT 2
8. /.sfs .sfs 2
9. /.sfs/attributes attributes 2
10. /.sfs/tools tools 2
11. /.sfs/snapshots snapshots 2
12. /.sfs/RECYCLE RECYCLE 2
13. /.sfs/content content 2
14.
15. 10 rows selected.
SQL
select pathname , item , pathtype from
t_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 rows
selected.
配置完成
以上是“oracle 中 dbfs 文件系统怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!