RMAN的备份加密

 

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:BACKUPORA 11G _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:BACKUPORA 11G _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:BACKUPORA 11G _11.BAK

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: restore 命令 ( 11/20/2008 21:33:52 ) 失败

ORA-19870: 还原备份片段 D:BACKUPORA 11G _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:BACKUPORA 11G _11.BAK

通道 ORA_DISK_1: 段句柄 = D:BACKUPORA 11G _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; 

 

在采用这种方式备份前,确保walletopen.

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:BACKUPORA 11G _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:BACKUPORA 11G _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:BACKUPORA 11G _13.BAK

   RMAN-00571: ===========================================================

   RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

   RMAN-00571: ===========================================================

   RMAN-03002: restore 命令 ( 11/20/2008 21:59:22 ) 失败

   ORA-19870: 还原备份片段 D:BACKUPORA 11G _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:BACKUPORA 11G _13.BAK

   通道 ORA_DISK_1: 段句柄 = D:BACKUPORA 11G _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种方式的混合模式,就不再继续测试了.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值