初始化参数
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命令进行重新设置。
本文OracleSecureFile的功能第1/4页到此结束。用平常心来生活,用惭愧心来待人。小编再次感谢大家对我们的支持!