Oracle SecureFile的功能

2016-02-19 09:11 4 1 收藏

图老师小编精心整理的Oracle SecureFile的功能希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

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 ALTER SYSTEM SET db_securefile = 'FORCE';
  System altered.
  SQL ALTER SYSTEM SET db_securefile = 'PERMITTED';
  System altered.
  SQL

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  创建SecureFile LOB

  基础

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


  CREATE TABLE bf_tab (
  id NUMBER,
  clob_data CLOB
  )
  LOB(clob_data) STORE AS BASICFILE;
  INSERT INTO bf_tab VALUES (1, 'My CLOB data');
  COMMIT;
  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;

LOB重复消除

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


  CREATE TABLE 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 LOOP
  INSERT INTO keep_duplicates_tab VALUES (i, l_clob);
  END LOOP;
  COMMIT;
  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 FORMAT 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页 1234下一页

来源:http://www.tulaoshi.com/n/20160219/1589848.html

延伸阅读
引言 在.NET应用程序中,我们有很多方法实现对Oracle数据库的访问。 但是从功能和性能上来分析,Oracle Data Provider for .NET(ODP.NET)无疑是我们最好的选择,它是Oracle专门为基于.NET的应用程序设计的一套接口,它的访问速度要远远快于其它方法。 本文将介绍Oracle Database的新功能之一:Change Notification。为了能更好...
Ref Cursor就是我们定义在服务器端的结果集的reference。 当我们打开一个Ref Cursor的时候,没有任何的数据返回到客户端,相反,数据在服务器上的地址将会被返回到客户端。这样用户就可以自己决定什么时间和以那种方式通过Ref Cursor去取数据。 在以前版本的ODP.NET中,我们可以通过Ref Cursor取数据,但是我们不能把Ref Cursor作为一个In...
如何让数据库能够实现自我调整,减轻数据库管理员的工作量,是甲骨文公司一直追求的目标。毕竟其数据库的复杂程度远远超出同类数据库; 而且,其数据库的维护成本也比其他数据库要高出不少。所以,甲骨文公司追求Oracle数据库的自我调整与优化,降低Oracle数据库的维护成本,也是可以理解的。 自我调整SGA与自我调整检查点,虽然是Orac...
    前面讲了ORACLE性能调优原则,但是可能有许多朋友不知道ORACLE优化机理到底是什么?下面作一简单说明。     解释     先说明一下,ORACLE有一个优化器(Optimizer),ORACLE的优化机理就是从Optimizer开始的。     明确两个概念:Optimizer 对ORACLE的优化方式有两种,一...
oracle官方文档:《concept》上面讲了oracle的体系和概念,很适合初学者看。 OCP的教学用书,也就是STUDY GUIDE(SG)。 Oracle8i 备份恢复手册 Oracle8高级管理与优化 Oracle8i PLSQL程序设计 Oracle8数据库管理员手册 以上书本都是机械工业出版社出版。

经验教程

970

收藏

63
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部