方法一:sql
其操做步骤简要概述以下:oracle
1. 在sqlnet.ora指定wallet目录app
$ cd $ORACLE_HOME/network/adminide
$ vi sqlnet.oraui
ENCRYPTION_WALLET_LOCATION=加密
(SOURCE=(METHOD=FILE)(METHOD_DATA=spa
(DIRECTORY=/u01/app/oracle/product/11.1.0/db_1/)))索引
2. 重启实例io
SQL > shutdown immediate;table
SQL > startup;
3. 设置密码
SQL > alter system set encryption key identified by oracle123;
4. 建立加密表空间
SQL > create tablespace sectbs datafile '/u01/app/oracle/oradata/PROD/sec_tbs.dbf' size 100m encryption using '3DES168' default storage(encrypt);
5. 经过视图验证表空间是否为加密
SQL > select tablespace_name,status,encrypted from dba_tablespaces where tablespace_name='SECTBS';
该方法的隐患就是修改sqlnet.ora文件。修改该文件后须要重启实例,再设置encryption key才能生效。若是是生产环境此操做就须要申请检修了,而不是随时能够添加。并且该修改有必定的概率引发监听器没法启动。须要删除sqlnet.ora中关于钱包的设置才能恢复监听器。这样的话就相互矛盾了。因此推荐下面的方法
方法二:
推荐! 不须要重启实例,也不会由于修改sqlnet.ora致使监听没法启动
1. 查看wallet的默认位置:
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS
---------
file /u01/app/oracle/admin/PROD/wallet CLOSED
2. 验证是否存在该目录,没有则手工建立
SQL > !ls -l /u01/app/oracle/admin/PROD/wallet
ls: /u01/app/oracle/admin/PROD/wallet: No such file or directory
$ cd /u01/app/oracle/admin/PROD
$ mkdir wallet
$ chmod -R 775 wallet
3. 设置密码
SQL > alter system set encryption key identified by oracle123;
4. 建立加密表空间
SQL > create tablespace sectbs datafile '/u01/app/oracle/oradata/PROD/sectbs.dbf' size 100m encryption using '3DES168' default storage(encrypt);
5. 经过视图验证表空间是否为加密
SQL > select tablespace_name,status,encrypted from dba_tablespaces where tablespace_name='SECTEST';
6. 将须要加密的表移到加密表空间
SQL > alter table [table]
move tablespace sectbs;
7. 重建索引
SQL > alter index rebuild
这个主要是钱夹的搜索位置默认为一下所致使:
sqlnet.ora的encryption_wallet_location参数
sqlnet.ora的wallet_location参数
$ORACLE_BASE/admin/db_unique_name/wallet
$ORACLE_HOME/admin/db_unique_name/wallet