rman异地恢复

环境:
操作系统版本:RHEL6.4 64位
ORALCE版本: 10.2.0.1 64位
ORACLE_SID: orcl
源服务器和目的服务器的操作系统,oracle版本均一致
源服务器:192.168.227.20
目的服务器:192.168.227.30,只需要安装oracle软件即可,不需要建库操作
一:在源服务器上使用rman备份数据库,包括数据文件,归档日志文件和控制文件,参数文件的备份
[oracle@orcl ~] mkdir/u01/backup[oracle@orcl ] rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Sep 6 16:04:53 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORCL (DBID=1287906064)

RMAN> run {
2> allocate channel c1 device type disk;
3> backup incremental level 0
4> format ‘/u01/backup/db_full_%U.bkp’
5> tag ‘2011-09-06-FULL’
6> database plus archivelog;
7> release channel c1;
8> }
RMAN> backup current controlfile format ‘/u01/backup/control20110906.bak’;
RMAN> backup spfile format ‘/u01/backup/spfile20110906.bak’;
二:在目的服务器上复制备份数据,并准备好相关的目录
从源端spfile得到
[oracle@orcl ~] mkdir/u01/backup[oracle@orcl ] scp -rp 192.168.227.20:/u01/backup/* /u01/backup/
oracle@192.168.227.20’s password:
control20110906.bak 100% 6944KB 1.7MB/s 00:04
db_full_0fmlsmdt_1_1.bkp 100% 97MB 4.4MB/s 00:22
db_full_0gmlsme5_1_1.bkp 100% 593MB 9.1MB/s 01:05
db_full_0hmlsmg7_1_1.bkp 100% 6656 6.5KB/s 00:00
spfile20110906.bak 100% 96KB 96.0KB/s 00:00

[oracle@orcl ~] mkdirp/u01/app/oracle/admin/orcl/adump,bdump,cdump,dpdump,udump,pfile[oracle@orcl ] mkdir -p /u01/app/oracle/oradata/orcl
[oracle@orcl ~]$ mkdir -p /u01/app/oracle/flash_recover_area/ORCL

三:在目的服务器上进行恢复
[oracle@orcl ~] echodbname=orcl> ORACLE_HOME/dbs/initorcl.ora
[oracle@orcl ~] exportORACLESID=orcl[oracle@orcl ] rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Sep 6 16:18:19 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database (not started)

RMAN> set dbid 1287906064; //指定DBID,需要和源服务器的DBID一致
RMAN> startup nomount; //启动数据库到nomount状态,这里需要前面创建initorcl.ora文件,否则将报错
RMAN> restore spfile from ‘/u01/backup/spfile20110906.bak’; //恢复参数文件
RMAN> startup nomount force; //重启实例到nomout状态
RMAN> restore controlfile from ‘/u01/backup/control20110906.bak’; //恢复控制文件
alter database mount
RMAN> restore database; //还原数据库文件
RMAN> recover database; //恢复数据库文件,这里将报错
RMAN-03002: failure of recover command at 09/06/2011 17:03:51
RMAN-06054: media recovery requesting unknown log: thread 1 seq 15 lowscn 547974
RMAN> exit

[oracle@orcl ~]$ sqlplus /nolog //在sqlplus中对数据库进行until cancel操作后以resetlogs方式打开
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 6 17:04:22 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba
Connected.
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 547974 generated at 09/06/2011 16:49:11 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_09_06/o1_mf_1_15_%u_.ar
c
ORA-00280: change 547974 for thread 1 is in sequence #15

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;

四:测试
SQL> select member from v$logfile;

MEMBER

/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log

SQL> select file_name from dba_data_files;

FILE_NAME

/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
/u01/app/oracle/oradata/orcl/tbs_apple01.dbf
6 rows selected.

SQL> select count(*) from dba_temp_files;

COUNT(*)

     1  

SQL> select count(*) from hr.employees;

COUNT(*)

   107 

五:注意事项
RMAN> list incarnation; //生成一个新的incarnation
using target database control file instead of recovery catalog

List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time


1 1 ORCL 1287906064 PARENT 1 2005-06-30:19:09:40
2 2 ORCL 1287906064 PARENT 446075 2011-08-25:17:55:31
3 3 ORCL 1287906064 CURRENT 547975 2011-09-06:17:07:09

[oracle@orcl ~]$ emctl start dbconsole //dbconsole需要重新配置,orapwd文件也需要创建
TZ set to PRC
OC4J Configuration issue. /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_orcl.herostart.com_orcl not found

六:增量备份的异机恢复
1:源服务器
SQL> create user rman_inr identified by “123456” default tablespace users;
User created.
SQL> grant connect,resource to rman_inr;
Grant succeeded.
SQL> create table rman_inr.test as select * from dba_source;
Table created.

RMAN> backup incremental level 1
2> format ‘/u01/backup/inr1_db_%U’ tag ‘inr_1’
3> database plus archivelog;

[oracle@orcl ~]$ rman target /
RMAN> backup incremental level 1
2> format ‘/u01/backup/inr1_db_%U’ tag ‘inr_1’
3> database plus archivelog;

RMAN> backup current controlfile format ‘/u01/backup/control02.bak’;

[oracle@orcl ~]$ ls -lh /u01/backup/inr1_db_1*
-rw-r—– 1 oracle oinstall 53M Sep 8 16:34 /u01/backup/inr1_db_1omm1ud0_1_1
-rw-r—– 1 oracle oinstall 51M Sep 8 16:35 /u01/backup/inr1_db_1pmm1udk_1_1
-rw-r—– 1 oracle oinstall 6.9M Sep 8 16:35 /u01/backup/inr1_db_1qmm1uf2_1_1
-rw-r—– 1 oracle oinstall 11K Sep 8 16:35 /u01/backup/inr1_db_1rmm1uf5_1_1

[oracle@orcl ~] scp/u01/backup/inr1db1192.168.227.30:/u01/backup/[oracle@orcl ] scp /u01/backup/control02.bak 192.168.227.30:/u01/backup/

2:目标服务器
[oracle@orcl ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;

RMAN> set dbid=1287906064;
RMAN> startup nomount;
RMAN> restore controlfile from ‘/u01/backup/control02.bak’;
RMAN> startup mount force;

RMAN> restore database;
RMAN> recover database;
RMAN-03002: failure of recover command at 09/08/2011 16:46:44
RMAN-06054: media recovery requesting unknown log: thread 1 seq 45 lowscn 598452
RMAN> exit

[oracle@orcl ~]$ sqlplus /nolog
SQL> conn /as sysdba

SQL> recover database using backup controlfile until cancel;
ORA-00279: change 598452 generated at 09/08/2011 16:35:49 needed for thread 1
ORA-00289: suggestion : /u01/arch/orcl/1_45_760125331.arc
ORA-00280: change 598452 for thread 1 is in sequence #45

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.

SQL> alter database open resetlogs;
Database altered.

3:测试
SQL> conn rman_inr/123456
Connected

SQL> select count(*) from test;

COUNT(*)

292428 
  1. recover database using backup controlfile
    如果丢失丢失当前控制文件,用冷备份中的控制文件恢复的时候。用来告诉Oracle,
    不要以controlfile中的scn作为恢复的终点;
  2. recover database until cancel
    如果丢失current/active redo的时候。手动指定终点。
  3. recover database using backup controlfile until cancel;
    如果 丢失当前controlfile并且current/active redo都丢失,
    会先去 自动 应用归档日志,可以实现最大的恢复;
  4. recover database until cancel using backup controlfile;
    如果 丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点。
    因为没有应用归档日志,所有会丢失数据。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值