Oracle SecureFiles

        Oracle11g數據庫新推出了一個完全重新設計的大對象(LOB)數據類型用於大幅度的提高性能、可管理性和簡化應用的開發。這個全新的數據類型同時還提供了高級的下一代功能例如智能壓縮、刪除重複數據和透明加密等功能。

SecureFiles提供瞭如下的組件 
          壓縮:可以明確地壓縮SecureFiles來節省磁盤空間,降低I/O和記錄重做日誌的開銷。 壓縮等級分爲低級壓縮、中級壓縮、高級壓縮,默認是中級壓縮級別。

       下面是建立壓縮SecureFiles  LOB列的例子:         

        CREATE TABLE t1 (a CLOB)          

        LOB(a) STORE AS SECUREFILE(COMPRESS LOW  );        --COMPRESS 後加LOW爲低級壓縮,加HIGH爲高級壓縮,什麼也 不加爲默認中級壓縮,將COMMPRESS改爲NOCOMMPRESS爲不壓縮。

創建一個分區壓縮SecureFiles的LOB列
CREATE TABLE t1 (REGION  VARCHAR2(20), a BLOB)
LOB(a) STORE AS SECUREFILE (CACHE) 
PARTITION BY LIST (REGION)
  PARTITION p1 VALUES ('x', 'y')
  LOB(a) STORE AS SECUREFILE(COMPRESS), 
  PARTITION p2 VALUES (DEFAULT) 
);

        刪除重複數據:自動檢測重複的SecureFiles LOB數據並且只保留一份拷貝空間來實現節省磁盤存儲,減少I/O和重做日誌記錄的消耗。刪除重複數據操作可以在表級或者是分區級別上指定,但是不能跨越分區的LOBS。示例如下:      

CREATE TABLE t1 ( a CLOB) 

LOB(a) STORE AS SECUREFILE

(DEDUPLICATE);       --DEDUPLICATE爲刪除重複記錄,KEEP_DUPLICATES爲不刪除重複記錄。

在一個分區上創建一個重複數據刪除SecureFiles的LOB列 
CREATE TABLE t1 
(
 REGION VARCHAR2(20), a BLOB
)  
LOB(a) STORE AS SECUREFILE 
(CACHE)  
PARTITION BY LIST (REGION) 
(
 PARTITION p1 VALUES ('x', 'y')
 LOB(a) STORE AS SECUREFILE 
 (DEDUPLICATE),
 PARTITION p2 VALUES (DEFAULT)
);

       加密:加密存儲LOB數據並且可以任意的讀和寫來提供更強大的數據安全性。

       encrypt_algorithm表示的加密算法的名稱。有效的算法是:AES192(默認),3DES168,AES128和AES256。

創建一個特定的加密算法SecureFiles的LOB列
CREATE TABLE t1 (a CLOB ENCRYPT   USING 'AES128')
  LOB(a) STORE AS SECUREFILE (CACHE);
創建一個指定密鑰的SecureFiles的LOB列
CREATE TABLE t1 ( a CLOB ENCRYPT IDENTIFIED BY foo)
  LOB(a) STORE AS SECUREFILE (CACHE);


        數據路徑優化:支持針對於SecureFiles的性能優化,包括動態設置是否使用緩存,並且避免污染對於高速緩存中的大的緩存的SecureFiles。
    利用事務COMMIT NOWAIT BATCH來達到同步或者異步。
    類似於文件服務器的髒緩存寫,寫緩存收集能夠自動分期償還空間分配、信息節點更新,記錄重做日誌的代價,並且允許磁盤大規模的I/O讀寫。
    針對於SecureFiles塊的分佈式鎖管理器,這使用一個單一的分佈式鎖管理器來覆蓋所有的SecureFilesLOB塊,因此對於其他的文件系統來說LOB的性能會更好一些。 

        信息節點:針對於SecureFiles的新的存儲架構被設計和實現用於支持高性能的訪問目標數據。除了提高基礎數據訪問之外,新的存儲架構也支持豐富的功能,保證最小的性能代價,這些功能例如:
 固有的壓縮和加密
 數據共享
 用戶控制的版本
    COMPATIBLE初始化參數比較要設置爲11.1或者更高纔可以使用SecureFiles。 
