RMAN异机恢复快速参考
应用场景:服务器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处修改:
- hostname显示正确主机名
- /etc/sysconfig/network中HOSTNAME配置
- /etc/hosts中IP地址和主机名的对应关系
启动监听及查看监听状态:
lsnrctl start
lsnrctl status
RMAN异机恢复快速参考的更多相关文章
- Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复
Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Con ...
- Linux平台下RMAN异机恢复总结
下面总结.整理一下RMAN异机恢复这方面的知识点,这篇笔记在个人笔记里面躺了几年了,直到最近偶然被翻看到,遂整理.总结一下.如下所示,个人将整个RMAN异机恢复分为准备工作和操作步骤两大部分.当然,准 ...
- RMAN异机恢复实验---转载
一.RMAN异机恢复实验 2011年3月23日00:44 1.环境介绍: 主机1: 操作系统 REDHAT5.5 IP地址 172.16.1.120 主机名 sigle 数据库版本 10.2.0.4 ...
- Oracle12c RAC RMAN异机恢复
######################################################## #编辑pfile文件initspdb.ora vi /oracle/app/oracl ...
- RMAN异机恢复遭遇ORA-01547、ORA-01152、ORA-01110错误案例
测试环境: 操作系统 : Red Hat Enterprise Linux ES release 4 (Nahant Update 4) VMWARE 数据库 : O ...
- oracle rman异机恢复
Oracle源主机 Oracle目标主机 主机平台 CentOS6.2(final) CentOs6.2(FInal) 主机名 vick rman IP地址 192.168.1.11 192.16 ...
- rman异机恢复,全部恢复和增量恢复
1.首先准备工作:hostname 192.168.222.11 ol7.localdomain ol7建立相关目录:mkdir -p /u01/app/oracle/oradata/DB11G/mk ...
- RMAN异机恢复步骤及故障处理
一.測试机安装OS+Oracle Software.包含配置oracle用户.组和环境变量(略) 二.開始异机恢复 1. 复制源库最新备份集.初始化參数.password文件到測试机 [oracle@ ...
- NBU Rman异机恢复Oracle
前段时间一个亿级分区表,被分割成历史表和业务表,历史表中保留15天以外的数据,每天都会从业务表中的15天外的数据copy到历史表,并删除业务表15天外的数据,逻辑也很简单,但插入历史表的where 条 ...
随机推荐
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- 【原】AFNetworking源码阅读(四)
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...
- Android探索之AIDL实现进程间通信
前言: 前面总结了程序间共享数据,可以使用ContentProvider也可以使用SharedPreference,那么进程间怎么共享内存呢?Android系统中的进程之间不能共享内存,因此,需要提供 ...
- 用scikit-learn学习谱聚类
在谱聚类(spectral clustering)原理总结中,我们对谱聚类的原理做了总结.这里我们就对scikit-learn中谱聚类的使用做一个总结. 1. scikit-learn谱聚类概述 在s ...
- Nginx如何处理一个请求
看了下nginx的官方文档,其中nginx如何处理一个请求讲解的很好,现在贴出来分享下.Nginx首先选定由哪一个虚拟主机来处理请求.让我们从一个简单的配置(其中全部3个虚拟主机都在端口*:80上监听 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 关键帧动画:@keyframes
关键帧动画:@keyframes: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Eclipse使用Git教程
A:点击Window--->Show view--->other..--->Git Repositories--->[OK] B:克隆码云上的代码仓库 C:选择对应目录存储你的 ...
- 虚拟机VMware12.05下安装Ubuntu16.04几个关键地方
在踩了自己按照网上的教程安装Ubuntu之后,仍然踩了不少坑,鼓捣了一段时间,才达到自己想要的界面. 下面就来说说,大家可能也会遇到的情况: 1.安装ISO镜像时候,路径直接选择 你从Ubun ...