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 ...
随机推荐
- Django 组件-cookie与session
Cookie概述 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中 ...
- "锁"
“锁”,指的是状态切换,状态未切换完成,加上锁,完成后才打开锁. 下面例子要完成一个点击按钮切换颜色的小示例,先看未加“锁”时候的效果 <!DOCTYPE html> <html l ...
- USB通信协议
转自http://blog.csdn.net/myarrow/article/details/8484113 0. 基本概念 一个[传输](控制.批量.中断.等时):由多个[事务]组成: 一个[事务] ...
- Vmware虚拟机linux上网问题
1.虚拟机linux上网问题 1.1 VMware中虚拟机网络的三种设置 第一种:桥接(bridged) 第二种:NAT 第三种:Host only . 这种模式下仅主机可以上网,虚拟机不能上网. 1 ...
- Mysql踩过的坑
数据表示例 1.NOT IN 结果集为空 ①SELECT class_no FROM t_student; 结果为: ②SELECT * FROM t_student where class_no n ...
- ceph中用sgdisk工具进行分区--------固定uuid
ceph中两种类型分区的type code: type type code journal 45b0969e-9b03-4f30-b4c6-b4b80ceff106 osd 4fbd7e29-9d25 ...
- SSD固态盘应用于Ceph集群的四种典型使用场景
在虚拟化及云计算技术大规模应用于企业数据中心的科技潮流中,存储性能无疑是企业核心应用是否虚拟化.云化的关键指标之一.传统的做法是升级存储设备,但这没解决根本问题,性能和容量不能兼顾,并且解决不好设备利 ...
- MonkeyScript测试命令集合
MonkeyScript:(不支持截屏) 可以被Monkey识别的集合命令 可以完成重复固定的操作 MonkeyRunner(支持截屏操作) 提供一系列API,可以完成模拟事件和截屏操作 Mo ...
- 28_java之mysql的CRUD
01数据库概念 * A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据 ...
- 1、svn架设、基本命令
SVN是Subversion的简称,是一个开放源代码的版本控制系统.是一项十分基础,必须能够熟练使用的工具.Apache网站:https://subversion.apache.org/ 采用C/S模 ...