標籤:
一、壓縮資料表空間
壓縮資料表空間是通過壓縮資料表空間內的對象來實現的。資料的壓縮體現在資料區塊上,簡單的說就是通過清除資料區塊上的重複內容來達到降低I/O,提升效能效能的目的。在資料表空間的建立語句中通過指定default關鍵字,可以讓在該資料表空間上建立的所有表進行壓縮(實際上,壓縮是在資料插入時進行的)。
根據資料表空間儲存資料對象的不同,資料表空間壓縮類型可以分為OLTP壓縮、非結構化檔案副本清除、非結構化檔案壓縮和備份資料壓縮等。其中OLTP壓縮是指在發生DML操作(包括insert,delete,update)期間進行的壓縮。一個壓縮的表可以儲存在更少的資料區塊中,從而節省了儲存空間,而使用更少的資料區塊也意味著效能的提高。 在一個I/O受到一定限制的環境中對一個壓縮的表進行查詢通常可以更快速地完成,因為他們需要掃描的資料庫資料區塊要少得多。
# 建立預設壓縮資料表空間SQL> create tablespace test datafile ‘D:\app\oracle\oradata\orcl\test01.dbf‘ 2 default compress for oltp;資料表空間已建立。# 修改壓縮資料表空間SQL> alter tablespace test default nocompress;資料表空間已更改。# 確定一個資料表空間是否壓縮SQL> select tablespace_name,def_tab_compression from dba_tablespaces;TABLESPACE_NAME DEF_TAB_COMPRESS------------------------------------------------------------ ----------------SYSTEM DISABLEDSYSAUX DISABLEDUNDOTBS1 DISABLEDTEMP DISABLEDUSERS DISABLEDEXAMPLE DISABLEDTEST ENABLED已選擇7行。
二、加密資料表空間
在永久性資料表空間上可以使用加密技術來保護敏感的資料。資料表空間的加密技術對於使用者來說完全是透明的,其主要目的是為了在資料庫之外,保護資料避免未經授權的訪問,例如通過作業系統的檔案系統直接存取資料檔案。但是資料表空間加密技術並沒有解決所有的安全問題,例如,它沒有提供資料庫訪問內容的存取控制技術,任何一個有許可權的使用者都可以訪問和儲存資料表空間內的對象,而無需提供額外的密碼或秘鑰。
當加密一個資料表空間,資料表空間內的所有資料區塊都將被加密,所有的段類型都支援加密,包括表段,索引段等等。為了提供最大化的安全性,當來自加密資料表空間的資料被寫入undo資料表空間、暫存資料表空間時仍然是被加密的,而無需建立加密的undo資料表空間和加密的temporary資料表空間。實際上,我們也不能建立這樣的資料表空間。
常見的資料表空間密碼編譯演算法有:AES128,AES192,AES256,3DES168。
在使用加密資料表空間時應考慮以下問題:
- 無法對已存在的資料表空間進行加密。
- 加密資料表空間在進行資料表空間傳輸時收到限制。
- 在備份和恢複時要開啟Oracle Wallet。
使用資料表空間加密技術要建立Oracle Wallet,以我的Windows環境為例,建立方法如下:
# 指定Oracle Wallet目錄,D:\app\oracle\admin\orcl\wallet# 編輯D:\app\oracle\product\11.2.0\dbhome_1\database\sqlnet.ora檔案,說明Wallet的實現方式和物理位置,完成後重啟資料庫。ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=D:\app\oracle\admin\orcl\wallet)))# 在Wallet下建立加密檔案SQL> alter system set encryption key identified by "oracle";系統已更改。# 開啟和關閉Oracle Wallet,在windows上建立wallet完成後wallet預設是開啟狀態SQL> alter system set encryption wallet open identified by "oracle";系統已更改。SQL> alter system set encryption wallet close identified by "oracle";系統已更改。SQL> select * from v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS---------- ----------------------------------- ------file D:\APP\ORACLE\ADMIN\ORCL\WALLET OPEN# 建立加密資料表空間SQL> create tablespace encrypt_tbs 2 datafile ‘D:\app\oracle\oradata\orcl\securefile.dbf‘ reuse 3 encryption using ‘AES192‘ 4 default storage(encrypt); 資料表空間已建立。# 查看錶空間加密的情況SQL> select t.name,e.encryptionalg algorithm 2 from v$tablespace t,v$encrypted_tablespaces e 3 where t.ts#=e.ts#;NAME ALGORITHM------------------------------------------------------------ --------------ENCRYPT_TBS AES192
Oracle資料表空間基礎(2)