rman恢复方案和oracle异机恢复
这篇文章主要介绍了rman恢复方案和oracle异机恢复,需要的朋友可以参考下
注:
①恢复的前提是已经做好备份
②完全恢复数据库是数据库遇到故障,在恢复时候没有丢失任何已经提交事物数据的恢复
不完全恢复数据库是数据库遇到故障,在恢复时候丢失部分数据的恢复
③在linux下需要设置环境变量,即需要恢复的oracle数据库的实例名:export ORACLE_SID=orcl
④当用resetlogs启动数据库时,应该要对数据库进行一次全备份
一、恢复方案
1、丢失数据文件,进行完全恢复
复制代码 代码如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';
2、丢失重做日志文件,进行不完全恢复
复制代码 代码如下:
SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;
3、丢失数据文件、控制文件和重做日志文件,进行不完全恢复
复制代码 代码如下:
RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
4、丢失初始化文件、控制文件数据文件和重做日志文件,进行不完全恢复
复制代码 代码如下:
SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile的路径
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
5、基于时间点的恢复(常用)
复制代码 代码如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #设置显示时间格式
RMAN>recover database until time '20140312 17:07:00'; #把数据库恢复到2014-03-12 17:07:00这一时间点上
RMAN>sql 'alter database open resetlogs';
6、基于SCN的恢复
复制代码 代码如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database until scn 963915;
RMAN>sql 'alter database open resetlogs';
①查询当前SCN号:
复制代码 代码如下:
SQL>select dbms_flashback.get_system_change_number from dual;
②根据SCN号查询时间:
复制代码 代码如下:
SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;
③根据时间查询SCN号:
复制代码 代码如下:
SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;
④查询一段时间内的SCN号:
复制代码 代码如下:
SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<20;
7、深入理解incarnation:就是可以跨越resetlogs进行数据恢复
①每一次resetlogs就会使incarnation + 1;如果想要恢复到之前incarnation的scn,就需要先恢复到之前的incarnation;
②Incarnation 11 and 12都包括scn 900000 的spot,所以当incarnation 12 做 until scn的时候,是恢复到当前incarcation 的 scn;但是根据我们的需要,我们需要的是incarnation 11的scn 900000;所以就需要切换incarnation到incarnation 11,才能找回我们需要的数据。
RMAN>reset database to incarnation 11;
8、recover database的四条语句区别
① SQL>recover database using backup controlfile
如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉oracle,不要以controlfile中的scn作为恢复的终点。
②SQL>recover database until cancel
如果丢失current/active redo的时候,手动指定终点。
③SQL>recover database using backup controlfile until cancel;
如果丢失当前controlfile并且current/active redo都丢失,会先去自动应用归档日志,可以实现最大的恢复;
④SQL>recover database until cancel using backup controlfile;
如果丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点,因为没有应用归档日志,所有会丢失数据。
要理解recover database using backup controlfile,先理解 recover database;在普通的recover database 或者 recover tablespace, recover datafile时, Oracle会以当前controlfile所纪录的SCN为准,利用archive log和 redo log的redo entry, 把相关的datafile 的 block恢复到“当前controlfile所纪录的SCN”;而某些情况下,Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要靠后的位置(比如说,control file是backup controlfile , 或者 controlfile是根据trace create的。),这时候,就需要用using backup controlfile. 恢复就不会受“当前controlfile所记录的SCN”的限制。这时候的限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel) 。如果控制文件丢失,restore备份的控制文件后,则必须使用using backup controlfile选项。而until cancel则是不完全恢复,即current/active redo丢失,或者从restore数据库后某个归档文件缺失,则终止。
结论:
如果有旧的数据库备份,在归档日志和在线日志全部保存完好的情况下,使用recover database或recover database using backup controlfile,则不丢失数据
如果存在备份数据文件restore后,归档日志或者在线日志(active、current)丢失情况下,使用recover database using backup controlfile until cancel,则可以实现最大恢复。
二、RMAN异机恢复(源数据库和目标数据库的实例名要一致)
1、对源数据库进行备份
复制代码 代码如下:
RMAN>backup database plus archivelog;
RMAN>backup current controlfile;
2、生成源数据库的参数文件,修改后传至目标数据库
3、在windows平台下进行恢复
复制代码 代码如下:
C:\>oradim -new -sid orcl #创建一个orcl服务
C:\>set ORACLE_SID=orcl
C:\>sqlplus "/as sysdba";
SQL>startup nomount pfile='C:\INITorcl.ORA';
SQL> create spfile from pfile='C:\INITorcl.ORA';
SQL> shutdown immediate;
SQL>exit;
C:\>set ORACLE_SID=orcl
C:\>rman target/
RMAN>startup nomount;
RMAN>restore controlfile to '目标数据库控制文件放置的位置及名称' from '备份控制文件放置的位置';
RMAN>alter database mount;
RMAN>catalog start with '备份集放置的位置'; #向控制文件中添加备份集
RMAN>crosscheck backup;
RMAN>report schema;
编写下边脚本并运行
复制代码 代码如下:
run
{
set newname for datafile 1
to 'C:\oracle\product\10.2.0\oradata\orcl\SYSTEM.DBF'; #实例中SYSTEM.DBF放置的位置
set newname for datafile 2
to 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS1.DBF';
set newname for datafile 3
to 'C:\oracle\product\10.2.0\oradata\orcl\SYSAUX.DBF';
set newname for datafile 4
to 'C:\oracle\product\10.2.0\oradata\orcl\USERS.DBF';
set newname for datafile 5
to 'C:\oracle\product\10.2.0\oradata\orcl\BANK_DATA02.DBF';
restore database;
switch datafile all;
}
RMAN>recover database;
RMAN>sql 'alter database open resetlogs';
恢复成功
rman恢复方案和oracle异机恢复的更多相关文章
- 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复
[RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...
- oracle异机恢复测试
(一)问题背景 最近在生产环境中,开发人员误操作,使用truncate将oracle数据库某个表的数据全部删除了,在删除之后,开发人员发现自己闯祸了,于是联系值班的DBA进行紧急数据恢复. 经过分析, ...
- 使用NBU进行oracle异机恢复
windows平台的异机恢复,目录不同 1.异机环境准备安装oracle介质安装nbu客户端在异机主机的host文件中添加nbu server主机和原主机信息 2.恢复spfile文件 C:\> ...
- ORACLE 异机恢复
有时候需要将大的数据库发布到客户现场或转移机器时,不得不考虑在异机上恢复已经调整.测试好的库. dumpdp 全备的方法虽然易用,但在处理对象.索引.空间的时候异常的出错,比如:见有些公司,建表.索引 ...
- Oracle异机恢复
RMAN异机恢复注意事项:1.RMAN 异机恢复的时候,db_name必须相同. 如果说要想改成其他的实例名,可以在恢复成功后,用nid 命令修改. 实例名的信息会记录到控制文件里,所以如果在恢复的时 ...
- oracle异机恢复参考官方文档
How to use Rman Duplicate on ASM/RAC/OMF/Single Instance (Doc ID 840647.1) How to perform Rman dupli ...
- oracle异机恢复 open resetlogs 报:ORA-00392
参考文档:ALTER DATABASE OPEN RESETLOGS fails with ORA-00392 (Doc ID 1352133.1) 打开一个克隆数据库报以下错误: SQL> a ...
- Hyper-V安装Oracle Linux6_4 Oracle db 12c并使用rman做异机恢复
本文记录在Windows Server 2012 R2上安装Oracle Enterprise Linux 6.4以及使用RMAN进行进行异机恢复的过程. Windows服务器增加Hyper-V功能 ...
- Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复
Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Con ...
随机推荐
- vuex中怎么把‘库’中的状态对象赋值给内部对象(三种方法)
一.通过computed的计算属性直接赋值 import store from '@/store/store' export default{ name: 'count', data(){ retur ...
- spring cloud连载第三篇补充之Zuul
由于Zuul的内容较多所以单独列出一篇来讲.全是干货,如果学到东西的,动动小手给点个推荐^_^ 谢谢! 1. Router and Filter: Zuul(路由和过滤:Zuul) 路由是微服务架构 ...
- hadoop学习笔记(八):MapReduce
一.MapReduce编程模型 一种分布式计算框架,解决海量数据的计算问题. MapReduce将整个并行计算过程抽象到两个函数: Map(映射):对一些独立元素组成的列表的每一个元素进行制定的操作, ...
- Template parse errors: The pipe 'translate' could not be found
问题描述: 基于Ionic最新的super模板,创建的项目,在自己改造成懒加载机制后,原本正常的项目出现问题了,提示模板内部使用的翻译管道找不到,如图: 模板内部使用的翻译管道代码,我确定没有问题, ...
- ASP.Net ListBox DropdownList 不同条目设置背景色和字体颜色( 转· 载 )
ASP.Net ListBox DropdownList 不同条目设置背景色和字体颜色 2009-09-30 来自:真有意思 [ZU14.CN] 字体大小:[大 中 小] 摘要:在HTML展现页面 ...
- Mybatis源代码分析之parsing包
parsing,从字面上理解就是编译解析的意思,那么这个包中的内容就应该和mybatis配置文件的编译解析有关系.本文首先会按照引用层次来分别介绍这个包中各个类的作用,而后再用实际的例子解释它们是如何 ...
- HDU2612(KB1-N)
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- CSS 的介绍
第一章 的介绍 1.CSS:“层叠样式表”,它是cascading style sheets的缩写,作用就是给HTML标签加表现形式(样式-显示),如:字体,图片,列表,位置等. 在浏览器中可以看到部 ...
- YII关联查询
原文链接:http://keshion.iteye.com/blog/1607994 一.多表关联的配置 在我们使用 AR 执行关联查询之前,我们需要让 AR 知道一个 AR 类是怎样关联到另一个的. ...
- opencv图像处理时使用文件输入流ifstream批量读取图片
简介: 在利用opencv进行图像处理时,通常需要批量读取图片,然后做相应的处理,我们可以用C++文件的输入流来进行图片的读取,这要求我们应该事先,将图片图片名生成txt文件,具体请参见之前的博文[u ...