151.Oracle数据库SQL开发之 大对象——11g对大对象的增强

来源:互联网 发布:国家顶级域名是 编辑:程序博客网 时间:2024/05/28 22:09

151.Oracle数据库SQL开发之 大对象——11g对大对象的增强

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50185863

11g对大对象增强如下。

1.  加密LOB数据

对数据进行加密,让未授权用户不能查看或修改数据。例如信用卡号,社会保险号等。

加密数据之前,DBA需要建立一个电子钱包来存储安全细节。电子钱包中的数据包括加密和解密数据所用的私钥。

1.1             创建电子钱包

要创建电子钱包,现在$ORACLE_BASE/admin/$ORACLE_SID目录中创建wallet目录。

创建之后,运行SQLPLUS,使用一个有权限的用户账户连接到数据库,运行ALTER SYSTEM命令为电子钱包加密秘钥密码:如下:

idle> alter system set encryption key identifiedby "testpassword123";

 

System altered.

之后wallet目录中就会出现ewallet.p12,且数据库自动打开此文件。加密密钥密码存储在此电子钱包中,加密密钥用来加密和解密后台数据。

1.2             加密LOB数据

可以加密存储在BLOB、CLOB或NCLOB中的数据,可以阻止未经授权访问这些数据。

可以使用下面这些算法来加密数据:

l  3DES168

l  AES128

l  AES192

l  AES256

如下创建一个带有CLOB的表,CLOB的内容使用AES128算法加密。

CREATE TABLE clob_content (

  id INTEGERPRIMARY KEY,

  clob_columnCLOB ENCRYPT USING 'AES128'

) LOB(clob_column) STORE AS SECUREFILE (

  CACHE

);

 

INSERT INTO clob_content (

  id,clob_column

) VALUES (

  1,TO_CLOB('Creeps in this petty pace')

);

 

INSERT INTO clob_content (

  id,clob_column

) VALUES (

  2, TO_CLOB('from day to day')

);

关闭钱包后

Alter system set wallet close;

在检索clob_contetn表就会报错

打开电子钱包如下:

alter system set wallet open identified by"testpassword123";

1.3             加密列数据

CREATE TABLE credit_cards (

  card_numberNUMBER(16, 0) ENCRYPT,

  first_nameVARCHAR2(10),

  last_nameVARCHAR2(10),

  expirationDATE

);

INSERT INTO credit_cards (

  card_number,first_name, last_name, expiration

) VALUES (

  1234,'Jason', 'Bond', '03-FEB-2008'

);

 

INSERT INTO credit_cards (

  card_number,first_name, last_name, expiration

) VALUES (

  5768,'Steve', 'Edwards', '07-MAR-2009'

);

访问加密列中的数据增加了额外开销。大约是5%。

2.  压缩LOB数据

create table clob_content3(

    id integerprimary key,

    clob_columnclob

    )lob(clob_column) store as securefile (

    compress

    cache);

向LOB添加数据时,数据库会自动对数据进行压缩。当从LOB读取数据时,会自动解压。对于最大化数据压缩可以使用COMPRESS HIGH。压缩比越高,读写LOB数据的开销就越大。

3.  删除LOB重复数据

配置BLOB,CLOB或NCLOB,自动删除BLOB,CLOB或NCLOB的任何重复数据,这一过程称为删除重复数据。

如下

  create tableclob_content2 (

    id integerprimary key,

    clob_columnclob

    ) lob(clob_column) store as securefile (deduplicate lob

   cache)

会自动删除添加到LOB的任何重复数据。数据库使用SHA1安全哈希算法删除重复数据。

 

 

0 0
原创粉丝点击