RMAN的備份加密

lixianlinde發表於2012-12-30

http://hi.baidu.com/optical/item/f00623d908c4393f49e1dd5b

RMAN的備份加密

Oracle 從10gR2開始,提供備份加密,也就是說,對備份出來的檔案採用一定的加密演算法,防止備份檔案被拷貝到別的地方可以隨意恢復。採用加密方法的備份,如果在異地還原(Restore)的話,需要提供正確的密碼才能做到。

啟動rman後,用show all命令可以看到與備份加密有關的配置:

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

RMAN支援的加密演算法可以通過如下檢視看到:V$RMAN_ENCRYPTION_ALGORITHMS;

配置加密演算法通過如下語句完成:

RMAN> CONFIGURE ENCRYPTION ALGORITHM TO 'AES256';

可以用如下的方法開啟加密備份方式:

1)RMAN> set encryption on identified by 'password' only;

2)RMAN> set encryption on identified by 'password';

3)RMAN> configure encryption for database on;

RMAN> set encryption on;

以上的加密分為3個級別:

1)密碼(password)形式

這是最簡單的模式,備份的時候通過以下語句設定備份密碼,然後備份資料庫或對應的表空間、資料檔案等。

RMAN> set encryption on identified by "mypass" only;

RMAN> backup database;

恢復的時候,則需要指定解密的密碼才可:

RMAN> set decryption identified by "mypass";

RMAN> restore database;

這種方法簡單,但缺點是密碼是明文的。

下面是一個簡單的測試過程: 
D:oracle11gBIN>rman target/

恢復管理器: Release 11.1.0.7.0 - Production on 星期四 11月 20 21:26:19 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.

已連線到目標資料庫 (未啟動)
RMAN> startup mount;

Oracle 例項已啟動
資料庫已裝載

系統全域性區域總計 313860096 位元組

Fixed Size 1347020 位元組
Variable Size 276824628 位元組
Database Buffers 29360128 位元組
Redo Buffers 6328320 位元組

RMAN> set encryption on identified by "mypass" only;

正在執行命令: SET encryption
使用目標資料庫控制檔案替代恢復目錄

RMAN> backup database format='d:backup%d_%s.bak';

啟動 backup 於 20-11月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=154 裝置型別=DISK
通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集內的資料檔案
輸入資料檔案: 檔案號=00001 名稱=D:ORACLE11GORADATAORA11GSYSTEM01.DBF
輸入資料檔案: 檔案號=00002 名稱=D:ORACLE11GORADATAORA11GSYSAUX01.DBF
輸入資料檔案: 檔案號=00005 名稱=D:ORACLE11GORADATAORA11GDATA_01.DBF
輸入資料檔案: 檔案號=00006 名稱=D:ORACLE11GORADATAORA11GUNDOTBS02.DBF
輸入資料檔案: 檔案號=00004 名稱=D:ORACLE11GORADATAORA11GUSERS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 20-11月-08
通道 ORA_DISK_1: 已完成段 1 於 20-11月-08
段控制程式碼=D:BACKUPORA11G_11.BAK 標記=TAG20081120T212648 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:02:05
通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集內的資料檔案
備份集內包括當前控制檔案
備份集內包括當前的 SPFILE
通道 ORA_DISK_1: 正在啟動段 1 於 20-11月-08
通道 ORA_DISK_1: 已完成段 1 於 20-11月-08
段控制程式碼=D:BACKUPORA11G_12.BAK 標記=TAG20081120T212648 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 20-11月-08

RMAN> shutdown immediate;

使用目標資料庫控制檔案替代恢復目錄
資料庫已卸裝
Oracle 例項已關閉

--刪除資料檔案,模擬資料庫損壞

RMAN> startup mount;

資料庫已經啟動
資料庫已裝載


未指定密碼,看是否能夠恢復
RMAN> restore database;

啟動 restore 於 20-11月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=154 裝置型別=DISK

