11g 建立加密表空間的方法對比

snowdba發表於2015-06-11
之前寫過一篇部落格關於加密表空間的建立http://blog.itpub.net/29047826/viewspace-1473689/
另外還有一篇關於加密表空間引起的故障http://blog.itpub.net/29047826/viewspace-1589988/

綜合兩篇部落格可以得出結論,使用官方文件上的這個方法會有隱患。

其操作步驟簡要概述如下:

1. 在sqlnet.ora指定wallet目錄
$ cd $ORACLE_HOME/network/admin
$ vi sqlnet.ora
ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/u01/app/oracle/product/11.1.0/db_1/)))

2. 重啟例項
SQL > shutdown immediate;
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 move tablespace sectbs;

7. 重建索引
SQL > alter index rebuild

全文完

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1695346/,如需轉載,請註明出處,否則將追究法律責任。

相關文章