应用场景:服务器A为正常运行的生产环境,需要在服务器B上部署一套相同环境做测试。

数据库环境:RHEL6.4 + Oracle 11.2.0.4.7

一、 服务器A备份数据库

二、 服务器B恢复数据库

一、 服务器A备份数据库

1.1 在线备份(数据库运行在归档模式)

```
nohup /bin/bash backup_all.sh &
```
备份完将所有备份介质传到服务器B(如果两台机器是内连网络,可以考虑结合NFS服务从一开始就备份到服务器B上)。

1.2 备份脚本内容

```
#!/bin/bash
#ScriptName:backup_all.sh
#Usage: backup all files in oracle user environment.
#ex: nohup /bin/bash backup_all.sh > backup.log &
#Author: Alfred Zhao
#Creation: 2015-09-11
#Version: 1.0.0

Define variable

basedir=/u01/orabak

date=date +%Y%m%d

Create pfile

sqlplus / as sysdba <<EOF

create pfile='$basedir/pfile$date.ora' from spfile;

EOF

RMAN BACKUP

rman target / log=$basedir/backup_all_$date.log <<EOF

run{

allocate channel c1 device type disk;

allocate channel c2 device type disk;

backup database filesperset 4 format '$basedir/full_%d_%T_%s_%p';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

backup archivelog all format '$basedir/arch_%d_%T_%s_%p' delete input;

backup current controlfile format '$basedir/ctl_%d_%T_%s_%p';

release channel c1;

release channel c2;

}

EOF


<h1 id="2">2. 服务器B恢复数据库</h1>
<h2 id="2.1">2.1 服务器B安装数据库软件</h2>
参考[http://www.cnblogs.com/jyzhao/p/3891769.html](http://www.cnblogs.com/jyzhao/p/3891769.html)安装数据库软件及之前的相关配置。
然后创建密码文件:

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle force=y entries=5

<h2 id="2.2">2.2 启动实例到nomount状态(指定pfile文件)</h2>
将`$basedir/pfile$date.ora`文件复制到`$ORACLE_HOME/dbs/init$ORACLE_SID.ora`,根据实际服务器B的情况修改。然后启动实例到nomount状态(指定pfile文件)。

startup nomount pfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora'

<h2 id="2.3">2.3 RMAN恢复控制文件,确定备份集有效性</h2>
### 2.3.1 RMAN恢复控制文件,启动数据库到mount状态,确定备份集有效性 ###

backupControlFile=/u01/orabak/backup/ctl_JINGYU_20150911_46_1

rman target / > crosscheck.log <<EOF

restore controlfile from '$backupControlFile';

alter database mount;

crosscheck backupset;

EOF

### 2.3.2 如果备份集无效,删除无效备份集,手工注册备份集 ###
一般是两台主机的备份目录不一样,控制文件记录的备份集路径找不到对应的备份集,状态为'EXPIRED',此时应该删除这些过期的备份集,catalog新的备份集,再次确认备份集有效性。

rman target / > catalog.log <<EOF

catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_39_1';

catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_40_1';

catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_41_1';

catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_42_1';

catalog backuppiece '/u01/orabak/backup/arch_JINGYU_20150911_43_1';

catalog backuppiece '/u01/orabak/backup/arch_JINGYU_20150911_44_1';

catalog backuppiece '/u01/orabak/backup/arch_JINGYU_20150911_45_1';

crosscheck backupset;

delete noprompt expired backupset;

EOF

<h2 id="2.4">2.4 RMAN恢复数据库</h2>
### 2.4.1 restore数据文件 ###
如果数据文件存放目录已经更改,需要重命名还原。

rman target / log=restore.log <<EOF

run {

allocate channel c1 device type disk;

allocate channel c2 device type disk;

set newname for datafile 1 to '/u01/oradata02/o1_mf_system_01.dbf';

set newname for datafile 2 to '/u01/oradata02/o1_mf_sysaux_01.dbf';

set newname for datafile 3 to '/u01/oradata02/o1_mf_undotbs1_01.dbf';

set newname for datafile 4 to '/u01/oradata02/o1_mf_users_01.dbf';

set newname for datafile 5 to '/u01/oradata02/o1_mf_dbs_d_ji_01.dbf';

set newname for datafile 6 to '/u01/oradata02/o1_mf_dbs_d_lu_01.dbf';

set newname for datafile 7 to '/u01/oradata02/o1_mf_dbs_d_xx_01.dbf';

set newname for datafile 8 to '/u01/oradata02/o1_mf_dbs_i_xx_01.dbf';

restore database;

switch datafile all;

release channel c1;

release channel c2;

}

EOF

### 2.4.2 recover数据文件 ###
#### 2.4.2.1 recover database; ####

rman target / log=recover.log <<EOF

recover database;

EOF


#### 2.4.2.2 recover database until scn xxxxxxx; ####

scn=1463689

rman target / log=recover$scn.log <<EOF

recover database until scn $scn;

EOF

这个scn根据上一步的日志信息获取。

### 2.4.3 修改日志文件路径 ###

new_dest=/usr3/oradata/sysdata/redo_file

sqlplus / as sysdba > logfile.log<<EOF

set linesize 180 pagesize 100

select 'alter database rename file '''||member||''' to ''$new_dest/redoXXX.log'';' from v$logfile;

EOF

**注意:**可以用UE列编辑模式快速处理下新的redo文件名字(即redoXXX.log改为对应的实际值)。

### 2.4.4 修改临时文件路径 ###

new_dest=/usr3/oradata/sysdata

sqlplus / as sysdba > tempfile.log<<EOF

set linesize 180 pagesize 100

select 'alter database rename file '''||name||''' to ''$new_dest/tempXXX.dbf'';' from v$tempfile;

EOF

**注意:**同样处理下新的temp文件名字(即tempXXX.dbf改为对应的实际值)。

### 2.4.5 打开数据库(resetlogs) ###

sqlplus / as sysdba > dbopen.log<<EOF

alter database open resetlogs;

EOF

启动过程中会自动创建redo文件,temp文件。

<h2 id="2.5">2.5 恢复后操作</h2>
### 2.5.1 查看数据库基本信息 ###
查看数据库实例和库的状态,数据文件、临时文件、日志文件、控制文件、参数文件路径信息。

sqlplus / as sysdba > dbstatus.log <<EOF

select instance_name, status from v$instance;

select dbid, open_mode from v$database;

select file_name from dba_data_files;

select file_name from dba_temp_files;

select member from v$logfile;

show parameter control

show parameter pfile

EOF

### 2.5.2 创建spfile文件,重启数据库 ###
创建spfile文件

sqlplus / as sysdba > createSpfile.log <<EOF

create spfile from pfile;

EOF

关闭数据库

sqlplus / as sysdba > shutdownDB.log <<EOF

shutdown immediate

EOF

启动数据库

sqlplus / as sysdba > startDB.log <<EOF

startup

EOF


### 2.5.3 监听的配置 ###
修改监听配置文件:`$ORACLE_HOME/network/admin/listener.ora`

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB02)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

ADR_BASE_LISTENER = /u01/app/oracle

对应服务器主机名相关的3处修改:
  1. hostname显示正确主机名
  2. /etc/sysconfig/network中HOSTNAME配置
  3. /etc/hosts中IP地址和主机名的对应关系
启动监听及查看监听状态:

lsnrctl start

lsnrctl status

RMAN异机恢复快速参考的更多相关文章

  1. Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复

    Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Con ...

  2. Linux平台下RMAN异机恢复总结

    下面总结.整理一下RMAN异机恢复这方面的知识点,这篇笔记在个人笔记里面躺了几年了,直到最近偶然被翻看到,遂整理.总结一下.如下所示,个人将整个RMAN异机恢复分为准备工作和操作步骤两大部分.当然,准 ...

  3. RMAN异机恢复实验---转载

    一.RMAN异机恢复实验 2011年3月23日00:44 1.环境介绍: 主机1: 操作系统 REDHAT5.5 IP地址 172.16.1.120 主机名 sigle 数据库版本 10.2.0.4 ...

  4. Oracle12c RAC RMAN异机恢复

    ######################################################## #编辑pfile文件initspdb.ora vi /oracle/app/oracl ...

  5. RMAN异机恢复遭遇ORA-01547、ORA-01152、ORA-01110错误案例

    测试环境:     操作系统  :  Red Hat Enterprise Linux ES release 4 (Nahant Update 4)   VMWARE     数据库     :  O ...

  6. oracle rman异机恢复

      Oracle源主机 Oracle目标主机 主机平台 CentOS6.2(final) CentOs6.2(FInal) 主机名 vick rman IP地址 192.168.1.11 192.16 ...

  7. rman异机恢复,全部恢复和增量恢复

    1.首先准备工作:hostname 192.168.222.11 ol7.localdomain ol7建立相关目录:mkdir -p /u01/app/oracle/oradata/DB11G/mk ...

  8. RMAN异机恢复步骤及故障处理

    一.測试机安装OS+Oracle Software.包含配置oracle用户.组和环境变量(略) 二.開始异机恢复 1. 复制源库最新备份集.初始化參数.password文件到測试机 [oracle@ ...

  9. NBU Rman异机恢复Oracle

    前段时间一个亿级分区表,被分割成历史表和业务表,历史表中保留15天以外的数据,每天都会从业务表中的15天外的数据copy到历史表,并删除业务表15天外的数据,逻辑也很简单,但插入历史表的where 条 ...

随机推荐

  1. Castle Core 4.0.0 alpha001发布

    时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...

  2. HTML渲染过程详解

    无意中看到寒冬关于前端的九个问题,细细想来我也只是对第一.二.九问有所了解,正好也趁着这个机会梳理一下自己的知识体系.由于本人对http协议以及dns对url的解析问题并不了解,所以这里之探讨url请 ...

  3. Unity 序列化 总结

    查找了 Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http:// ...

  4. WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果

    前言 话说又来需求了,之前对于在SelfHost中需要嵌套页面并操作为非正常需求,这回来正常需求了,客户端现在加了https,老大过来说WebAPi访问不了了,这是什么情况,我去试了试,还真是这个情况 ...

  5. 高频交易算法研发心得--MACD指标算法及应用

    凤鸾宝帐景非常,尽是泥金巧样妆. 曲曲远山飞翠色:翩翩舞袖映霞裳. 梨花带雨争娇艳:芍药笼烟骋媚妆. 但得妖娆能举动,取回长乐侍君王. [摘自<封神演义>纣王在女娲宫上香时题的诗] 一首定 ...

  6. SDWebImage源码解读_之SDWebImageDecoder

    第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程 ...

  7. “fixed+relative==absolute”——对BFC的再次思考

    好久没写博客了,刚好今天跨年夜没约到什么妹子,在家宅着不如写点东西好了. 需求 昨天晚上,给公司年会做一个移动端的投票页面,遇到一个UI优化的问题: · 正文内容少于一屏时,投票提交按钮固定显示在页面 ...

  8. 手机游戏渠道SDK接入工具项目分享(二)万事开头难

    一般接到任务后程序员们通常都开始着手进行技术调研了,但我这活是项目负责人.还有一大堆事情要先期准备,没人能帮忙. 一.人力配置 考虑的之前已经有一波人搞了大半年,但没有起色,先期也没有太大人力需求,所 ...

  9. Atitit.attilax软件研发与项目管理之道

    Atitit.attilax软件研发与项目管理之道 1. 前言4 2. 鸣谢4 3. Genesis 创世记4 4. 软件发展史4 5. 箴言4 6. 使徒行传 4 7. attilax书 4 8. ...

  10. Atitit 软件工程概览attilax总结

    Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...