PCTVERSION:LOB一致读需要的系统空间。一旦LOB申请超过PCTVERSION的值,ORACLE就会收旧的空间并REUSE之。
CACHE:使用SGA区的DB BUFFER CACHE处理LOB的READ/WRITE。
NOCACHE LOGGING:不使用SGA区的BUFFER,数据的改变纪录到REDO LOG。
存取LOB比较频繁时,使用CACHE
存取LOB不频繁时,使用NOCACHE
NOCACHE NOLOGGING:不使用SGA区的BUFFER和REDO LOG
INDEX子句
INDEX lob_index_segtment_name
INITTRANS integer
MAXTRANS integer
TABLESPACE tablespace_name
STORAGE storage子句
如果没有设置LOB存储参数和INDEX STROAGE,则采用如下缺省值
CHUNK=1 DB_BLOCK
PCTVERSION=10
NOCACHE
NOLOGGING
例子:
CREATE TABLE APARTMENTS (
floor_plan BLOB,
contract CLOB,
name VARCHAR2(10))
LOB (floor_plan, contract)STORAGE AS(
STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0)
CHUNK 10
PCTVERSION 20
NOCACHE
NOLOGGING
INDEX (INITIAL 100K NEXT 100K)
);
5、内部LOB的并发
LOB的读一致和其他ORACLE类型一样,但是它是在CHUNK级别上作VERSION的。
6、外部LOB
ORACLE8允许定义BFILE类型,可以把外部文件和BFILE对象连接起来,同时能提供BFILE的安全机制。
BFILE对处理不需要transaction控制的OS文件很有用处。
对BFILE的处理需要DBMS_LOB或者OCI。
BFILE必须是READ-ONLY的,文件应该放在ORACLE能存取的地方。如果删除BFILE对象,外部文件并不删除。
例子:
CREATE TABLE home_page(
EMPLOYEE REF EMPLOYEE_TYP,
LAST_UPDATE DATE,
HOMEPAGE BFILE);
CREATE TYPE personal_info_typ AS OBJECT
( EMPLOYEE REF employee_typ,
PICTURE BFILE,
THUMBPRINT BFILE,
REINAPRINT BFILE
);
其实在BFILE对应的列或者属性中存放的是BFILE的位置,即是物理文件的位置。
读BFILE不通过SGA.
7、BFILE的安全
ORACLE8提供安全机制。文件必须和DB在一台机器上,读取不存在文件的timeout由os决定。可以和内部LOB的读取方法一致,但是必须注意:文件的权限、文件系统空间限制、其他对文件的维护、OS允许的最大文件大小。
ORACLE8不对BFILE采取TRANSACTION的支持,ORACLE的BACKUO和RECOVERY也不支持BFILE。
8、目录DIRECTORY
这是ORACLE为了管理BFILE引入的新元素,它指定SERVER文件系统的目录,可以把文件系统的目录抽象为数据库对象,更具有灵活性。
DIRECTORY由DBA建立,系统用户拥有,通过GRANT/REVOKE来确定哪些用户有权限。
CREATE OR REPLACE DIRECTORY 目录名 AS 路径名






