Oracle SecureFile的功能第3/4页

 更新时间:2009年06月17日 00:56:03   作者:  
Oracle SecureFile的功能

COMMIT;
  END;
  /
  EXEC DBMS_STATS.gather_table_stats(USER, 'nocompress_tab');
  EXEC DBMS_STATS.gather_table_stats(USER, 'compress_tab');
  COLUMN segment_name FORMAT A30
  SELECT segment_name, bytes
  FROM user_segments
  WHERE segment_name IN ('COMPRESS_LOB', 'NOCOMPRESS_LOB');
  SEGMENT_NAME BYTES
  ------------------------------ ----------
  COMPRESS_LOB 131072
  NOCOMPRESS_LOB 71565312
  2 rows selected.
  SQL>

 

 

  我们可以看到压缩的LOB段比没有压缩的LOB段明显要小得多,空间节约的程度依赖于LOB段数据的存储类型。

  可以使用ALTER TABLE命令重新设置压缩模式。


  ALTER TABLE compress_tab MODIFY LOB(clob_data) (
  NOCOMPRESS
  );
  EXEC DBMS_STATS.gather_table_stats(USER, 'compress_tab');
  COLUMN segment_name FORMAT A30
  SELECT segment_name, bytes
  FROM user_segments
  WHERE segment_name IN ('COMPRESS_LOB', 'NOCOMPRESS_LOB');
  SEGMENT_NAME BYTES
  ------------------------------ ----------
  COMPRESS_LOB 76808192
  NOCOMPRESS_LOB 71630848
  2 rows selected.
  SQL>

  LOB加密

  SecureFile LOB的加密功能依赖于钱夹或硬件安全模型(HSM)掌管加密密钥,钱夹设置与透明数据加密(TDE)和表空间加密描述的一样,因此在尝试下面的例子前先完成那两个实验。

  SecureFile的ENCRYPT选项执行块级别的LOB内容加密,一个可选的USING子句定义了使用哪种加密算法(3DES168, AES128, AES192, 或AES256),默认使用AES192算法,NO SALT选项对于SecureFile加密不可用,加密是应用在每一列上的,因此它会影响所有使用LOB的分区,DECRPT选项用于明确地阻止加密,下面的例子显示了使用加密的SecureFile LOB数据类型创建表。


  CREATE TABLE encrypt_tab (
  id NUMBER,
  clob_data CLOB
  )
  LOB(clob_data) STORE AS SECUREFILE encrypt_lob(
  ENCRYPT USING 'AES256'
  );

ALTER TABLE命令可以用于加密或解密现有的列,要切换加密算法你必须使用REKEY选项。


 ALTER TABLE encrypt_tab MODIFY (
  clob_data CLOB DECRYPT
  );
  ALTER TABLE encrypt_tab MODIFY (
  clob_data CLOB ENCRYPT USING '3DES168'
  );
  ALTER TABLE encrypt_tab REKEY USING 'AES192';

  加密是不受原来的导入导出工具或表空间传输支持的,因此必须使用数据泵导入导出工具来传输数据。

  LOB缓存和日志

  BasicFile和SecureFile LOB共享了部分基础的缓存和日志选项,常见的缓存选项有:

  ◆CACHE - LOB数据被放在缓冲区中。

  ◆CACHE READES - 仅读取LOB数据过程中它放在缓冲区中,写操作时不放进去。

  ◆NOCACHE - LOB数据不放在缓冲区中,这是BasicFile和SecureFile LOB的默认值。

  基本的日志选项有:

  ◆LOGGING - 创建和修改LOB时产生完全重做日志,这是默认设置。

  ◆NOLOGGING - 操作不记录在重做日志中,因此不能恢复,在首次创建和巨大的载入过程中有用。

  而且,SecureFile LOB还有一个日志选项FILESYSTEM_LIKE_LOGGING,只记录元数据,在出现故障后仍然允许段的恢复。

  CACHE选项意味着LOGGING,因此你不能将CACHE与NOLOGGING或FILESYSTEM_LIKE_LOGGING合在一起使用。

  下面的代码显示了一个在表创建过程中和创建后明确设置了缓存和日志选项的例子。


  CREATE TABLE caching_and_logging_tab (
  id NUMBER,
  clob_data CLOB
  )
  LOB(clob_data) STORE AS SECUREFILE(
  NOCACHE
  FILESYSTEM_LIKE_LOGGING
  );
  ALTER TABLE caching_and_logging_tab MODIFY LOB(clob_data) (
  CACHE
  );
  PL/SQL API

相关文章

最新评论