認識Oracle DBFS檔案系統
什麼是DBFS
DBFS,全稱為Oracle Database
Filesystem,這是一個類似於NFS的可共享的網路檔案系統,不同之處在於DBFS將檔案以SecureFiles
LOBs的形式儲存在資料庫中。
圖1-DBFS結構
相比較NFS,DBFS有諸多優點:
ü 除了可以使用標準的POSIX介面來訪問、操作檔案系統外,還支援PL/SQL、Java、OCI等方式方便的訪問、操作檔案系統;
ü 可以使用RMAN方便的將檔案系統備份到磁帶庫或者雲端儲存(目前只支援Amazon S3);
ü 可以使用DataGuard方便的使檔案系統做到高可用;
DBFS的安裝
同NFS一樣,DBFS也分為服務端和客戶端。為方便起見,實驗環境服務端和客戶端為同一臺機器,作業系統為Oracle Linux 6.5,資料庫為11.2.0.4,資料儲存使用ASM。
1、服務端的安裝
首要條件是要有一個正常執行的Oracle資料庫。需要先建立一個表空間用於DBFS的儲存:
- SQL> CREATE TABLESPACE DBFS_TEST_TBS DATAFILE '+DATA01' SIZE 1G;
- Tablespace created.
- SQL> CREATE USER DBFS_TEST IDENTIFIED BY DBFS_TEST DEFAULT TABLESPACE DBFS_TEST_TBS QUOTA UNLIMITED ON DBFS_TEST_TBS;
- User created.
- SQL> GRANT CREATE SESSION,RESOURCE,CREATE TABLE,CREATE PROCEDURE,DBFS_ROLE TO DBFS_TEST;
- Grant succeeded.
- SQL> conn DBFS_TEST/DBFS_TEST
- Connected.
- SQL> @?/rdbms/admin/dbfs_create_filesystem.sql DBFS_TEST_TBS DBFS_TEST_FS
- No errors.
- --------
- CREATE STORE:
- begin dbms_dbfs_sfs.createFilesystem(store_name => 'FS_DBFS_TEST_FS', tbl_name
- => 'T_DBFS_TEST_FS', tbl_tbs => 'DBFS_TEST_TBS', lob_tbs => 'DBFS_TEST_TBS',
- do_partition => false, partition_key => 1, do_compress => false, compression =>
- '', do_dedup => false, do_encrypt => false); end;
- --------
- REGISTER STORE:
- begin dbms_dbfs_content.registerStore(store_name=> 'FS_DBFS_TEST_FS',
- provider_name => 'sample1', provider_package => 'dbms_dbfs_sfs'); end;
- --------
- MOUNT STORE:
- begin dbms_dbfs_content.mountStore(store_name=>'FS_DBFS_TEST_FS',
- store_mount=>'DBFS_TEST_FS'); end;
- --------
- CHMOD STORE:
- declare m integer; begin m := dbms_fuse.fs_chmod('/DBFS_TEST_FS', 16895); end;
- No errors.
2、客戶端掛載
首先需要安裝Oracle Database Client,Client的安裝這裡不再多講。除了Client,還需要安裝幾個系統包kernel-devel、fuse、fuse-libs:
- # yum install kernel-devel
- # yum install fuse fuse-libs
- # echo "/usr/local/lib" >> /etc/ld.so.conf.d/usr_local_lib.conf
-
# cd /usr/local/lib
# export ORACLE_HOME=/u01/app/oracle/product/database/11.2.0/db_1
# ln -s $ORACLE_HOME/lib/libclntsh.so.11.1
# ln -s $ORACLE_HOME/lib/libnnz11.so
# ln -s /lib64/libfuse.so //不同的作業系統下,fuse-lib的路徑可能會不一樣 - #
-
# ldconfig
建立掛載點:
- # mkdir /dbfs_test_fs
- # chown oracle:oinstall /dbfs_test_fs
- $ cat >> tnsnames.ora
- DBFS_TEST =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = DBFS_TEST)(SERVER = DEDICATED)
- )
- )
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 26-MAY-2015 12:44:39
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = DBFS_TEST)(SERVER = DEDICATED)))
OK (10 msec)
- $ $ORACLE_HOME/bin/dbfs_client DBFS_TEST@DBFS_TEST /dbfs_test_fs
- Password:
- $ df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/mapper/vg_ogg-lv_sys 20G 15G 4.1G 78% /
- tmpfs 499M 287M 212M 58% /dev/shm
- /dev/sda1 477M 50M 403M 11% /boot
- /dev/mapper/vg_ogg-lv_data 18G 44M 17G 1% /data
- dbfs-DBFS_TEST@DBFS_TEST:/ 1023M 120K 1023M 1% /dbfs_test_fs
- $ cd /dbfs_test_fs/DBFS_TEST_FS
- $ cat > test
- fsdfad
- ^C
- $ ls -ltr
- total 1
- -rw-r--r--. 1 oracle oinstall 7 May 26 12:50 test
- $ cat test
- fsdfad
-
> desc DBFS_TEST.T_DBFS_TEST_FS
-
Name Null? Type
-
----------------------------------------------------------------------------------------- -------- ------------------------------------------------------------
-
VOLID NOT NULL NUMBER
-
CSNAP# NOT NULL NUMBER
-
LSNAP# NUMBER
-
PATHNAME NOT NULL VARCHAR2(1024)
-
ITEM NOT NULL VARCHAR2(256)
-
PATHTYPE NOT NULL NUMBER(38)
-
FILEDATA BLOB
-
POSIX_NLINK NUMBER(38)
-
POSIX_MODE NUMBER(38)
-
POSIX_UID NUMBER(38)
-
POSIX_GID NUMBER(38)
-
STD_ACCESS_TIME NOT NULL TIMESTAMP(6)
-
STD_ACL VARCHAR2(1024)
-
STD_CHANGE_TIME NOT NULL TIMESTAMP(6)
-
STD_CONTENT_TYPE VARCHAR2(1024)
-
STD_CREATION_TIME NOT NULL TIMESTAMP(6)
-
STD_DELETED NOT NULL NUMBER(38)
-
STD_GUID NOT NULL NUMBER(38)
-
STD_MODIFICATION_TIME NOT NULL TIMESTAMP(6)
-
STD_OWNER VARCHAR2(32)
-
STD_PARENT_GUID NOT NULL NUMBER(38)
-
STD_REFERENT VARCHAR2(1024)
-
OPT_HASH_TYPE VARCHAR2(32)
-
OPT_HASH_VALUE VARCHAR2(128)
-
OPT_LOCK_COUNT NUMBER(38)
-
OPT_LOCK_DATA VARCHAR2(128)
-
OPT_LOCK_STATUS NUMBER(38)
-
-
> SELECT VOLID,PATHNAME,ITEM FROM DBFS_TEST.T_DBFS_TEST_FS;
-
-
VOLID PATHNAME ITEM
-
---------- ------------------------------------------------------------ ------------------------------------------------------------
-
0 /test test
-
0 / ROOT
-
0 /.sfs .sfs
-
0 /.sfs/attributes attributes
-
0 /.sfs/tools tools
-
0 /.sfs/snapshots snapshots
-
0 /.sfs/RECYCLE RECYCLE
- 0 /.sfs/content content
需要注意的是執行掛載操作的的視窗不能關閉,掛載操作也不能CTRL+C結束,否則掛載點也就斷開了。所以這種方式只適合臨時使用,我們可以使用nohup將掛載放在後臺,這樣就能保證檔案系統能一直正常使用了:
- $ nohup $ORACLE_HOME/bin/dbfs_client DBFS_TEST@DBFS_TEST /dbfs_test_fs < dbfs_test_password &
- [1] 4789
- $ cat dbfs_test_password
- DBFS_TEST
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13885898/viewspace-1672059/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Databricks 第5篇:Databricks檔案系統(DBFS)
- Oracle RAC NFS掛載檔案系統OracleNFS
- 樹莓派Linux——檔案系統認知樹莓派Linux
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- 檔案和檔案系統
- 檔案系統
- cloudflare認識1(上傳檔案到桶)Cloud
- 檔案系統(五):exFAT 檔案系統原理詳解
- Linux系統檔案系統及檔案基礎篇Linux
- 用一個例項專案重新認識分散式系統分散式
- oracle匯入dmp檔案win10怎麼操作_win10系統oracle如何匯入dmp檔案OracleWin10
- 分散式檔案系統(HDFS)與 linux系統檔案系統 對比分散式Linux
- 初相識 | 全方位認識 sys 系統庫
- 檔案系統(十):一文看懂 UBI 檔案系統
- 【檔案系統】嵌入式檔案系統Fatfs簡介
- 408 知識點筆記——作業系統(檔案系統、裝置管理)筆記作業系統
- debugfs檔案系統
- Linux檔案系統Linux
- FUSE檔案系統
- 檔案系統安全
- [Linux]檔案系統Linux
- 系統認識JavaScript正規表示式JavaScript
- 系統學習 TypeScript(一)——認識 TypeScriptTypeScript
- 系統學習 TypeScript(六)——認識介面TypeScript
- 檔案系統(四):FAT32檔案系統實現原理
- 檔案系統(十一):Linux Squashfs只讀檔案系統介紹Linux
- 檔案描述符和檔案系統
- Oracle叢集檔案系統(OCFS2)使用者指南(zt)Oracle
- 根檔案系統簡介與BusyBox構建根檔案系統
- Linux 檔案系統與日誌分析的相關知識Linux
- exFAT 檔案系統指南
- 分散式檔案系統分散式
- 論Linux檔案系統Linux
- Linux AUFS 檔案系統Linux
- linux的檔案系統Linux
- 檔案系統基礎
- Mac的檔案系統Mac
- 配置表 | 全方位認識 sys 系統庫
- Linux作業系統的認識和使用Linux作業系統