Oracle SecureFile的功能第4/4页

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

DBMS_LOB包用于访问BasicFile和SecureFile LOB,SETOPTIONS存储过程和GETOPTIONS函数允许在每个LOB列上设置压缩、加密和重复消除选项。


  CREATE TABLE securefile_tab (
  id NUMBER,
  clob_data CLOB
  )
  LOB(clob_data) STORE AS SECUREFILE securefile_lob(
  encrypt
  compress
  );
  INSERT INTO securefile_tab VALUES (1, 'ONE');
  INSERT INTO securefile_tab VALUES (2, 'TWO');
  COMMIT;
  SET SERVEROUTPUT ON
  DECLARE
  l_clob CLOB;
  BEGIN
  SELECT clob_data
  INTO l_clob
  FROM securefile_tab
  WHERE id = 1
  FOR UPDATE;
  DBMS_OUTPUT.put_line('Compression : ' || DBMS_LOB.getoptions(l_clob, DBMS_LOB.opt_compress));
  DBMS_OUTPUT.put_line('Encryption : ' || DBMS_LOB.getoptions(l_clob, DBMS_LOB.opt_encrypt));
  DBMS_OUTPUT.put_line('Deduplication: ' || DBMS_LOB.getoptions(l_clob, DBMS_LOB.opt_deduplicate));
  ROLLBACK;
  END;
  /

  DBMS_SPACE包括SPACE_USAGE存储过程,它返回有关所有LOB段中的LOB磁盘空间的消耗情况,这个存储过程也可以用于ASSM表空间。


  SET SERVEROUTPUT ON
  DECLARE
  l_segment_size_blocks NUMBER;
  l_segment_size_bytes NUMBER;
  l_used_blocks NUMBER;
  l_used_bytes NUMBER;
  l_expired_blocks NUMBER;
  l_expired_bytes NUMBER;
  l_unexpired_blocks NUMBER;
  l_unexpired_bytes NUMBER;
  BEGIN
  DBMS_SPACE.SPACE_USAGE(
  segment_owner => 'TEST',
  segment_name => 'SECUREFILE_LOB',

segment_type => 'LOB',
  segment_size_blocks => l_segment_size_blocks,
  segment_size_bytes => l_segment_size_bytes,
  used_blocks => l_used_blocks,
  used_bytes => l_used_bytes,
  expired_blocks => l_expired_blocks,
  expired_bytes => l_expired_bytes,
  unexpired_blocks => l_unexpired_blocks,
  unexpired_bytes => l_unexpired_bytes);
  DBMS_OUTPUT.put_line('segment_size_blocks:' || l_segment_size_blocks);
  DBMS_OUTPUT.put_line('segment_size_bytes :' || l_segment_size_bytes);
  DBMS_OUTPUT.put_line('used_blocks :' || l_used_blocks);
  DBMS_OUTPUT.put_line('used_bytes :' || l_used_bytes);
  DBMS_OUTPUT.put_line('expired_blocks :' || l_expired_blocks);
  DBMS_OUTPUT.put_line('expired_bytes :' || l_expired_bytes);
  DBMS_OUTPUT.put_line('unexpired_blocks :' || l_unexpired_blocks);
  DBMS_OUTPUT.put_line('unexpired_bytes :' || l_unexpired_bytes);
  END;
  /

 

 

  迁移到SecureFile

  目前还没有方法可以自动将一个BasicFile列迁移到SecureFile LOB列,相反,你必须使用下面的方法手动转换数据:

  ◆CREATE TABLE ... AS SELECT ...

  ◆INSERT INTO ... SELECT ...

  ◆表在线重定义

  ◆导出/导入

  ◆创建一个新列,用原始列的值更新新列,然后删除旧列

  ◆创建一个新列,用原始列的值更新新列,重命名表,用原始表名创建一个仅引用新列的视图

  除导出/导入方法外,在转换包含有大量数据的LOB时,所有选项都需要注意磁盘空间的数量。

  oralce流目前不支持SecureFile,因此要避免迁移使用了流的LOB对象。

 

相关文章

最新评论