1.oracle用户创建tde路径
mkdir -p $ORACLE_BASE/admin/WALLET
2.sqlnet中添加
vi sqlnet.ora
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=$ORACLE_BASE/admin/wlh/wallet)))
3.创建master key文件,指定wallet密码
alter system set encryption key identified by “oracle”;
路径下生成了weallet.p12密钥
4.查看钱包开启状态
set linesize 300
col WRL_PARAMETER for a60
select * from V$ENCRYPTION_WALLET;
通过以下命令可对钱包进行开启与关闭操作
alter system set encryption wallet open identified by “oracle”;
alter system set encryption wallet close identified by “oracle”;
需要注意的是,当钱包为开启状态是,我们才能访问加密的数据!
如需修改钱包密码
orapki wallet change_pwd -wallet /oracle/wallet
5.加密表
不用加密sys、system用户进行加密,需业务用户。
对已有表进行加密
alter table t modify (id encrypt);
对加密列关闭加密
alter tablet modify(id decrypt);
关闭钱包后,无法查询,数据已经加密!
alter system set encryption wallet close identified by “oracle”;
需要注意的是,TDE不支持对外键约束中使用的列进行加密!
6.加密表空间
创建加密表空间,创建在加密表空间中的所有对象自动加密
(已在使用的表空间无法加密)
CREATE TABLESPACE test
DATAFILE ‘/oracle/app/oradata/zwy/test.dbf’
SIZE 50M
ENCRYPTION
DEFAULT STORAGE(ENCRYPT);
通过dba_tablespace视图确认,test表空间为加密表空间
select TABLESPACE_NAME,ENCRYPTED from dba_TABLESPACES;
7.如果要删除钱包
删除钱包文件
cd /oracle/wallet
rm -f ewallet.p12
关闭钱夹
alter system set encryption wallet close identified by “oracle”;
清理配置文件
cd $ORACLE_HOME/network/admin
vi sqlnet.ora
意外处理
关闭钱夹后,钱夹状态仍然为open,请切换归档以及undo文件,重启数据库!