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;
顺利的话,没任何错误提示,数据库直接打开。