Rumah > Artikel > pangkalan data > How to create DBFS file system
DBFS是oracleExadata提供的一种的集群文件系统,他是通过创建一个表空间,并将该表空间通过一系列操作,挂载成为文件系统,为Exadata各个节点提供文件系统服务。
DBFS是oracle Exadata提供的一种的集群文件系统,他是通过创建一个表空间,并将该表空间通过一系列操作,挂载成为文件系统,为Exadata各个节点提供文件系统服务。
DBFS一般都是在客户初次部署的时候,由oracle远程工程师通过固定的脚本,自动化部署全部的操作系统数据库的同时,将其建立。
这里说到的就是,在之前客户没有规划DBFS文件系统,但是后期打算手动添加的方法。
我的OS oracle linux
1.创建fuse用户组,并将oracle添加到这个组内。(注:dcli -g ~/dbs_group -l表示后面的命令式在~/dbs_group中列出的全部服务器上执行)
2.创建/etc/fuse.conf file并添加 user_allow_other. 赋予相应的权限到这个文件.
3.在所有的服务器上创建一个空的目录,用来作为DBFS文件系统的挂载点。
更改目录的属组,确保oracle可以正常访问与修改.
4.To pick up the additional group (fuse) membership for the oracle user on Linux or the workaround above on Solaris, Clusterware must be restarted. For example, to restart Clusterware on all nodes at the same time (non-rolling), you can use the following commands as root:
5.创建一个数据库表空间,作为DBFS文件系统的存储空间. 如何创建表空间,请参考 Note 1191144.1
创建一个表空间(表空间名dbfsts)为将来存储文件使用,可以根据你的需求创建:大小,是否扩展和bigfile or small file等,完全随意
6.创建用户,该用户是后续管理DBFS使用的
7.通过调用 dbfs_create_filesystem.sql 脚本,创建文件系统
---至此,已经完成DBFS文件系统的安装,下面是对DBFS的挂载和管理---
有两种方式来挂载之前创建的表空间为DBFS
第一种方法是通过安装rpm包,使用dbfs_client命令来实现DBFS的挂载,但是不能使用wallet的功能(注意这里的wallet不是数据库中的wallet,它只是保存 dbfs_user/dbfs_passwd 的一个加密文件)
第二种方法是使用 Oracle Wallet来存储密码和使用mount命令
8. The second option is to use the Oracle Wallet to store the password and make use of the mount command. The wallet directory ($HOME/dbfs/wallet in the example here) may be any oracle-writable directory (creating a new, empty directory is recommended). All commands in this section should be run by the oracle user unless otherwise noted.)
9. Create a new TNS_ADMIN directory ($HOME/dbfs/tnsadmin) for exclusive use by the DBFS mount script.
10. On each node, create the $HOME/dbfs/tnsadmin/sqlnet.ora file with the same contents on each node after making the proper substitution for
11. Create a wallet directory on one database server as the oracle user. For example:
12. Ensure that the TNS entry specified above (fsdb.local in the example) is defined and working properly (checking with "TNS_ADMIN=/home/oracle/dbfs/tnsadmin tnsping fsdb.local" is a good test).
下载脚本 mount-dbfs.sh 到一个DB节点上的临时位置 (如 /tmp/mount-dbfs.sh). 运行 dos2unix防止文件格式不兼容。
mount-dbfs.sh 脚本是后续挂载DBFS文件系统的时候都要调用的,其中涉及一下参数,需要根据实际环境进行设置
13. 修改后将文件拷贝到每个服务器的适当目录下,这里就使用GI_HOME/crs/script,香港服务器,并使用root设置相应的权限
14. 通过以下脚本,来实现将DBFS作为一种资源注册到CRS,以使用CRS来管理DBFS。使用数据库的owner(既oracle)来执行以下脚本,根据实际情况适当修改ORACLE_HOME(其为grid home) 和DBNAME(数据库名),还可以注册多个DBFS文件系统到CRS,香港服务器,不过这里就不讲了,有机会再更新。
15.通过Oracle Clusterware来管理 DBFS挂载与卸载
资源注册成功后,网站空间,可以通过crsctl stat res dbfs_mount 来查看到 dbfs_mount 资源,其所有的节点状态是 OFFLINE:
17.执行crsctl start resource dbfs_mount,将会挂载DBFS到全部的节点:
18.挂载成功后,你可以通过df -h查看到DBFS文件系统的信息 Also, the default startup for this resource is "restore" which means that if it is online before Clusterware is stopped, it will attempt to come online after Clusterware is restarted. For example:
19.DBFS配置过程中,遇到一段插曲
通过crsctl显示状态是online,但是文件系统不能被访问,当访问的时候,会遇到df: `/dbfs_direct': Input/output error错误,后来应用patch 13340960,问题解决。
详情请参考oracle官方文档:
Configuring DBFS on Oracle Database Machine (Doc ID 1054431.1)
Accessing Dbfs Using Oracle Wallet Fails With Input/output error (Doc ID 1358194.1)
本文出自 “小小狗窝” 博客,谢绝转载!