文章目录
-
目录
一、TDE配置
1.1.创建钱包目录
su - oracle
mkdir $ORACLE_HOME/network/admin//wallets/
1.2.配置TDE
配置文件为sqlnet.ora
vi $ORACLE_HOME/network/admin/sqlnet.ora
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=/opt/app/oracle/product/11.2.0/mbsdb/network/admin/wallets)
)
)
1.3.设置主加密密钥
su - oracle
sqlplus / as sysdba
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "password";
SELECT * FROM v$encryption_wallet;
1.4.关闭钱包
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "password";
1.5.打开钱包
ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "password";
1.6.重置密钥
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "newpassword";
二、列加解密
2.1.创建测试表
CREATE TABLE TED_TEST1 (
TEST_A VARCHAR2(8),
TEST_B VARCHAR2(8),
TEST_C NUMBER,
TEST_D NUMBER(8) ENCRYPT
);
2.2.指定加密算法
算法包括:3DES168、AES128、AES192(默认)、AES256
CREATE TABLE TED_TEST2 (
TEST_A VARCHAR2(8),
TEST_B VARCHAR2(8),
TEST_C NUMBER,
TEST_D NUMBER(8) ENCRYPT USING '3DES168'
);
2.3.跳过完整性算法
CREATE TABLE TED_TEST3 (
TEST_A VARCHAR2(8),
TEST_B VARCHAR2(8),
TEST_C NUMBER,
TEST_D NUMBER(8) 'NOMAC' NO SALT,
);
2.4.向表中添加加密列
ALTER TABLE TED_TEST1 ADD (TEST_E VARCHAR2(11) ENCRYPT);
2.5.加密已有未加密列
ALTER TABLE TED_TEST1 MODIFY (TEST_A ENCRYPT);
2.6.修改加密算法
算法包括:3DES168、AES128、AES192(默认)、AES256
ALTER TABLE TED_TEST1 REKEY USING '3DES168';
2.7.修改完整性算法
ALTER TABLE TED_TEST1 REKEY USING '3DES168' 'SHA-1';
ALTER TABLE TED_TEST1 REKEY USING '3DES168' 'NOMAC';
2.8.解密表中加密列
ALTER TABLE TED_TEST1 MODIFY (TEST_A DECRYPT);
三、表空间加解密
11G不支持加密已有的表空间,只支持新建。新建完成后将未加密表空间中的表迁移到加密的表空间中。迁移后表的索引会变为无效,因此需要rebuild。也可以通过数据泵导出再导入。
2.1.创建加密表空间
create tablespace MBSDATATDE logging datafile '/oradata/MBSDB/DataFile/MBSDATATDE01.dbf' size 1024m ENCRYPTION DEFAULT STORAGE(ENCRYPT);
2.2.指定算法创建加密表空间
create tablespace MBSDATATDE logging datafile '/oradata/MBSDB/DataFile/MBSDATATDE01.dbf' size 1024m ENCRYPTION USING '3DES168' DEFAULT STORAGE(ENCRYPT);
2.3.查看表空间是否已经加密
SELECT TABLESPACE_NAME,ENCRYPTED FROM DBA_TABLESPACES;
2.4.加密表
将要加密的表移动到加密表空间
ALTER TABLE TED_TEST1 MOVE TABLESPACE MBSDATATDE;
检查索引
SELECT T.INDEX_NAME,T.TABLE_NAME,T.STATUS FROM ALL_INDEXES T WHERE T.TABLE_NAME = 'TED_TEST1';
- 如果状态是VALID,表示索引可用并且生效。
- 如果状态是UNUSABLE,表示索引存在但是不可用。
- 如果状态是N/A,表示索引不存在。
重建 索引
ALTER INDEX PK_TED_TEST1_TEST_A REBUILD;
ALTER INDEX IDX_TED_TEST1_TEST_B REBUILD;
2.5.解密表
将需要解密的表移出加密表空间
ALTER TABLE TED_TEST1 MOVE TABLESPACE MBSDATA;
同加密表过程一样需要重建索引。
2.6.数据泵导入导出
不更换表名需要在导入前drop原表。
expdp user/password@orcl directory=expdir dumpfile=TED_TEST1.dmp tables=TED_TEST1
DROP TABLES TED_TEST1
impdp user/password@orcl directory=expdir dumpfile=TED_TEST1.dmp remap_table=TED_TEST1:TED_TEST2 remap_tablespace=MBSDATA:MBSDATATDE exclude=PROCACT_INSTANCE
总结
本文仅用于个人学习记录,仅代表个人观点,如有错误之处,敬请批评指正。