Oracle SecureFile的功能第1/4頁
初始化參數(shù)
SecureFile功能在初始化參數(shù)COMPATIBLE設(shè)置我11.0.0.0.0或更高時可用。
DB_SECUREFILE初始化參數(shù)控制數(shù)據(jù)庫對LOB存儲格式的默認行為,允許的值有:
◆ALWAYS - 在ASSM表空間中的所有LOB對象以SecureFile LOB的格式創(chuàng)建,在非ASSM表空間中的所有LOB對象以BasicFile LOB的格式創(chuàng)建(除非明確地指出要以SecureFile格式創(chuàng)建),在沒有指定選項的情況下,BasicFile存儲格式選項被忽略,SecureFile默認存儲格式選項被使用。
◆ FORCE - 所有LOB對象都以SecureFile LOB格式創(chuàng)建,如果是在一個非ASSM表空間中創(chuàng)建LOB,會出現(xiàn)錯誤,在沒有指定選項的情況下,BasicFile存儲格式選項被忽略,SecureFile默認存儲格式選項被使用。
◆PERMITTED - 默認設(shè)置,當使用了SECUREFILE關(guān)鍵字時它允許SecureFile LOB存儲格式,默認存儲方法是BASICFILE。
◆NEVER - 不允許創(chuàng)建SecureFile LOB對象。
◆IGNORE - 防止創(chuàng)建SecureFile LOB,使用SecureFile存儲選項時忽略所有錯誤。
這個參數(shù)是動態(tài)的,因此它可以使用ALTER SYSTEM命令設(shè)置。
SQL> ALTER SYSTEM SET db_securefile = 'FORCE'; System altered. SQL> ALTER SYSTEM SET db_securefile = 'PERMITTED'; System altered. SQL> |
下面的例子假設(shè)DB_SECUREFILE初始化參數(shù)設(shè)置為默認值PERMITTED。
創(chuàng)建SecureFile LOB
基礎(chǔ)
SecureFile LOB通過在LOB存儲子句后添加SECUREFILE關(guān)鍵字來創(chuàng)建,下面的代碼顯示創(chuàng)建了兩個表,第一個使用的是原來的存儲格式,第二個使用的是SecureFile存儲格式。
CREATE TABLE bf_tab ( id NUMBER, clob_data CLOB ) LOB(clob_data) STORE AS BASICFILE; INSERT INTO bf_tab VALUES (1, 'My CLOB data'); COMMIT; CREATE TABLE sf_tab ( id NUMBER, clob_data CLOB ) LOB(clob_data) STORE AS SECUREFILE; INSERT INTO sf_tab VALUES (1, 'My CLOB data'); COMMIT; |
LOB重復消除
SecureFile的DEDUPLICATE選項允許在表或分區(qū)一級上的一個LOB內(nèi)消除重復數(shù)據(jù),正如你預料的那樣,這個技術(shù)與預防重寫導致系統(tǒng)開銷增大,KEEP_DUPLICATE選項明確地阻止重復消除,下面的例子對比了普通的SecureFile和重復消除SecureFile的空間使用情況。
CREATE TABLE keep_duplicates_tab ( id NUMBER, clob_data CLOB ) LOB(clob_data) STORE AS SECUREFILE keepdup_lob( KEEP_DUPLICATES ); CREATE TABLE deduplicate_tab ( id NUMBER, clob_data CLOB ) LOB(clob_data) STORE AS SECUREFILE dedup_lob ( DEDUPLICATE ); DECLARE l_clob CLOB := RPAD('X', 10000, 'X'); BEGIN FOR i IN 1 .. 1000 LOOP INSERT INTO keep_duplicates_tab VALUES (i, l_clob); END LOOP; COMMIT; FOR i IN 1 .. 1000 LOOP INSERT INTO deduplicate_tab VALUES (i, l_clob); END LOOP; COMMIT; END; / EXEC DBMS_STATS.gather_table_stats(USER, 'keep_duplicates_tab'); EXEC DBMS_STATS.gather_table_stats(USER, 'deduplicate_tab'); COLUMN segment_name FORMAT A30 SELECT segment_name, bytes FROM user_segments WHERE segment_name IN ('KEEPDUP_LOB', 'DEDUP_LOB'); SEGMENT_NAME BYTES ------------------------------ ---------- DEDUP_LOB 262144 KEEPDUP_LOB 19267584 2 rows selected. SQL> |
注意重復消除段要小很多,空間節(jié)約依賴于LOB段內(nèi)的重復程度,重復模式可以使用ALTER TABLE命令進行重新設(shè)置。
相關(guān)文章
Oracle Translate 統(tǒng)計字符出現(xiàn)的次數(shù)示例代碼
這篇文章主要介紹了Oracle Translate 統(tǒng)計字符出現(xiàn)的次數(shù)示例代碼,非常不錯具有參考借鑒價值,需要的朋友可以參考下2017-03-03oracle中左填充(lpad)和右填充(rpad)的介紹與用法
這篇文章主要跟大家介紹了關(guān)于oracle中左填充(lpad)和右填充(rpad)的相關(guān)資料,通過填充我們可以固定字段的長度,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-08-08Oracle怎么刪除數(shù)據(jù),Oracle數(shù)據(jù)刪除的三種方式
這篇文章主要介紹了Oracle中刪除數(shù)據(jù)的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Oracle數(shù)據(jù)庫優(yōu)化策略總結(jié)篇
本文介紹了一些很實用但卻不是很常見的Oracle數(shù)據(jù)庫的優(yōu)化策略,包括批量FETCH、SQL預解析等,需要的朋友可以參考下2015-08-08