是否啓用SecureFiles

        可以init.ora文件中設置db_securefile初始化參數來確定是否啓用SecureFiles,這個參數是動態參數,可通過alter sysytem命令修改,該參數有以下幾個值:

        PERMITTED:允許創建SecureFiles(默認)  

        NEVER:不允許創建SecureFiles   

        ALWAYS:強制所有的LOBs都必須要創建SecureFiles  

        IGNORE:不允許創建SecureFiles並且忽略由強制BasicFiles使用SecureFiles特性而引起的任何錯誤。 
        如果指定值爲NEVER,任何LOBs都將以BasicFiles來創建,所有的指定的SecureFiles的存儲選項和特性都將引起一個意外。
        如果指定值爲ALWAYS,所有系統中的LOBs都以SecureFiles來創建,LOB必須在ASSM(Automatic Segment Space Management)表空間中創建,否則會產生錯誤。任何指定的BasicFile存儲選項都將會被忽略。

SecureFiles屬性
       DEDUPLICATE/KEEP_DUPLICATES: DEDUPLICATE選項允許指定在一個LOB列中有兩行或者更多行的時候,所有行都共享同樣的數據塊。相反的就是KEEP_DUPLICATES選項。Oracle11g數據庫使用一個安全的哈希索引來檢測重複性並且聯合LOBs的內容到一個單一的拷貝里面,減少存儲空間並且簡化存儲管理。
 VALIDATE:對SecureFiles執行一個字節到字節的比較,確定SecureFiles都是同樣的安全哈希值。
 COMPRESS/NOCOMPRESS:決定是否啓用LOB壓縮。
 ENCRYPT/DECRYPT:決定是否啓用LOB加密。如果一旦設置好了加密,就只能用ALTER TABLE REKEY命令來更新加密算法或者是加密值。
 RETENTION:只能影響使用ALTER TABLE語句之後所創建的空間。 
對於Securefiles的訪問

     Oracle11g數據庫是通過使用DBMS包來實現的。主要是通過DBMS_LOB包和DBMS_SPACE包來訪問。
     DBMS_LOB包:LOBs繼承LOB列的設定的屬性,當然也可以通過LOB locator API配置成每個LOB級別上。但是LONG API不能用於配置這些LOB設定,必須使用DBMS_LOB包來設定這些屬性:
 DBMS_LOB.GETOPTIONS:可以用來獲取設定,每個選項類型的預定義的一個常量對應於一個整數將會返回。
 DBMS_LOB.SETOPTIONS:用於設定特性並且允許在每一個LOB基礎上設定特性,會覆蓋所有默認的LOB設定。
 DBMS_LOB.GET_DEDUPLICATE_REGIONS:這個存儲過程用於輸出在一個LOB中不重複區域的記錄收集。LOB級別上只包含一個不重複區域。
 DBMS_SPACE.SPACE_USAGE:這個存儲過程用於返回LOB空間使用的負載信息。返回在LOB段中所有LOB使用的磁盤空間的blocks的數量。這個存儲過程目前只能用於ASSM創建的表空間,不支持屬於BasicFiles那部分LOB使用的空間。
從BasicFiles移植SecureFiles

       有兩種推薦的方法來移植。這兩種方法分別是交換分區和在線重定義。
交換分區:
   需要和表中最大的分區相等的額外空間
   在交換的時候可以維護索引
   能夠在幾個小的維護窗口延展工作負載
   執行交換分區的時候需要將表或者分區離線

在線重定義:
   不要求表或者分區離線
   可以被並行的執行
   要求額外的等於整個表或者所有LOB段大小的可用空間
   要求必須重建所有的全局索引

  如果你想升級你的BasicFiles到SecureFiles,你可以使用傳統的方法來升級數據,例如CTAS/ITAS、export/import、column-to-column拷貝等等。大部分這些解決方案都要求使用兩倍的磁盤空間來移植。然而,使用分區解決方案來移植可以按照每個分區來移植,從而有助於減少磁盤空間的需求。

發佈了46 篇原創文章 · 獲贊 30 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章