有时为了验证备份有效性,需要把备份恢复到另外一台机器上,期间几个步骤会提示这样那样的错误,对于一些比较认真的客户来说,嗯?怎么报错了,是不是备份有问题?
参考以下步骤,基本上看不见异常信息,可以让客户更放心些。
以oracle 11g为例
首先编辑一个初始化参数文件 i.ora,文件内容如下:
db_name=orcl #假设原先数据库名称是这个
control_files='/u02/orcl/c1.ctl' #控制文件存放位置
compatible=11.2.0.4.0 #兼容性
instance_name=orcl #实例名
db_files=2000 #好像有时得加这个
指定一下
SID环境变量,恢复环境通常会有多个库在一台主机上验证
export ORACLE_SID=orcl
启动数据库到nomount状态
sqlplus / as sysdba
startup nomount pfile='/home/oracle/i.ora';
通过rman恢复控制文件
rman target /
restore controlfile from '/bak/db0uvesnbe_1_1'; #这是控制文件备份片名称。通常你恢复时不知道,需要通过在生产库中的rman 里执行list backup of controlfile 找到{BANNED}最佳新的一个
启动到mount状态
alter database mount;
#sql 'alter database flashback off'; #如果生产库开了闪回,这里要取消一下
catalog start with '/bak' noprompt; #注册一下{BANNED}最佳新的备份信息,加上noprompt会更安静
crosscheck backupset; #校验一下
delete noprompt expired backupset; #清理一下垃圾信息
list backup of archivelog all; #找到{BANNED}最佳佳大一个sequence号,这里是236,注意下面的序号要+1
开始全库恢复
run{
set until sequence 237; #这里要比{BANNED}最佳大sequence号多1个,即236+1
set newname for database to '/u02/orcl/%b'; #简化了不少
restore database;
switch datafile all;
switch tempfile all;
recover database;
}
修改redo log位置,执行以下语句得到修改命令:
set lin 120 pages 100
select 'ALTER DATABASE RENAME FILE '''||member||''' to '||''''||'/u02/orcl/'||substr(member,instr(member,'/',-1)+1)||''';' txt from v$logfile;
顺便清理一下
select 'alter database clear logfile group '||group#||';' cc from v$log;
万事俱备,打开数据库
alter database open resetlogs;
顺利的话,没任何错误提示,数据库直接打开。
阅读(1270) | 评论(0) | 转发(0) |