使用 TDE 加密表空间(新建和现有,在线/离线)
Oracle安全命令
-- Prerequisite: keystore OPEN and master key set (v$encryption_wallet.status = 'OPEN')
-- 1) New encrypted tablespace:
CREATE TABLESPACE customer_enc
DATAFILE '+DATA' SIZE 1G AUTOEXTEND ON NEXT 256M MAXSIZE 20G
ENCRYPTION USING 'AES256' ENCRYPT;
-- 2a) Encrypt an existing tablespace ONLINE (12.2+, needs extra space temporarily):
ALTER TABLESPACE customer_data ENCRYPTION ONLINE USING 'AES256' ENCRYPT;
-- If not OMF: ... ENCRYPT FILE_NAME_CONVERT = ('customer_data01.dbf', 'customer_data01_enc.dbf');
-- 2b) OFFLINE conversion (no extra space, tablespace unavailable meanwhile):
ALTER TABLESPACE customer_data OFFLINE NORMAL;
ALTER TABLESPACE customer_data ENCRYPTION OFFLINE ENCRYPT;
ALTER TABLESPACE customer_data ONLINE;
-- 3) Progress and status:
SELECT t.name AS tablespace_name, e.encryptionalg, e.status, e.con_id
FROM v$encrypted_tablespaces e
JOIN v$tablespace t ON t.ts# = e.ts# AND t.con_id = e.con_id;
SELECT tablespace_name, encrypted FROM dba_tablespaces ORDER BY tablespace_name;作用
表空间加密会加密写入数据文件的每个块;数据在 buffer cache 中是明文,因此无需修改应用或 SQL。在线转换会构建数据文件的加密副本并在 DML 继续进行时切换过去;离线转换则原地加密块。
适用场景
用于对保存敏感数据的应用表空间进行静态加密、将数据迁入新的加密表空间,或关闭审计发现项。
注意
本地部署需要 Advanced Security 选件(额外付费)。在线转换需要与被加密数据文件同等大小的额外空间,并产生大量 I/O 和 redo;Data Guard 备库也会执行相同的工作。离线转换必须在 Data Guard 备库上单独运行。SYSTEM/SYSAUX/UNDO 在 12.2+ 中可在线加密,但需格外小心。没有 keystore 无法还原加密表空间的备份。