1,环境
生产环境:Redhat Linux 5.4 64位+Oracle 11G R1
恢复环境:Redhat Linux 5.4 64位+Oracle 11G R1
因为试验过恢复到11G R2 ,尽是问题,从低版本恢复到高版本,之后要升级数据库版本才能解决的,如果是高版本,或许还要降恢复后的数据文件头版本号,麻烦!所以还是建议做Rman的,都在相同版本迁移恢复,比较容易解决问题;
生效:
3,拷贝备份和归档到恢复机器对应的路径下,最好对应备份目录,不然可以软连接解决目录问题
适合场合:恢复的目录一致,同时备份的过程中有归档日志
恢复的数据库目录和备份机的数据库一致,还有一个就是RMAN备份的时候已经备份了归档日志。
【目录最好一致,如果条件限制,可以做个文件夹软连接,使目录一致】
备份脚本:
-
run{
-
allocalte channel c1 type disk;
-
allocalte channel c2 type disk;
-
sql 'alter system archive log current';
-
backup as compressed backupset database format '/mnt/backup/full_%T_%U';
-
sql 'alter system archive log current';
-
backup as compressed backupset archivelog all format '/mnt/backup/arc_%T_%U';
-
bakup current controlfile format '/mnt/backup/cf_%T_%U';
-
backup spfile format '/mnt/backup/sp_%T_%U';
-
release channel c1;
-
release channel c2;
-
}
复制代码
2,备份库安装数据库,不要建库,设置好相应环境变量
-
su – oracle
复制代码
-
vim ~/.bash_profile
复制代码
-
export ORACLE_BASE=/opt/app/oracle
-
export ORACLE_HOME=/opt/app/oracle/11g/db_1
-
export ORACLE_SID=orcl --这个一定要对应
-
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
-
unset USERNAME
复制代码
-
source ~/.bash_profile
复制代码
4,迁移恢复过程
首先创建口令文件
orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl password=123456 entries=5
1) rman target /
2)set dbid=12665668;【dbid 可以由源库查询到】
3)startup nomount; 之后会报错,因为木有spfile;
RMAN>restore spfile from '/mnt/backup/sp_20110810_05lo1lg0_1_1';
Starting restore at 10-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=36 devtype=DISK
channel ORA_DISK_1: autobackup found: /mnt/backup/sp_20110810_05lo1lg0_1_1
channel ORA_DISK_1: SPFILE restore from autobackup complete
Finished restore at 10-AUG-10
4)恢复控制文件
RMAN>shutdown immediate;
Oracle instance shut down
RMAN>startup nomount;
connected to target database (not started)
Oracle instance started
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 62917928 bytes
Database Buffers 100663296 bytes
Redo Buffers 2924544 bytes
RMAN>restore controlfile from '/mnt/backup/cf_201108106_07lo1lg8_1_1';
Starting restore at 10-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=101 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output filename=/opt/oracle/oradata/orcl/control01.ctl
output filename=/opt/oracle/oradata/orcl/control02.ctl
output filename=/opt/oracle/oradata/orcl/control03.ctl
Finished restore at 10-AUG-11
5)将数据启动到mount状态
RMAN>alter database mount;
database mounted
released channel: ORA_DISK_1
6)恢复数据库
后面出现的错误是指个别日志不同步,所以最好就是把归档一起拷贝全
RMAN>restore database;
RMAN>recover database;【报错了,正常的,数据库不知道恢复到哪个scn啥的】
可以如下操作:
RMAN>list backup;【查看备份集里面最大的SCN号,然后恢复】
RMAN>recover database until scn 12006846;
恢复完成,可以打开了
7)以resetlogs打开数据库
RMAN>alter database open resetlogs;
8)之后可以根据情况重建temp表空间;
5,RMAN备份迁移数据库 异地恢复总结:
1.做好全备脚本,最好备份过程日志也要加上,方便恢复时查看相关参数等;
2.一定要备份归档,备份前,可以做个日志切换,如果当时没备份,可以复制归档到备份机;
3.rman迁移恢复,还是同版本比较好顺利迁移解决;
文章评论