RMAN加密
来源:互联网 发布:ftp端口 编辑:程序博客网 时间:2024/06/04 23:04
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> setencryption on identified by "mypass" only;
RMAN> backup database;
恢复的时候,则需要指定解密的密码才可:
RMAN> setdecryption 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种方式的混合模式,就不再继续测试了.
- RMAN加密
- RMAN的备份加密
- ORACLE 之 rman 备份加密
- 用RMAN进行Oracle的加密备份
- 初识RMAN4 : RMAN压缩、加密备份,shell中调用RMAN备份
- rman backup命令创建备份之加密备份
- Oracle Database 10g / 11g RMAN备份的加密
- oracle基础--rman服务器管理的备份之备份加密
- rman
- RMAN
- RMAN
- RMAN
- rman
- RMAN
- RMAN
- RMAN
- RMAN
- rman
- BASE64编解码简单实现
- C++中当对象指针为空时,虚函数和非虚函数的调用情况
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_02_修订坐标轴和ParamsForm文本框数据
- glDepthMask
- Ubuntu Linux 环境变量PATH设置
- RMAN加密
- shell 过滤磁盘信息
- WMI_远程计算机配置
- Linux下USB MASS STORAGE驱动的分析和改造
- JS验证用户真实姓名
- 来往干掉微信的必杀技
- js/javascript获取指定字符前/后的字符串
- fuser
- Win32文件系统1-磁盘驱动器