Database File System cria File System dentro de tabelas do Oracle que armazenam em formato de Oracle Secure Files LOBs. Acesso ao FS é utilizado via client, dbfs_client, o client é instalado por default no server e pode também ser instalado no client, permitindo acesso remoto. DBFS é suportado somente em linux e solaris, ele utiliza o FUSE Project, o qual é similar a um NTF, porém com a camada de Banco de dados.
Configurando o Oracle.
Deve-se criar um usuário e tablespace para o DBFS, o usuário em questão deve ter também o grant de dbfs_role.
Para criar o FS na tablespace deve ser executado o dbfs_create_filesystem.sql com o usuario com grant de dbfs_role.
CONN / AS SYSDBA
CREATE TABLESPACE dbfs_ts
DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
CONN / AS SYSDBA
CREATE USER dbfs_user IDENTIFIED BY oracle
DEFAULT TABLESPACE dbfs_ts QUOTA UNLIMITED ON dbfs_ts;
GRANT CREATE SESSION, RESOURCE, CREATE VIEW, DBFS_ROLE TO dbfs_user;
cd $ORACLE_HOME/rdbms/admin
sqlplus dbfs_user/dbfs_user
SQL> @dbfs_create_filesystem.sql dbfs_ts staging_area
Instalando o FUSE
# yum install kernel-devel
# yum install fuse fuse-libs
Montando o FS.
O aplicativo dbfs_client é utlizado para montar o FS.
Primeiro montamos o FS no so como root:
# mkdir /mnt/dbfs
# chown oracle:oinstall /mnt/dbfs
# echo "/usr/local/lib" >> /etc/ld.so.conf.d/usr_local_lib.conf# export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_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
E para montar o FS com o banco utlizamos o dbfs_client:
$ # Connection prompts for password and holds session.
$ dbfs_client dbfs_user@DB11G /mnt/dbfs
$ # Connection retrieves password from file and releases session.
$ nohup dbfs_client dbfs_user@DB11G /mnt/dbfs < passwordfile.f &
$ # Connection authenticates using wallet and releases session.
$ nohup dbfs_client -o wallet /@DB11G_DBFS_USER /mnt/dbfs &
$ ls -al /mnt/dbfs
total 8
drwxr-xr-x 3 root root 0 Jan 6 17:02 .
drwxr-xr-x 3 root root 4096 Jan 6 14:18 ..
drwxrwxrwx 3 root root 0 Jan 6 16:37 staging_area
$ ls -al /mnt/dbfs/staging_area
total 0
drwxrwxrwx 3 root root 0 Jan 6 16:37 .
drwxr-xr-x 3 root root 0 Jan 6 17:02 ..
drwxr-xr-x 7 root root 0 Jan 6 14:00 .sfs
$