Oralce的RMAN备份、恢复

 

1、set  oracle_sid=orcl

2、man  target  /

     rman  target  /  log  d:\files\dump.txt

3、热备份:shutdown  immediate;   startup  mount;   alter  database  archivelog;   alter  database  open;   

     raman>backup  database format   “E:\logs\%u”;   

4、全库恢复:shutdown  immediate;   startup  mount;   restore  database;   recorver  database;   

5、异机恢复:以oracle 11g为例

首先编辑一个初始化参数文件 i.ora,文件内容如下:
db_name=orcl                      #假设原先数据库名称是这个
control_files='/u02/orcl/c1.ctl' #控制文件存放位置
compatible=11.2.0.4.0           #兼容性
instance_name=orcl              #实例名

指定一下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 找到最新的一个
 
启动到mount状态
alter database mount;
#sql 'alter database flashback off';  #如果生产库开了闪回,这里要取消一下
catalog start with '/bak' noprompt;  #注册一下最新的备份信息,加上noprompt会更安静

crosscheck backupset;    #校验一下
delete noprompt expired backupset;  #清理一下垃圾信息
list backup of archivelog all;  #找到最大一个sequence号,这里是236,注意下面的序号要+1

开始全库恢复
run{
set until sequence 237;    #这里要比最大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;

顺利的话,没任何错误提示,数据库直接打开。

posted on 2022-10-05 20:48  洞幺人生  阅读(210)  评论(0编辑  收藏  举报