1.新建一个空目录如下:
C:\Oracle\Wallets\walletTDE
--请保证walletTDE下没有任何文件。
2. sqlnet.ora中指定上述目录为ENCRYPTION_WALLET所在目录。指定方式如下:
在参数文件C:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora中,按照下面的格式加入信息:
ENCRYPTION_WALLET_LOCATION=
(SOURCE = (METHOD = FILE)
(METHOD_DATA=
(DIRECTORY =C:\Oracle\Wallets\walletTDE)))
加入信息之后,请保存关闭sqlnet.ora文件。
3.重新启动oracle数据库服务和侦听器服务。
net stop OracleServiceORCL
net stop OracleOraDb11g_home1TNSListener
net start OracleServiceORCL
net start OracleOraDb11g_home1TNSListener
4. conn / as SYSDBA登录之后执行:
SQL>alter system setencryption key identified by "Qwer1234";
这条语句正常执行结果是“系统已更改”或者“Systemaltered”;
执行完之后,C:\Oracle\Wallets\walletTDE目录下会生成一个wallet文件,即“ewallet.p12”;若该目录在执行语句之前已经存在该文件,不为空的话,可能出现“无法自动创建wallet”等错误。语句中的"Qwer1234"是用于打开和关闭wallet(即ewallet.p12)的口令, ewallet.p12存放的是主密钥(primary key),主密钥是在生成ewallet.p12文件时随机生成的,ewallet.p12用“Qwer1234”打开之后,主密钥才可用;否则主密钥是不可用的。主密钥也是用户不可知的,不能采用文本方式打开ewallet.p12看见主密钥。“Qwer1234”这个wallet打开关闭口令设置不可太简单,要同时包含大小写数字,长度大于等于8,否则设置不成功。
5.执行下述SQL打开wallet,wallet处理打开状态时,用户才可以使用主密钥:
SQL>ALTER SYSTEM SETENCRYPTION WALLET OPEN IDENTIFIED BY "Qwer1234";
这条语句正常执行结果是“系统已更改”或者“Systemaltered”;
这条语句的目的是打开wallet,当然需要步骤4所设的的口令,才能打开;若将步骤4设置的口令写错,则无法打开wallet,也就无法使用主密钥。
6.HR/HR登录建带透明加密列的表,如下
SQL>create tableHR.TEST1(C1 varchar(20) encrypt);
这条语句正常执行结果是“表已创建”,表示表创建成功。其中C1列是透明加密的,加密算法是默认的AES192,加密密钥是oracle自动生成的表密钥,表密钥采用的是主密钥进行加密存放的,存放在数据文件之内;主密钥是脱离数据文件,存在在wallet当中,wallet是需要口令才可以打开的,wallet处于打开状态才可以建立加密表。该walllet一直处于打开状态直至执行ALTER SYSTEM SETENCRYPTION WALLET CLOSE IDENTIFIED BY "Qwer1234";进行关闭
或者oracle实例被关闭。
7.此wallet是加密用的wallet,和客户端采用wallet进行无用户名、无口令登录有所不同。