Oracle异机恢复处理

Oracle异机恢复处理

 

在平时工作中,我们可能会或多或少遇到数据迁移问题,比如:数据库之前在windows机器上,然后我们由于更换新服务器,想把数据迁移到新服务器上,新服务器安装的是linux系统。由于系统不同,目录结构肯定也不一样,所以在备份恢复数据时,我们就遇到很多问题。下面分享下我处理这种问题的恢复方法。

 

环境:SUSE linux10(由于资源有限,源库和目标库都在此服务器上,但不影响操作方法,源库和目标库的文件位置不同,这个是重点,因为异构系统的文件存放路径肯定不一致,比如上面提到windows系统的库恢复到linux系统上)。

源库:db_name:ceshidb,instance_name: ceshidb

目标库:db_name: ceshidb,instance_name: oric

测试版本:10.2.0.5

几点说明:

(1) RMAN 恢复的时候,db_name必须相同。如果说要想改成其他的数据库名,可以在恢复成功后,用nid 命令修改。数据库名的信息会记录到控制文件里,所以如果在恢复的时候,如果db_name不一致,恢复的时候会报错。

(2) 如果恢复的路径和源库不一致,就需要在restore时用set 命令指定新位置。 并且使用switch datafile all将信息更新的到控制文件。

 

开始实战操作

一:备份源库数据

先做全库备份(可以把归档备份和控制文件备份写到一个run里面,我是分开备份的,目的在于说明下备份顺序,全库备份-归档日志备份-控制文件备份,建议大家采用这样的顺序来备份数据,因为一般都没有配置catalog库,所以备份的信息存储在控制文件中,当还原数据时,首先还原控制文件,控制文件记录了你的备份信息,如果先备份控制文件,那么在备份的控制文件之后做的备份信息,就没有记录在此备份的控制文件中,请大家注意哈)

 

全库备份

oracle@nwsj:/u01/oracle/oradata> rman target /

 

Recovery Manager: Release 10.2.0.5.0 - Production on Thu Jan 21 18:49:522016

 

Copyright (c) 1982, 2007, Oracle. All rights reserved.

 

connected to target database: CESHIDB (DBID=2027504492)

 

RMAN> run {

allocate channel d1 type disk;

allocate channel d2 type disk;

backup database format '/u01/backup_full_%U';

release channel d1;

release channel d2;

}

allocate channel d1 type disk;

allocate channel d2 type disk;

Starting backup at 21-JAN-16

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=142 devtype=DISK

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00009 name=/u01/oracle/oradata/ceshiku/cs_dir03.dbf

input datafile fno=00004 name=/u01/oracle/oradata/ceshiku/users01.dbf

input datafile fno=00002 name=/u01/oracle/oradata/ceshiku/undotbs01.dbf

input datafile fno=00001 name=/u01/oracle/oradata/ceshiku/system01.dbf

input datafile fno=00003 name=/u01/oracle/oradata/ceshiku/sysaux01.dbf

input datafile fno=00006 name=/u01/oracle/oradata/ceshiku/CS_DIR02.dbf

input datafile fno=00007 name=/u01/oracle/oradata/ceshiku/aa01.dbf

input datafile fno=00005 name=/u01/oracle/oradata/ceshiku/cs_dir01.dbf

input datafile fno=00010 name=/u01/oracle/oradata/ceshiku/b02.dbf

input datafile fno=00008 name=/u01/oracle/oradata/ceshiku/b01.dbf

channel ORA_DISK_1: starting piece 1 at 21-JAN-16

channel ORA_DISK_1: finished piece 1 at 21-JAN-16

piece handle=/u01/backup_full_01qrurnv_1_1 tag=TAG20160121T185039comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

including current control file in backupset

including current SPFILE in backupset

channel ORA_DISK_1: starting piece 1 at 21-JAN-16

channel ORA_DISK_1: finished piece 1 at 21-JAN-16

piece handle=/u01/backup_full_02qruroe_1_1 tag=TAG20160121T185039comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

released channel: d1

 

released channel: d2

Finished backup at 21-JAN-16

   

切换下日志

RMAN> sql 'alter system switch logfile';

 

sql statement: alter system switch logfile

 

RMAN> sql 'alter system switch logfile';

 

sql statement: alter system switch logfile

 

归档日志备份

RMAN> backup archivelog all format '/u01/backup_arch_%U';

 

Starting backup at 21-JAN-16

current log archived

using channel ORA_DISK_1

channel ORA_DISK_1: starting archive log backupset

channel ORA_DISK_1: specifying archive log(s) in backup set

input archive log thread=1 sequence=1 recid=1 stamp=901738168

input archive log thread=1 sequence=2 recid=2 stamp=901738171

input archive log thread=1 sequence=3 recid=3 stamp=901738174

input archive log thread=1 sequence=4 recid=4 stamp=901738276

input archive log thread=1 sequence=5 recid=5 stamp=901738282

input archive log thread=1 sequence=6 recid=6 stamp=901738288

input archive log thread=1 sequence=7 recid=7 stamp=901738309

channel ORA_DISK_1: starting piece 1 at 21-JAN-16

channel ORA_DISK_1: finished piece 1 at 21-JAN-16

piece handle=/u01/backup_arch_03qrurq5_1_1 tag=TAG20160121T185149comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backup at 21-JAN-16

 

控制文件备份

RMAN> backup current controlfile format'/u01/backup_con_%U';

 

Starting backup at 21-JAN-16

using channel ORA_DISK_1

channel ORA_DISK_1: starting full datafilebackupset

channel ORA_DISK_1: specifying datafile(s)in backupset

including current control file in backupset

channel ORA_DISK_1: starting piece 1 at21-JAN-16

channel ORA_DISK_1: finished piece 1 at21-JAN-16

piece handle=/u01/backup_con_04qrurr1_1_1tag=TAG20160121T185217 comment=NONE

channel ORA_DISK_1: backup set complete,elapsed time: 00:00:01

Finished backup at 21-JAN-16

然后关闭源库ceshidb(因为我是在同一台服务器上做的,所以需要修改下源库的db_name,否则在目标库恢复了控制文件后,不能mount的,会提示:cannot mount database inEXCLUSIVE mode,因为在$ORACLE_HOME/dbs下面的lkceshidb文件存在,进程在运行中,所以会有这个提示。如果是不同的服务器,则不需要此操作,顺便练习下nid方式来修改数据库名)

oracle@nwsj:/u01/oracle> nid target=/dbname=ceshiku

 

DBNEWID: Release 10.2.0.5.0 - Production onThu Ja

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值