ORACLE 异机恢复
有时候需要将大的数据库发布到客户现场或转移机器时,不得不考虑在异机上恢复已经调整、测试好的库。 dumpdp 全备的方法虽然易用,但在处理对象、索引、空间的时候异常的出错,比如:见有些公司,建表、索引、对象...都是指定了 nologging,dumpdp恢复是默认是指定logging,dumpdp 也没有那么神说还要帮你去检测这些事情,结果一大堆的错误创建失败,几十个动动手改改无所谓,上百个伤不起。所以理想些还是选择 rman 备份恢复。
异机上恢复前准备一个全备或零级备份(也可以用增量备份,但你要把包括从零级备份以来的备份都准备齐全),介意备份,在服务端运行如下代码备份数据库:
run
{
allocate channel dev type disk;
allocate channel dev1 type disk;
backup incremental level 0 database
format 'e:\backup\%d_%s_%U_%T.bkp'
tag 'db_incr0';
backup archivelog all
format 'E:\backup\arc_%d_%U_%T.arc'
tag 'db_arc_all';
backup archivelog from time 'sysdate-2'
tag 'db_arc_2days'
format 'e:\backup\arc_%d_%U_2days_%T.arc';
backup current controlfile
format 'e:\backup\%d_%U_contr_T.bkp'
tag 'db_controlfile';
release channel dev;
release channel dev1;
}
以上脚本,首先进行一个零级的数据库备份,指定存储路径和标记,然后对当前数据库的归档日志进行全备,完成后在对2天以来的归档日志进行备份,保证有两份归档日志备份;最后备份当前的控制文件,为什么要备份控制文件,备份数据库的时候已经自动备份一次了而且还有恢复目录?根据我个人的经验,主要出于以下缘故:
1.如果有恢复目录,那么备份信息最终会被保存到恢复目录和控制文件,如果没有恢复目录,只保存到控制文件,而归档文件又是后备份的(还原先前备份的控制文件时后面的归档备份信息并未被保存),很大程度异机恢复要靠控制文件,这样会造成异机恢复需要归档时有备份但找不到用不了;
2.异机恢复是有可能有许多别的原因,装载控制文件后恢复目录也会有出错。
所以出于各方面因素考虑,我认为还是在数据库备份、归档日志备份结束相关信息写入控制文件后备份一个控制文件,异机恢复是用它恢复。
备份结束后,进行相关验证检查:
1. 验证数据库可恢复性: restore database validate;
2.查看备份的数据文件:
list backup of database;
list backup of datafile 3;
3.查看备份归档日志:
3.1 查看所有备份归档日志:
list backup of archivelog all;
3.2 根据归档日志序列查看备份归档日志:
list backup of archivelog sequence 137;
3.3 查看某个序列到某个序列备份归档日志:
list backup of archivelog sequence between 137 and 200;
3.4 根据时间查看备份归档日志:
list backup of archivelog from time '2013-10-06 14:00:00';
list backup of archivelog from time 'sysdate-2';
查看小于等于指定时间的备份归档日志:
list backup of archivelog until time '2013-10-06 16:00:00';
3.5 根据SCN 查看备份归档日志:
list backup of archivelog from scn 407442698;
查看小于等于指定SCN的备份归档日志:
list backup of archivelog until scn 407442698;
4. 查看备份的控制文件:
list backup of controlfile;
一切就绪,拷贝备份的数据文件、归档文件和pfile文件(手工创建一个,到别的机器上有可能要修改相应路径)到恢复的机器上相同路径下;
异机上恢复数据库:
1.恢复前要建立一个实例,可以用现有的(同一机器上可以有多个同名数据库,但只能有一个同名实例)
windows 平台dos下创建实例: oradim -new -sid orcl
2.根据机器环境修改手工创建的pfile(oracle环境路径、控制文件路径、诊断日志文件....),然后以sys用户进入sqlplus用修改后的pfile文件创建spfile 文件;
create spfile from pfile='dir\pfile.ora';
3.设置环境变量,启动数据库至 nomount 状态,进入 rman 管理器:
rman target /
4.还原控制文件: restore controlfile from 'e:\backup\....' to 'dir';
to 'dir' 未指定是默认使用 spfile上control_files 指定的路径;
5.装载控制文件: alter database mount; (装载控制文件时如果指定数据库名,则指定的数据库名要和spfile 文件中的db_name相同)
6.恢复数据库:
run
{
allocate channel dev type disk;
allocate channel dev1 type disk;
set newname for datafile 1 to 'e:\nsoa\SYSTEM01.dbf';
set newname for datafile 2 to 'e:\nsoa\SYSAUX01.DBF';
set newname for datafile 3 to 'e:\nsoa\TBS1.dbf';
set newname for datafile 4 to 'e:\nsoa\USERS01.DBF';
set newname for datafile 10 to 'F:\nsoa\FRDC_TABLESPACE.DBF';
set newname for datafile 11 to 'F:\nsoa\UNDOTBS02.DBF';
set newname for datafile 12 to 'F:\nsoa\UNDOTBS01.DBF';
set newname for datafile 15 to 'F:\nsoa\SYWU.DBF';
restore database;
switch datafile all;
recover database;
sql 'alter database open resetlogs';
release channel dev;
release channel dev1;
}
对于新的环境,物理路径与控制文件中数据文件的路径相同时无需进行任何操作,可 restore;
如果数据文件路径需要变更,使用 set newname for datafile 1 to 'dir' 方式重新定义,switch datafile all 的意思是切换控制文件中存储的信息(向控制文件表明:我已经重新定义了数据文件路径,请帮我更新过来);switch datafile all 和restore database 的位置不能写错,一定要遵循先 restore 后switch;
recover database 命令会根据当前 restore 后的数据库状态,确认是否需要恢复,然后从控制文件存储的备份归档日志文件中恢复相应归档日志到相应路径下(默认为spfile 中指定的db_recovery_file_dest 路径下)恢复数据库,恢复完成后自动删除该文件;该步骤有可能会失败,需要备份后数据库运行的当前未归档日志。
sql 'alter database open resetlogs' 命令向数据库发出打开的请求(这里有个问题,如果控制文件中日志文件路径在新环境中不存在,打开和新建会失败);处理方法:
1.查询出当前控制文件中记录的日志文件路径: select group#,member from v$logfile;
2.重命名日志文件路径: alter database rename file '...' to '....';
3.执行alter database open resetlogs 打开数据库;
打开数据后执行相关表空间、数据文件...检测,进行一个数据库全备。
ORACLE 异机恢复的更多相关文章
- rman恢复方案和oracle异机恢复
这篇文章主要介绍了rman恢复方案和oracle异机恢复,需要的朋友可以参考下 注:①恢复的前提是已经做好备份②完全恢复数据库是数据库遇到故障,在恢复时候没有丢失任何已经提交事物数据的恢复不完全恢复数 ...
- 使用NBU进行oracle异机恢复
windows平台的异机恢复,目录不同 1.异机环境准备安装oracle介质安装nbu客户端在异机主机的host文件中添加nbu server主机和原主机信息 2.恢复spfile文件 C:\> ...
- Oracle异机恢复
RMAN异机恢复注意事项:1.RMAN 异机恢复的时候,db_name必须相同. 如果说要想改成其他的实例名,可以在恢复成功后,用nid 命令修改. 实例名的信息会记录到控制文件里,所以如果在恢复的时 ...
- oracle异机恢复测试
(一)问题背景 最近在生产环境中,开发人员误操作,使用truncate将oracle数据库某个表的数据全部删除了,在删除之后,开发人员发现自己闯祸了,于是联系值班的DBA进行紧急数据恢复. 经过分析, ...
- 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数据库进行异机恢复,失败,错误:Backup file not found in NetBackup catalog
最近做某数据库恢复演练,数据库版本是10.2.0.4,恢复控制文件一直报错,报错如下,经过反复折腾,原来恢复机上oracle用户不是oracle导致(我的是oraclev4),查看源库oracle用户 ...
- Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复
Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Con ...
随机推荐
- rtmp直播推流(一)--flv格式解析与封装
flv文件格式分析,可参看RTMP中FLV流到标准h264.aac的转换,该文章写的很清晰. flv封装格式解析,可参看视音频数据处理入门:FLV封装格式解析,文章图文并貌,很直观. flv文件封装, ...
- java代码--实现随机输出10个随机数,并显示最大值,最小值
总结;对于length()属性,还不是很熟悉.不会用它. package com.s.x; //随机产生10个随机数,并且显示出最大值,最小值 public class Love { public s ...
- hadoop从调整GC到关键Counter计算原理分析
hadoop集群中发现使用Parallel Scavenge+Parallel Old收集器组合进行垃圾收集(这也是server端jvm默认的GC方式)时CPU占用可能会非常高,偶尔会出现爆满的状态 ...
- Hadoop Map/Reduce的工作流
问题描述 我们的数据分析平台是单一的Map/Reduce过程,由于半年来不断地增加需求,导致了问题已经不是那么地简单,特别是在Reduce阶段,一些大对象会常驻内存.因此越来越顶不住压力了,当前内存问 ...
- (转)python virtual_env 的使用 + 将原来的虚拟环境部署到新环境
原文链接: https://blog.csdn.net/poxiaonie/article/details/78820015
- 5月8日上课笔记-浮动float
IO文件复制 字符流(只能对文本文件进行操作) Reader Writer 字节流(对所有文件都能操作) InputStream OutputStream 一.浮动 边框弧度 border-radiu ...
- 优化笔记:pfyhparopenfundinfotest_D_20140916.gz
性能瓶颈在函数的乱用.原代码黄色部分. 12分钟->35秒 ------------------------------------------------------------------- ...
- thinkphp5集成微信支付【公众号支付】快捷路径
1 下载官方的测试用例PHP版 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 2 到vendor目录新建weixin文件夹 ...
- 微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003
微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003 1 先检查网页的授权域名 不要带http:// 2 检查下自己的appid是否正确 我换了appid没上传,多花了时间 ...
- Eclipse/jre/jdk/jvm
理清一下什么是 jre.jdk.jvm这几个容易混淆的东西. 直接在电脑下安装Eclipse,会提醒你缺少JVM. 1.JVM Java Virtual Machine(Java虚拟机)的缩写. 为了 ...