源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Oracle SecureFile的功能第1/4页

  • 时间:2022-03-31 22:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Oracle SecureFile的功能第1/4页
SecureFile功能是oracle 11g中对大对象(LOB)存储格式的完全重新设计实现,原来的LOB存储格式现在通称为BASIXFILE,它仍然是默认的存储方法,但是SECURFILE关键字开启了新的存储方法,它允许加密、利用压缩节约空间和数据重复消除。   [b]初始化参数[/b]   SecureFile功能在初始化参数COMPATIBLE设置我11.0.0.0.0或更高时可用。   DB_SECUREFILE初始化参数控制数据库对LOB存储格式的默认行为,允许的值有:   ◆ALWAYS - 在ASSM表空间中的所有LOB对象以SecureFile LOB的格式创建,在非ASSM表空间中的所有LOB对象以BasicFile LOB的格式创建(除非明确地指出要以SecureFile格式创建),在没有指定选项的情况下,BasicFile存储格式选项被忽略,SecureFile默认存储格式选项被使用。   ◆[b]FORCE[/b] - 所有LOB对象都以SecureFile LOB格式创建,如果是在一个非ASSM表空间中创建LOB,会出现错误,在没有指定选项的情况下,BasicFile存储格式选项被忽略,SecureFile默认存储格式选项被使用。   ◆PERMITTED - 默认设置,当使用了SECUREFILE关键字时它允许SecureFile LOB存储格式,默认存储方法是BASICFILE。   ◆NEVER - 不允许创建SecureFile LOB对象。   ◆IGNORE - 防止创建SecureFile LOB,使用SecureFile存储选项时忽略所有错误。   这个参数是动态的,因此它可以使用ALTER[b]SYSTEM[/b]命令设置。
  SQL> ALTER SYSTEM [b]SET[/b] db_securefile = 'FORCE';   System altered.   SQL> ALTER SYSTEM SET db_securefile = 'PERMITTED';   System altered.   SQL>
  下面的例子假设DB_SECUREFILE初始化参数设置为默认值PERMITTED。   创建SecureFile LOB  [b] 基础[/b]   SecureFile LOB通过在LOB存储子句后添加SECUREFILE关键字来创建,下面的代码显示创建了两个表,第一个使用的是原来的存储格式,第二个使用的是SecureFile存储格式。
  CREATE [b]TABLE[/b] bf_tab (   id NUMBER,   clob_data CLOB   )   LOB(clob_data) STORE AS BASICFILE;   INSERT INTO bf_tab VALUES (1, 'My CLOB [b]data[/b]');   [b]COMMIT[/b];   CREATE TABLE sf_tab (   id NUMBER,   clob_data CLOB   )   LOB(clob_data) STORE AS SECUREFILE;   INSERT INTO sf_tab VALUES (1, 'My CLOB data');   COMMIT;
[b]LOB重复消除[/b]   SecureFile的DEDUPLICATE选项允许在表或分区一级上的一个LOB内消除重复数据,正如你预料的那样,这个技术与预防重写导致系统开销增大,KEEP_DUPLICATE选项明确地阻止重复消除,下面的例子对比了普通的SecureFile和重复消除SecureFile的空间使用情况。
  CREATE [b]TABLE[/b] keep_duplicates_tab (   id NUMBER,   clob_data CLOB   )   LOB(clob_data) STORE AS SECUREFILE keepdup_lob(   KEEP_DUPLICATES   );   CREATE TABLE deduplicate_tab (   id NUMBER,   clob_data CLOB   )   LOB(clob_data) STORE AS SECUREFILE dedup_lob (   DEDUPLICATE   );   DECLARE   l_clob CLOB := RPAD('X', 10000, 'X');   BEGIN   FOR i IN 1 .. 1000 [b]LOOP[/b]   INSERT INTO keep_duplicates_tab VALUES (i, l_clob);   END LOOP;   [b]COMMIT[/b];   FOR i IN 1 .. 1000 LOOP   INSERT INTO deduplicate_tab VALUES (i, l_clob);   END LOOP;   COMMIT;   END;   /   EXEC DBMS_STATS.gather_table_stats(USER, 'keep_duplicates_tab');   EXEC DBMS_STATS.gather_table_stats(USER, 'deduplicate_tab');   COLUMN segment_name [b]FORMAT[/b] A30   SELECT segment_name, bytes   FROM user_segments   WHERE segment_name IN ('KEEPDUP_LOB', 'DEDUP_LOB');   SEGMENT_NAME BYTES   ------------------------------ ----------   DEDUP_LOB 262144   KEEPDUP_LOB 19267584   2 rows selected.   SQL>
  注意重复消除段要小很多,空间节约依赖于LOB段内的重复程度,重复模式可以使用ALTER TABLE命令进行重新设置。
当前1/4页 [b]1[/b][url=http://www.1sucai.cn/article/18614_2.htm]2[/url][url=http://www.1sucai.cn/article/18614_3.htm]3[/url][url=http://www.1sucai.cn/article/18614_4.htm]4[/url][url=http://www.1sucai.cn/article/18614_2.htm]下一页[/url][url=http://www.1sucai.cn/article/18614_all.htm]阅读全文[/url]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部