TDE特性从10g开始提供。10g只能使用列加密,11g开始提供表空间加密。
如果使用列加密,那么Oracle的DataGuard,流,物化视图不可用,所涉及列的PK/FK也不可用。而表空间加密则不会有这些问题。
首先需要创建Wallet密钥:
a. 创建默认Wallet文件目录
点击(此处)折叠或打开
- mkdir $ORACLE_BASE/admin/<SID>/wallet
点击(此处)折叠或打开
- ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "zaq12wsxCDE#$RFV";
点击(此处)折叠或打开
-
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "zaq12wsxCDE#$RFV";
- ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "zaq12wsxCDE#$RFV";
点击(此处)折叠或打开
- SELECT WRL_TYPE, WRL_PARAMETER, STATUS FROM GV$ENCRYPTION_WALLET;
WRL_TYPE WRL_PARAMETER STATUS
---------- -------------------------------------------------- ----------
file /u01/app/oracle/admin/vlt/wallet CLOSED
创建加密表空间:
点击(此处)折叠或打开
-
CREATE TABLESPACE ts_encrypted
-
DATAFILE '
' size 400K
-
AUTOEXTEND ON
-
ENCRYPTION USING 'AES256'
-
DEFAULT STORAGE(ENCRYPT)
- /
点击(此处)折叠或打开
-
SELECT TS.name, ET.encryptedts, ET.encryptionalg
-
FROM v$tablespace TS, v$encrypted_tablespaces ET
- WHERE TS.ts# = ET.ts#;
NAME ENCRYP ENCRYPTIONALG
-------------------- ------ --------------
TS_ENCRYPTED YES AES256
当wallet处于Close状态时,查询加密表空间中的表:
点击(此处)折叠或打开
- select * from customers where rownum<11;
select * from customers where rownum<11
*
ERROR at line 1:
ORA-28365: wallet is not open
*
ERROR at line 1:
ORA-28365: wallet is not open
同时,如果在OS中使用strings命令查看数据文件,加密表空间将看到乱码,而没有加密过的数据文件可以看到明文。