Oracle 11gR1中的SecureFile(4)

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

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

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;

/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航