通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00001 還原到 D:ORACLE11GORADATAORA11GSYSTEM01.DBF
通道 ORA_DISK_1: 將資料檔案 00002 還原到 D:ORACLE11GORADATAORA11GSYSAUX01.DBF
通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:ORACLE11GORADATAORA11GUSERS01.DBF
通道 ORA_DISK_1: 將資料檔案 00005 還原到 D:ORACLE11GORADATAORA11GDATA_01.DBF
通道 ORA_DISK_1: 將資料檔案 00006 還原到 D:ORACLE11GORADATAORA11GUNDOTBS02.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:BACKUPORA11G_11.BAK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 11/20/2008 21:33:52 上) 失敗
ORA-19870: 還原備份片段 D:BACKUPORA11G_11.BAK 時出錯
ORA-19913: 無法解密備份
ORA-28365: Wallet 未開啟


下面指定密碼,進行正常的恢復
RMAN> set decryption identified by "mypass";

正在執行命令: SET decryption

RMAN> restore database;

啟動 restore 於 20-11月-08
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00001 還原到 D:ORACLE11GORADATAORA11GSYSTEM01.DBF
通道 ORA_DISK_1: 將資料檔案 00002 還原到 D:ORACLE11GORADATAORA11GSYSAUX01.DBF
通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:ORACLE11GORADATAORA11GUSERS01.DBF
通道 ORA_DISK_1: 將資料檔案 00005 還原到 D:ORACLE11GORADATAORA11GDATA_01.DBF
通道 ORA_DISK_1: 將資料檔案 00006 還原到 D:ORACLE11GORADATAORA11GUNDOTBS02.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:BACKUPORA11G_11.BAK
通道 ORA_DISK_1: 段控制程式碼 = D:BACKUPORA11G_11.BAK 標記 = TAG20081120T212648
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:02:05
完成 restore 於 20-11月-08

RMAN> alter database open; 
資料庫已開啟 
RMAN>

 

2)透明(Transparent)形式

這種方法不需要設定密碼,很適合在本地的備份與恢復,如果備份不需要傳到其他的機器上,建議採用這樣的加密方法。因為不需要密碼,只需要配置加密/解密信任書,也就是Oracle Encryption Wallet.

啟動這種形式的加密方法很簡單,首先需要配置Oracle Encryption Wallet,簡單的步驟如下:

■配置sqlnet.ora,設定加密方式與檔案地址:

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=D:oradatawallet)))

■建立wallet,包括設定密碼、生成信任檔案、並啟動wallet:

SQL> alter system set encryption key authenticated BY "zrp123";

 

然後可以用如下的方式開啟或關閉wallet,需要注意的是,以上的命令完成以後,wallet就自動啟動了,不需要在啟動。

SQL> alter system set wallet open identified by "zrp123";

SQL> alter system set encryption wallet close;

在採用這種方式備份前,確保wallet是open的.

RMAN> configure encryption for database on;

RMAN> set encryption on;

