認識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)
- )
- )
$ tnsping DBFS_TEST
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)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle dbfs檔案系統介紹及使用測試Oracle
- Databricks 第5篇:Databricks檔案系統(DBFS)
- 在exadata環境下配置dbfs檔案系統
- 作業系統認證與ORACLE密碼檔案認證方式作業系統Oracle密碼
- 認識Oracle控制檔案(10g) - finalOracle
- 重新認識口令檔案
- 準備開始認識SQL Server檔案系統及後臺程式SQLServer
- 認識Oracle控制檔案(10g) 2 - finalOracle
- 認識Oracle控制檔案(10g) 3 - finalOracle
- 【登陸認證】oracle的作業系統認證和口令檔案認證方式(轉載)Oracle作業系統
- 樹莓派Linux——檔案系統認知樹莓派Linux
- 關於ORACLE作業系統認證和ORAPWD密碼檔案認證SYSDBA許可權Oracle作業系統密碼
- Oracle 重要檔案系統解釋Oracle
- Oracle 叢集檔案系統 (OCFS)Oracle
- Oracle OS 認證, 口令檔案Oracle
- 認識 Linux 檔案屬性及檔案配置(轉)Linux
- Oracle RAC NFS掛載檔案系統OracleNFS
- oracle&linux檔案系統cacheOracleLinux
- 認識Linux下Ext2與Ext3檔案系統的區別(轉)Linux
- 1.認識作業系統作業系統
- 用一個例項專案重新認識分散式系統分散式
- 檔案和檔案系統
- VM配置檔案Setting,GridFTP認識FTP
- cloudflare認識1(上傳檔案到桶)Cloud
- 初相識 | 全方位認識 sys 系統庫
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- Oracle OS認證與口令檔案認證詳解Oracle
- Oracle 作業系統認證Oracle作業系統
- Oracle作業系統認證Oracle作業系統
- UNIX根檔案系統和附加檔案系統
- Oracle在NFS檔案系統上建庫OracleNFS
- ORACLE EBS 系統檢視檔案版本資訊Oracle
- oracle將控制檔案從裸裝置遷移到檔案系統Oracle
- 檔案系統
- 系統認識JavaScript正規表示式JavaScript
- 系統學習 TypeScript(一)——認識 TypeScriptTypeScript
- 系統學習 TypeScript(六)——認識介面TypeScript
- freebsd 系統磁碟及gmirror認識