oracle 11.2.0.2创建DBFS
来源:互联网 发布:手办淘宝店推荐贴吧 编辑:程序博客网 时间:2024/03/29 13:51
由于最近需要在项目中使用到外部表加DBFS的方式加载数据,所以需要创建DBFS
在此记录下创建的过程和遇到的问题
1、安装fuse
oracle enterprise linux 5.5的光盘中,在Server目录下找到fuse相关的rpm,安装相应fuse软件包
2、配置fuse(下面操作不知道有什么用,只是按照文档上操作)
/sbin/depmod
/sbin/modprobe fuse
chmod 666 /dev/fuse
echo "/sbin/modprobe fuse" >> /etc/rc.modules
chmod 700 /etc/rc.modules
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
ldconfig
3、链接数据库创建DBFS用户表空间
create tablespace bigfile dbfs datafile '+DATA/DBFS.dbf' size 1G;
4、创建dbfs数据库用户并赋权
create user dbfs identified by "oracle"
default tablespace dbfs
quota unlimited on dbfs ;
grant create session, create table, create procedure, dbfs_role to dbfs;
5、创建DBFS目录在操作系统上需要的目录
mkdir /home/oracle/DBFS
6、进入$ORACLE_HOME/rdbms/admin并用sqlplus连接数据库
sqlplus dbfs/oracle@dbname
@dbfs_create_filesystem_advanced.sql dbfs dbfs nocompress nodeduplicate noencrypt non-partition
7、配置dbfs的悬挂点
echo oracle> passwd.txt
nohup $ORACLE_HOME/bin/dbfs_clientdbfs@dbname -o direct_io /home/oracle/DBFS < passwd.txt &
fuse: failed to exec fusermount: Permission denied
权限不足,查看权限如下:
[root@rac11ga bin]# pwd
/usr/bin
[root@rac11ga bin]# ll fuse*
lrwxrwxrwx 1 root root 15 Apr 29 14:01 fusermount -> /bin/fusermount
[root@rac11ga bin]# ll /bin/fusermount
-rwsr-x--- 1 root fuse 27072 Jul 2 2009 /bin/fusermount
由环境变量PATH=/opt/oracle/product/11.2.0/dbhome_1/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
可知优先使用/bin/fusermount,所以权限不足:
对/bin目录下的可执行文件赋权
[root@rac11ga bin]# chmod a+x /bin/fusermount
执行成功
8、确认是否配置成功
ps -ef | grepdbfs_client 可以看到相应的进程
使用df命令可以看到挂载的DBFS目录
上面是使用oracle用户配置DBFS,但是在实际使用的时候有问题
当把外部表的目录指定为DBFS目录时报无法找到指定文件的异常。
通过查询,了解到需要使用dbfs_client的下面两个参数来配置dbfs的悬挂点
-o allow_root Allows root access to the filesystem.
This option requires setting 'user_allow_other' parameter in '/etc/fuse.conf'.
-o allow_other Allows other users access to the file system.
This option requires setting 'user_allow_other' parameter in '/etc/fuse.conf'.
但是在/etc目录下没有发现fuse.conf文件
手工在/etc目录下创建fuse.conf文件,并在文件中输入内容:user_allow_other并保存
使用命令nohup $ORACLE_HOME/bin/dbfs_clientdbfs@dbname -o direct_io,allow_root,allow_other /home/oracle/DBFS < passwd.txt &
悬挂DBFS,但是报错,说allow_root参数和allow_other参数相互包含,导致无法悬挂DBFS
但是如果只使用其中一个参数挂载DBFS,使用DBFS时还是报错,实在是悲剧啊。
后来想到一个变通的方法:在root用户下挂载,只指定allow_other参数,问题解决,外部表目录可以正常使用DBFS目录。
nohup $ORACLE_HOME/bin/dbfs_clientdbfs@dbname -o direct_io,allow_other /home/oracle/DBFS < passwd.txt &
注:后来听一个同事说,在oracle 11.2.0.1 上可以正常使用命令:
nohup $ORACLE_HOME/bin/dbfs_clientdbfs@dbname -o direct_io,allow_root,allow_other /home/oracle/DBFS < passwd.txt &
不晓得是什么问题导致在我安装的11.2.02上不行,需要深入学习了解。
- oracle 11.2.0.2创建DBFS
- oracle database filesystem (DBFS) 简单配置文档
- 在 Oracle 11g R2 实现DBFS文件系统
- hdu1401Solitaire(dbfs)
- hdu1043Eight(dbfs)
- dbFS计算
- DBFS框架
- dbfs 实施文档
- POJ 1077 eight DBFS
- 双向广搜(DBFS)
- uva 1601 dbfs搜索
- DBFS POJ1198 Solitaire
- 亡命逃窜(3DBFS)
- 亡命逃窜(3DBFS)
- oracle 创建
- 【Oracle】Oracle创建实例
- hdu2612Find a way(dbfs或者IDA*)
- HDU 1372 Knight Moves ( BFS & DBFS )
- Win7下安装VC6.0的完美解决方案
- 在国内当个程序员究竟钱途如何?2011程序员薪资调查报告出炉!
- 设置Google同步帐号
- linux常用基本命令
- Visual Studio 2008 + Wince 6.0
- oracle 11.2.0.2创建DBFS
- 读研还是找工作?
- CS5536中MFGPT时钟的实现
- 《深入理解计算机系统》笔记一:信息的表示与处理(1)——基本数据类型与字节序
- 冒泡排序bubbleSort
- c/c++字符串处理函数
- Git学习教程(一):git简介
- java 多线程(multithreading)(一)
- 【算法复习三】算法设计技巧与优化----算法设计技巧