当前位置: 首页 > Oracle, oracle 10g, oracle 11g > 正文

我所了解的oracle11g新特性securefiles

Oracle数据库11g第1版开始,Oracle引入SecureFiles,一个新的LOB存储架构。SecureFiles对大对象(LOB)数据类型可以大幅度的提高性能、可管理性和简化应用的开发。
可以init.ora文件中设置db_securefile初始化参数来确定是否启用SecureFiles,这个参数是动态参数,可通过alter sysytem命令修改,该参数有以下几个值:
PERMITTED:允许创建SecureFiles(默认)
NEVER:不允许创建SecureFiles
ALWAYS:强制所有的LOBs都必须要创建SecureFiles
IGNORE:不允许创建SecureFiles并且忽略由强制BasicFiles使用SecureFiles特性而引起的任何错误。

如果指定值为NEVER,任何LOBs都将以BasicFiles来创建,所有的指定的SecureFiles的存储选项和特性都将报错。
如果指定值为ALWAYS,所有系统中的LOBs都以SecureFiles来创建,LOB必须在ASSM(Automatic Segment Space Management)表空间中创建,否则会产生错误。任何指定的BasicFile存储选项都将会被忽略 。
不能在非ASSM管理的空间system表空间使用securefiles lob
SecureFiles提供了智能压缩、删除重复数据、透明加密等组件:
压缩:可以压缩SecureFiles来节省磁盘空间,降低I/O和记录重做日志的开销。压缩等级分为低级压缩、中级压缩和高级压缩,默认压缩级别是中级压缩。
下面是建立压缩SecureFiles LOB列的例子:

CREATE TABLE t1 (a CLOB)
         LOB(a) STORE AS SECUREFILE(
         COMPRESS LOW  );

–COMPRESS 后加LOW为低级压缩,加HIGH为高级压缩,什么也
不加为默认中级压缩,将COMMPRESS改为NOCOMMPRESS为不
压缩。
创建一个分区压缩SecureFiles的LOB列

  CREATE TABLE t1 ( REGION  VARCHAR2(20), a BLOB)
       LOB(a) STORE AS SECUREFILE (
       CACHE
       )
       PARTITION BY LIST (REGION) (
       PARTITION p1 VALUES ('x', 'y')
       LOB(a) STORE AS SECUREFILE (
       COMPRESS
       ),
       PARTITION p2 VALUES (DEFAULT)
       );

删除重复数据:自动检测重复的SecureFiles LOB数据并且只保留一份拷贝空间来实现节省磁盘存储,减少I/O和重做日志记录的消耗。删除重复操数据作可以在表级或者是分区级别上指定,但是不能跨越分区的LOBS。
示例:

 CREATE TABLE t1 ( a CLOB)
     LOB(a) STORE AS SECUREFILE (
     DEDUPLICATE);

DEDUPLICATE为删除重复记录,KEEP_DUPLICATES为不
删除重复记录。
在一个分区上创建一个重复数据删除SecureFiles的LOB列

CREATE TABLE t1 ( REGION VARCHAR2(20), a BLOB)
       LOB(a) STORE AS SECUREFILE (
       CACHE
        )
       PARTITION BY LIST (REGION) (
       PARTITION p1 VALUES ('x', 'y')
       LOB(a) STORE AS SECUREFILE (
       DEDUPLICATE
        ),
       PARTITION p2 VALUES (DEFAULT)
       );

加密:加密存储LOB数据并且可以任意的读和写来提供更强大
的数据安全性
encrypt_algorithm表示的加密算法的名称。有效的算法是:
AES192(默认),3DES168,AES128和AES256。
创建一个特定的加密算法SecureFiles的LOB列

CREATE TABLE t1 ( a CLOB ENCRYPT   USING 'AES128')
      LOB(a) STORE AS SECUREFILE (
      CACHE);

创建一个指定密钥的SecureFiles的LOB列

 CREATE TABLE t1 ( a CLOB ENCRYPT IDENTIFIED BY foo)
      LOB(a) STORE AS SECUREFIL-0-E (
      CACHE
      );

下面是一个创建压缩、删除重复记录和透明加密Securefiles
LOB的例子:

 create table t1(
      id number,a blob)
      lob(a) store as securefile(
    compress deduplicate encrypt identified
      by  "xxxx");

可以使用ALTER TABLE table_name MODIFY来修改当前的Securefiles的各种属性。
例如:
修改LOB列为压缩

ALTER TABLE t1 MODIFY LOB(a) (COMPRESS);

修改LOB列为删除重复记录

     ALTER TABLE t1 MODIFY LOB(a) (DEDUPLICATE);

修改LOB列为透明加密

ALTER TABLE t1 MODIFY LOB(a) (ENCRYPT IDENTIFIED BY XXXX);

在创建和修改LOB列加密的时候,可能会遇到ORA-28368无法自动创建wallet和ORA-28353wallet未打开错误,原因是wallet密钥的存放目录不存在,解决方法是创建密钥存放的默认目录或者在sqlnet.ora文件中指定密钥的存放目录。

本文固定链接: http://www.dbdream.com.cn/2011/09/%e6%88%91%e6%89%80%e4%ba%86%e8%a7%a3%e7%9a%84oracle11g%e6%96%b0%e7%89%b9%e6%80%a7securefiles/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2011年09月08日发表在 Oracle, oracle 10g, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 我所了解的oracle11g新特性securefiles | 信春哥,系统稳,闭眼上线不回滚!
关键字:

我所了解的oracle11g新特性securefiles:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter