暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 11g外部表功能增强,通过DATAPUMP卸载数据可直接进行压缩或加密

原创 eygle 2019-12-09
1249

在Oracle Database 11g中,外部表的功能得到了进一步的增强,现在通过DATAPUMP卸载数据时可以直接进行压缩或加密,而外部表通过指定解压缩的外部程序,也可以读取压缩格式的外部文件。

1. 卸载数据压缩

在Oracle 10g中,可写外部表将数据以非压缩格式卸载到本地,如果需要跨网络传输,可能需要进一步的压缩,否则会带来大量的网络流量,在Oracle Database 11g中,数据库允许在卸载数据时同时进行压缩,压缩使得卸载的转储文件对于空间需求大大缩减。

下面通过对比来比较一下压缩的效率。

在Windows上,以非压缩格式卸载数据,转储文件占用7,221,248 Bytes的空间:

D:\oracle\admin\eyglee\dpdump>dir
2010/10/07  14:50         7,221,248 DP_ALL_OBJECTS.DMP
2010/10/07  14:50                45 DP_ALL_OBJECTS_4572_3248.log
复制

通过压缩格式转储数据,在建表语句中增加了一行

ACCESS PARAMETERS (COMPRESSION ENABLED)
复制

执行如下卸载过程:

CREATE TABLE dp_all_objects_compress
  ORGANIZATION EXTERNAL
  (
     TYPE oracle_datapump
     DEFAULT DIRECTORY data_pump_dir
     ACCESS PARAMETERS (COMPRESSION ENABLED)
     LOCATION ( 'DP_ALL_OBJECTS_COMPRESS.DMP' )
  )
  AS
    SELECT *
FROM   all_objects;
复制

比较前后两个文件大小,注意到压缩文件仅有819,200 Bytes,压缩率近9倍,非常有效地缩减了空间使用:

D:\oracle\admin\eyglee\dpdump>dir *.DMP
2010/10/07  14:50         7,221,248 DP_ALL_OBJECTS.DMP
2010/10/07  15:03           819,200 DP_ALL_OBJECTS_COMPRESS.DMP
复制

当然压缩的过程会有一些额外的CPU消耗,数据卸载速度也会比非压缩方式稍慢。

2.卸载数据加密

在Oracle Database 11g中,新增了对于外部文件加密的功能,通过加密可以对敏感数据进行保护,是数据库安全性方面的重要增强。使用这一特性需要启用wallet,本书前面章节已经创建了wallet,现在只需打开就可以实现数据加密:

SQL> alter system set wallet open identified by "eygle";

系统已更改。

SQL> CREATE TABLE dp_all_objects_encryption
  2    ORGANIZATION EXTERNAL
  3    (
  4       TYPE oracle_datapump
  5       DEFAULT DIRECTORY data_pump_dir
  6       ACCESS PARAMETERS (ENCRYPTION ENABLED)
  7       LOCATION ( 'DP_ALL_OBJECTS_ENCRYPTION.DMP' )
  8    )
  9    AS
 10      SELECT *
 11      FROM   all_objects;

表已创建。
复制

现在创建的非压缩加密文件大小和非压缩方式的文件一致:

D:\oracle\admin\eyglee\dpdump>dir *.dmp
2010/10/07  14:50         7,221,248 DP_ALL_OBJECTS.DMP
2010/10/07  15:03           819,200 DP_ALL_OBJECTS_COMPRESS.DMP
2010/10/07  15:18         7,221,248 DP_ALL_OBJECTS_ENCRYPTION.DMP
复制

如果试图用常规方式去查看内容,可以看到显示的都是加密过后的代码:

D:\oracle\admin\eyglee\dpdump>strings DP_ALL_OBJECTS_ENCRYPTION.DMP
"SYS"."U"
IBMPC/WIN_NT-8.1.0
ZHS16GBK
11.02.00.00.00
001:001:000001:000001
8{)Z5
"jnH
HNHMGxQ
HA)E
KJwg=<
cA2Ln
{CvE
Gn.h
CTvLc4{
I%)t
HCYf
.W&&Z
[5<fg/
复制

这样就实现了卸载数据的加密。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论