手机
当前位置:查字典教程网 >编程开发 >Oracle教程 >Oracle SecureFile的功能第1/4页
Oracle SecureFile的功能第1/4页
摘要:SecureFile功能是oracle11g中对大对象(LOB)存储格式的完全重新设计实现,原来的LOB存储格式现在通称为BASIXFILE...

SecureFile功能是oracle 11g中对大对象(LOB)存储格式的完全重新设计实现,原来的LOB存储格式现在通称为BASIXFILE,它仍然是默认的存储方法,但是SECURFILE关键字开启了新的存储方法,它允许加密、利用压缩节约空间和数据重复消除。

初始化参数

SecureFile功能在初始化参数COMPATIBLE设置我11.0.0.0.0或更高时可用。

DB_SECUREFILE初始化参数控制数据库对LOB存储格式的默认行为,允许的值有:

◆ALWAYS - 在ASSM表空间中的所有LOB对象以SecureFile LOB的格式创建,在非ASSM表空间中的所有LOB对象以BasicFile LOB的格式创建(除非明确地指出要以SecureFile格式创建),在没有指定选项的情况下,BasicFile存储格式选项被忽略,SecureFile默认存储格式选项被使用。

◆ FORCE - 所有LOB对象都以SecureFile LOB格式创建,如果是在一个非ASSM表空间中创建LOB,会出现错误,在没有指定选项的情况下,BasicFile存储格式选项被忽略,SecureFile默认存储格式选项被使用。

◆PERMITTED - 默认设置,当使用了SECUREFILE关键字时它允许SecureFile LOB存储格式,默认存储方法是BASICFILE。

◆NEVER - 不允许创建SecureFile LOB对象。

◆IGNORE - 防止创建SecureFile LOB,使用SecureFile存储选项时忽略所有错误。

这个参数是动态的,因此它可以使用ALTER SYSTEM命令设置。

SQL>ALTERSYSTEMSETdb_securefile='FORCE';

Systemaltered.

SQL>ALTERSYSTEMSETdb_securefile='PERMITTED';

Systemaltered.

SQL>

下面的例子假设DB_SECUREFILE初始化参数设置为默认值PERMITTED。

创建SecureFile LOB

基础

SecureFile LOB通过在LOB存储子句后添加SECUREFILE关键字来创建,下面的代码显示创建了两个表,第一个使用的是原来的存储格式,第二个使用的是SecureFile存储格式。

CREATETABLEbf_tab(

idNUMBER,

clob_dataCLOB

)

LOB(clob_data)STOREASBASICFILE;

INSERTINTObf_tabVALUES(1,'MyCLOBdata');

COMMIT;

CREATETABLEsf_tab(

idNUMBER,

clob_dataCLOB

)

LOB(clob_data)STOREASSECUREFILE;

INSERTINTOsf_tabVALUES(1,'MyCLOBdata');

COMMIT;

LOB重复消除

SecureFile的DEDUPLICATE选项允许在表或分区一级上的一个LOB内消除重复数据,正如你预料的那样,这个技术与预防重写导致系统开销增大,KEEP_DUPLICATE选项明确地阻止重复消除,下面的例子对比了普通的SecureFile和重复消除SecureFile的空间使用情况。

CREATETABLEkeep_duplicates_tab(

idNUMBER,

clob_dataCLOB

)

LOB(clob_data)STOREASSECUREFILEkeepdup_lob(

KEEP_DUPLICATES

);

CREATETABLEdeduplicate_tab(

idNUMBER,

clob_dataCLOB

)

LOB(clob_data)STOREASSECUREFILEdedup_lob(

DEDUPLICATE

);

DECLARE

l_clobCLOB:=RPAD('X',10000,'X');

BEGIN

FORiIN1..1000LOOP

INSERTINTOkeep_duplicates_tabVALUES(i,l_clob);

ENDLOOP;

COMMIT;

FORiIN1..1000LOOP

INSERTINTOdeduplicate_tabVALUES(i,l_clob);

ENDLOOP;

COMMIT;

END;

/

EXECDBMS_STATS.gather_table_stats(USER,'keep_duplicates_tab');

EXECDBMS_STATS.gather_table_stats(USER,'deduplicate_tab');

COLUMNsegment_nameFORMATA30

SELECTsegment_name,bytes

FROMuser_segments

WHEREsegment_nameIN('KEEPDUP_LOB','DEDUP_LOB');

SEGMENT_NAMEBYTES

----------------------------------------

DEDUP_LOB262144

KEEPDUP_LOB19267584

2rowsselected.

SQL>

注意重复消除段要小很多,空间节约依赖于LOB段内的重复程度,重复模式可以使用ALTER TABLE命令进行重新设置。

当前1/4页1234下一页阅读全文

【Oracle SecureFile的功能第1/4页】相关文章:

Oracle如何直接运行OS命令(下)第1/2页

Oracle性能究极优化 上第1/2页

Oracle如何直接运行OS命令(上)第1/2页

oracle SCN跟TIMESTAMP之间转换

oracle 字符串转成行

Oracle Number型的深入理解

Oracle数据库的十种重新启动步骤

Oracle 9i 数据库异常关闭后的启动

oracle中一些常用的命令

oracle distinct 的使用方法

精品推荐
分类导航