然後就可以加密備份了,下面看一個測試過程:

   D:oracle11gBIN>rman target/
   
   恢復管理器: Release 11.1.0.7.0 - Production on 星期四 11月 20 21:53:17 2008
   
   Copyright (c) 1982, 2007, Oracle. All rights reserved.
   
   已連線到目標資料庫 (未啟動)
   
   RMAN> startup mount;
   
   Oracle 例項已啟動
   資料庫已裝載
   
   系統全域性區域總計     313860096 位元組
   
   Fixed Size                     1347020 位元組
   Variable Size                276824628 位元組
   Database Buffers              29360128 位元組
   Redo Buffers                   6328320 位元組
   
   RMAN> sql 'alter system set wallet open identified by "zrp123"'; --開啟Wallet
   
   使用目標資料庫控制檔案替代恢復目錄
   sql 語句: alter system set wallet open identified by "zrp123"
   
   RMAN> configure encryption for database on;    --採用透明加密方式
   
   新的 RMAN 配置引數:
   CONFIGURE ENCRYPTION FOR DATABASE ON;
   已成功儲存新的 RMAN 配置引數
   
   RMAN> set encryption on;
   
   正在執行命令: SET encryption
   
   RMAN> backup database format='d:backup%d_%s.bak';
   
   啟動 backup 於 20-11月-08
   分配的通道: ORA_DISK_1
   通道 ORA_DISK_1: SID=154 裝置型別=DISK
   通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
   通道 ORA_DISK_1: 正在指定備份集內的資料檔案
   輸入資料檔案: 檔案號=00001 名稱=D:ORACLE11GORADATAORA11GSYSTEM01.DBF
   輸入資料檔案: 檔案號=00002 名稱=D:ORACLE11GORADATAORA11GSYSAUX01.DBF
   輸入資料檔案: 檔案號=00005 名稱=D:ORACLE11GORADATAORA11GDATA_01.DBF
   輸入資料檔案: 檔案號=00006 名稱=D:ORACLE11GORADATAORA11GUNDOTBS02.DBF
   輸入資料檔案: 檔案號=00004 名稱=D:ORACLE11GORADATAORA11GUSERS01.DBF
   通道 ORA_DISK_1: 正在啟動段 1 於 20-11月-08
   通道 ORA_DISK_1: 已完成段 1 於 20-11月-08
   段控制程式碼=D:BACKUPORA11G_13.BAK 標記=TAG20081120T215400 註釋=NONE
   通道 ORA_DISK_1: 備份集已完成, 經過時間:00:02:06
   通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
   通道 ORA_DISK_1: 正在指定備份集內的資料檔案
   備份集內包括當前控制檔案
   備份集內包括當前的 SPFILE
   通道 ORA_DISK_1: 正在啟動段 1 於 20-11月-08
   通道 ORA_DISK_1: 已完成段 1 於 20-11月-08
   段控制程式碼=D:BACKUPORA11G_14.BAK 標記=TAG20081120T215400 註釋=NONE
   通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
   完成 backup 於 20-11月-08
   
   先關閉wallet,並刪除users表空間下的所有資料檔案,模擬損壞表空間,看能不能恢復.   RMAN> sql 'alter system set encryption wallet close';
   
   sql 語句: alter system set encryption wallet close
   
   RMAN> RESTORE TABLESPACE users;
   
   啟動 restore 於 20-11月-08
   使用通道 ORA_DISK_1
   
   通道 ORA_DISK_1: 正在開始還原資料檔案備份集
   通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
   通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:ORACLE11GORADATAORA11GUSERS01.DBF
   
   通道 ORA_DISK_1: 正在讀取備份片段 D:BACKUPORA11G_13.BAK
   RMAN-00571: ===========================================================
   RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
   RMAN-00571: ===========================================================
   RMAN-03002: restore 命令 (在 11/20/2008 21:59:22 上) 失敗
   ORA-19870: 還原備份片段 D:BACKUPORA11G_13.BAK 時出錯
   ORA-19913: 無法解密備份
   ORA-28365: Wallet 未開啟      下面再開啟Wallet,接著恢復看看:
   RMAN> sql 'alter system set wallet open identified by "zrp123"';
   
   sql 語句: alter system set wallet open identified by "zrp123"
   
   RMAN> RESTORE TABLESPACE users;
   
   啟動 restore 於 20-11月-08
   使用通道 ORA_DISK_1
   
   通道 ORA_DISK_1: 正在開始還原資料檔案備份集
   通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
   通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:ORACLE11GORADATAORA11GUSERS01.DBF
   
   通道 ORA_DISK_1: 正在讀取備份片段 D:BACKUPORA11G_13.BAK
   通道 ORA_DISK_1: 段控制程式碼 = D:BACKUPORA11G_13.BAK 標記 = TAG20081120T215400
   通道 ORA_DISK_1: 已還原備份片段 1
   通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
   完成 restore 於 20-11月-08
   
   RMAN> RECOVER TABLESPACE users;
   
   啟動 recover 於 20-11月-08
   使用通道 ORA_DISK_1
   
   正在開始介質的恢復
   介質恢復完成, 用時: 00:00:00
   
   完成 recover 於 20-11月-08
   
   RMAN> alter database open;   
   資料庫已開啟
   
   RMAN>OK,恢復成功.

 

3)混合(Dual-mode)形式

因為在透明模式下,啟動了Oracle Encryption Wallet,這樣的備份是無法到別的機器上去恢復的。這個時候,可以通過設定加密的密碼,如:

RMAN> set encryption on identified by "mypass";

 

對比密碼方式,它僅僅是少了only這個關鍵字,這種情況下,如果在本地備份與恢復,是不需要密碼的,如果是在異地恢復(如在別的機器上恢復該備份),只需要設定解密的密碼即可。

RMAN> set decryption on identified by "mypass";

RMAN> restore database;

 

第三種方式,是前面2種方式的混合模式,就不再繼續測試了

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

相關文章