国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle SecureFile的功能第1/4頁

2024-08-29 13:56:25
字體:
來源:轉載
供稿:網友
SecureFile功能是oracle 11g中對大對象(LOB)存儲格式的完全重新設計實現,原來的LOB存儲格式現在通稱為BASIXFILE,它仍然是默認的存儲方法,但是SECURFILE關鍵字開啟了新的存儲方法,它允許加密、利用壓縮節約空間和數據重復消除。

  初始化參數

  SecureFile功能在初始化參數COMPATIBLE設置我11.0.0.0.0或更高時可用。

  DB_SECUREFILE初始化參數控制數據庫對LOB存儲格式的默認行為,允許的值有:

  ◆ALWAYS - 在ASSM表空間中的所有LOB對象以SecureFile LOB的格式創建,在非ASSM表空間中的所有LOB對象以BasicFile LOB的格式創建(除非明確地指出要以SecureFile格式創建),在沒有指定選項的情況下,BasicFile存儲格式選項被忽略,SecureFile默認存儲格式選項被使用。

  ◆ FORCE - 所有LOB對象都以SecureFile LOB格式創建,如果是在一個非ASSM表空間中創建LOB,會出現錯誤,在沒有指定選項的情況下,BasicFile存儲格式選項被忽略,SecureFile默認存儲格式選項被使用。

  ◆PERMITTED - 默認設置,當使用了SECUREFILE關鍵字時它允許SecureFile LOB存儲格式,默認存儲方法是BASICFILE。

  ◆NEVER - 不允許創建SecureFile LOB對象。

  ◆IGNORE - 防止創建SecureFile LOB,使用SecureFile存儲選項時忽略所有錯誤。

  這個參數是動態的,因此它可以使用ALTER SYSTEM命令設置。


  SQL> ALTER SYSTEM SET db_securefile = 'FORCE';
  System altered.
  SQL> ALTER SYSTEM SET db_securefile = 'PERMITTED';
  System altered.
  SQL>

  下面的例子假設DB_SECUREFILE初始化參數設置為默認值PERMITTED。

  創建SecureFile LOB

  基礎

  SecureFile LOB通過在LOB存儲子句后添加SECUREFILE關鍵字來創建,下面的代碼顯示創建了兩個表,第一個使用的是原來的存儲格式,第二個使用的是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選項允許在表或分區一級上的一個LOB內消除重復數據,正如你預料的那樣,這個技術與預防重寫導致系統開銷增大,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>

  注意重復消除段要小很多,空間節約依賴于LOB段內的重復程度,重復模式可以使用ALTER TABLE命令進行重新設置。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正镶白旗| 万年县| 通化县| 昔阳县| 临沭县| 铜鼓县| 阿克苏市| 阿拉善盟| 涟源市| 通海县| 白银市| 迭部县| 楚雄市| 永嘉县| 江川县| 白朗县| 合作市| 克什克腾旗| 昭苏县| 长岛县| 南川市| 蒙自县| 昌邑市| 云浮市| 民乐县| 北安市| 新竹市| 林州市| 隆化县| 东兰县| 玛曲县| 隆德县| 兴安盟| 鄂伦春自治旗| 新昌县| 钦州市| 新邵县| 沙河市| 铜川市| 噶尔县| 齐齐哈尔市|