在 Oracle 11g R2 实现DBFS文件系统

来源:互联网 发布:sql图书馆管理系统 编辑:程序博客网 时间:2024/04/29 14:19

本文所用的环境:(#  root    $ Oracle)

                         Oracle 11.2.0.1 

                         RedHat 5.8 X64

  这次的实验目的是想在DBFS文件系统上存放图片、在sql developer 能看到图片,在很多文章说了RAC+OGG 要用到DBFS系统

  要实现DBFS 文件系统 需要安装 两个软件包kernel-devel和FUSE

  # rpm -qa |grep kernel-devel
     kernel-devel-2.6.18-308.el5

  # rpm -qa |grep fuse
     fuse-libs-2.7.4-8.el5
     fuse-devel-2.7.4-8.el5
     fuse-devel-2.7.4-8.el5
     fuse-2.7.4-8.el5
     fuse-libs-2.7.4-8.el5

如果没有安装可以使用YUM 安装

  #  yum install kernel-devel*  fuse*


  # /sbin/depmod  
  # /sbin/modprobe fuse
  # chmod 666 /dev/fuse 
  # echo "/sbin/modprobe fuse" >> /etc/rc.modules
  # chmod +x /etc/rc.modules

       -------这里应该是对 FUSE进行一些配置

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

       下面就是在 Oracle 用户操作

$  sqlplus / as sysdba

   SQL>  create tablespace mydbfs  datafile '/u01/app/oracle/oradata/oradb1/mydbfs.dbf' size 10M     ------创建存储的表空间

   SQL>  create user dbfs identified by oracle default tablespace mydbfs;                            -----创建用户

   SQL> grant connect,resource ,create table,create procedure,dbfs_role to dbfs;                     -----授予用户所需要的权限

   SQL>  conn dbfs/oracle

   SQL>   @/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/dbfs_create_filesystem.sql mydbfs dbfs_area; ---使用这个SQL创建了文件系统了 

                                                                                                            ----mydbfs 表空间

                                                                                                            ---- dbfs_area 存储的区域

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

        本来是可以挂载文件系统就行了,,可是 dbfs_client 客户端 需要一些库


# echo "/usr/local/lib" >> /etc/ld.so.conf.d/usr_local_lib.conf
# export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
# ln -s $ORACLE_HOME/lib/libclntsh.so.11.1 /usr/local/lib/libclntsh.so.11.1
# ln -s $ORACLE_HOME/lib/libnnz11.so /usr/local/lib/libnnz11.so
# ln -s /lib64/libfuse.so.2 /usr/local/lib/libfuse.so.2
# cd /usr/local/lib
# ls -l
total 0
lrwxrwxrwx 1 root root 35 Sep  1 16:45 libclntsh.so.11.1 -> export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
lrwxrwxrwx 1 root root 19 Sep  1 16:46 libfuse.so.2 -> /lib64/libfuse.so.2
lrwxrwxrwx 1 root root 29 Sep  1 16:46 libnnz11.so -> export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so
# ldconfig
-----------------终于完成了繁琐的步骤了()

-----------------------------------------------------------------------------------------------------------------------------
现在可以mount 文件系统了 

$ mkdir /u01/app/oracle/mydbfs -p
$ dbfs_client dbfs@localhost -o rw,user,direct_io /u01/app/oracle/mydbfs
fuse: failed to exec fusermount: Permission denied
----报错了 错误fusermount oracle用户没有执行权限
$ su -
# which fusermount

/bin/fusermount
# ll /bin/fusermount 
-rwsr-x--- 1 root fuse 27072 Apr 25  2009 /bin/fusermount
# chmod +x /bin/fusermount

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

dbfs_client dbfs@oradb1 -o rw,user,direct_io /u01/app/oracle/mydbfs

---- oradb11 TNSNAME 文件里面的本地命名:

dbfs 用户名(不知道为什么用户名不接密码)

/u01/app/oracle/mydbfs 挂载到哪里

password: ----- 输入dbfs用户的密码 ---输完之后 这里一直在等待的状态,可以不用管了、因为这是前台挂载方式



   

  

0 0