使用network管理DD恢复全库操作步骤

使用network管理DD恢复全库操作步骤
基本信息:
系统平台:RHEL 5.4_86_64
database版本:11.2.0.2.0-64bit
1、检查目标主机是否安装networker客户端。
ps -ef | grep nsr
无软件需要安装软件networker客户端。

2、检查各个主机中/etc/hosts文件对相应主机进行解析。
networker备份服务器 主机名
源服务器DB 主机名
目标服务器DB 主机名
三台主机必须相互解析。
notes:
在legato networker配置中修改当前恢复主机允许远程调用。
legato networker控制台:Configuration-->Clients-->Clients properties(Globals(2 of 2))的remote access添加 *@*

3、备份源主机当前的控制文件并拷贝到目标主机中。
$rman target /
RMAN> copy current controlfile to '/home/oracle/bakcontrolfile.ctl'

$scp /home/oracle/bakcontrolfile.ctl oracle@目标主机IP:/oracle/home

4、目标主机中恢复控制文件。
$rman target /
RMAN> shutdown immediate;
RMAN> starup nomount;
RMAN> restore controlfile from '/home/oracle/bakcontrolfile.ctl';
RMAN> sql 'alter database mount';

notes:如果从带库中恢复控制文件
run{
allocate channel t1 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
restore controlfile from "cntl_17583_1_816914901"; --恢复带库中相应日期的控制文件
sql 'alter database mount';
}
5、编写还原数据文件的脚本。
根据源主机中的备份脚本编写还原脚本。
包含两个,源主机备份脚本位置:
/nsr/scritpts/orafull 全备份脚本
/nsr/scritpts/oraarch 归档备份脚本

只要备份脚本中相关通道信息:
实例脚本如下:
run{
allocate channel t1 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
allocate channel t2 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
allocate channel t3 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
allocate channel t4 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
restore .....
}
6、目标主机中执行还原数据文件的脚本。--时间比较长,根据备份文件大小。
脚本如下:
$cat full.sh
run{
allocate channel t1 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
restore database until time "to_date('2012-11-19 00:00:00','yyyy-mm-dd hh24:mi:ss')";
}
$rman target / cmdfile=full.sh log=/home/oracle/full-`date +%F`.log --恢复数据文件
7、编写还原归档的脚本。
需要查询服务的归档日志序列。
$sqlplus / as sysdba
SQL> set linesize 400
SQL> set pagesize 999
SQL> col archive_name format a90
SQL> select * from v$recovery_log; --找到需要的归档日志序列号。
脚本如下:
$cat arch.sh
run{
allocate channel t1 type 'sbt_tape';
send 'NSR_ENV=(NSR_SERVER=back-server.product.com,NSR_CLIENT=dbserver-21,NSR_DATA_VOLUME_POOL=oraclevtl)';
restore archivelog from logseq 27421 until logseq 27425;
}
$rman target / cmdfile=arch.sh logfile=/home/oracle/arch-`date +%F`.log --恢复归档文件
8、恢复数据库。
$sqlplus / as sysdba
SQL> set linesize 200
SQL> col name format a70
SQL> select FILE#,STATUS,enabled,name,CREATION_TIME from v$datafile; --查询文件状态。
SQL> recover database using backup controlfile until time '2013-05- 00:00:00'; --依据时间点恢复数据库
SQL> alter database open resetlogs;

notes:
恢复时如果提示数据文件没有恢复问题,备份时该数据文件并没有,是后来添加的数据文件。
需要如下操作
alter database datafile '+DATA/orcl/datafile/gdb_data21.dbf' offline drop;
都删除后再执行restore命令。

posted @ 2014-08-30 16:17  gwy195600  阅读(565)  评论(0编辑  收藏  举报