加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

怎么把rman备份恢复到另外一台服务器上

(2010-10-13 11:16:56)
标签:

it

分类: 备份与恢复

怎么把rman备份恢复到另外一台服务器上(有恢复目录,恢复部分文件)?

 

数据库的状况

 

SQL> CREATE TABLE T_DROP(A INT);

 

Table created

 

SQL> BEGIN

  2    FOR A IN 1..10000 LOOP

  3      INSERT INTO T_DROP VALUES(A);

  4  END LOOP;

  5  END

  6  ;

  7  /

 

PL/SQL procedure successfully completed

 

SQL> COMMIT;

 

Commit complete

 

SQL> SELECT SYSDATE FROM DUAL;

 

SYSDATE

-----------

2010/10/3 9

 

SQL> SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') FROM DUAL;

 

TO_CHAR(SYSDATE,'YYYYMMDDHH24:

------------------------------

20101003 09:14:56

 

SQL> drop table t_drop;

 

Table dropped

 

SQL>

SQL> SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') FROM DUAL;

 

TO_CHAR(SYSDATE,'YYYYMMDDHH24:

------------------------------

20101003 09:26:58                  --不小心 20101003 09:26:58 drop了表,我们需要把它恢复过来

 

我们有rman备份,有归档,把他恢复到另外一台计算机上,我们知道t_drop保存在数据文件user1中,也就是数据文件4中。

 

1.准备工作

安装一个相同版本的数据库,sid一样,安装目录,数据文件目录一样(最好,否则麻烦一些)

安装完毕后,删除数据文件,控制文件,在线日志文件,保留参数文件,密码文件

2.拷贝rman 控制文件备份到异机上,启动数据库到nomount,恢复控制文件

--操作步骤:

SQL> startup nomount;

ORACLE 例程已经启动。

 

Total System Global Area  285212672 bytes

Fixed Size                  1296284 bytes

Variable Size             180357220 bytes

Database Buffers           96468992 bytes

Redo Buffers                7090176 bytes

SQL> select * from dual;

 

ADDR           INDX    INST_ID DU

-------- ---------- ---------- --

03854514          0          1 X

 

SQL> declare

  2     devtype varchar2(256);

  3     done boolean;

  4     begin

  5     devtype:=dbms_backup_restore.deviceallocate(NULL);

  6     dbms_backup_restore.restoresetdatafile;

  7     dbms_backup_restore.restorecontrolfileto('D:\CONTROL001.CTL');

  8     dbms_backup_restore.restorebackuppiece('d:\backup\CONTROL_C-4048592102-20101003-01',done=>done);

  9     sys.dbms_backup_restore.deviceDeallocate;

 10  end;

 11  /

 

PL/SQL 过程已成功完成。

 

发现生成了一个控制文件D:\CONTROL001.CTL,复制这个控制文件到你的数据文件目录(参数文件里记录的控制文件的目录)

--然后mount 数据库

SQL> alter database mount;

 

数据库已更改。

SQL> select file#,error from v$recover_file;

 

     FILE# ERROR

---------- -----------------------------------------------------------------

         1 FILE NOT FOUND                    --现在还没有数据文件

         2 FILE NOT FOUND

         3 FILE NOT FOUND

         4 FILE NOT FOUND

         5 FILE NOT FOUND

         6 FILE NOT FOUND

 

已选择6行。

SQL> select file#,name from v$datafile;

 

     FILE# NAME

---------- -----------------------------------------------------------

         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\SYSTEM01.DBF

         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\UNDOTBS01.DBF

         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\SYSAUX01.DBF

         4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\USERS01.DBF

         5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\TBS_STREAM02.DBF

         6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\USERS02.DBF

 

已选择6行。

 

3.rman恢复数据文件 1,2,4    3,5,6数据文件不恢复

 

恢复管理器: Release 10.2.0.4.0 - Production on 星期日 10 3 10:37:24 2010

 

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

 

已连接到目标数据库: BACK (DBID=4048592102, 未打开)

连接到恢复目录数据库

restore datafile 1,2,4;

RMAN>

启动 restore 03-10-10

启动 implicit crosscheck backup 03-10-10

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

分配的通道: ORA_DISK_2

通道 ORA_DISK_2: sid=154 devtype=DISK

已交叉检验的 44 对象

完成 implicit crosscheck backup 03-10-10

 

启动 implicit crosscheck copy 03-10-10

使用通道 ORA_DISK_1

使用通道 ORA_DISK_2

完成 implicit crosscheck copy 03-10-10

 

搜索恢复区中的所有文件

正在编制文件目录...

没有为文件编制目录

 

使用通道 ORA_DISK_1

使用通道 ORA_DISK_2

 

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集还原的数据文件

正将数据文件00001还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\SYSTEM01.DBF    --恢复1,2,4

正将数据文件00002还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\UNDOTBS01.DBF

正将数据文件00004还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\BACK\USERS01.DBF

通道 ORA_DISK_1: 正在读取备份片段 D:\BACKUP\BACKUP_3TLPGR8T_1_1

通道 ORA_DISK_1: 已还原备份片段 1

段句柄 = D:\BACKUP\BACKUP_3TLPGR8T_1_1 标记 = TAG20101003T092133

通道 ORA_DISK_1: 还原完成, 用时: 00:00:56

完成 restore 03-10-10

 

RMAN>

sql 语句: alter database datafile 3 offline drop           --offline,3,5,6 数据文件

 

RMAN>

sql 语句: alter database datafile 5 offline drop

 

RMAN>

sql 语句: alter database datafile 6 offline drop

 

RMAN>

 

recover database until time "to_date('20101003 09:25:56','yyyy-mm-dd hh24:mi:ss')";

 

启动 recover 03-10-10

使用通道 ORA_DISK_1

使用通道 ORA_DISK_2

 MAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: recover 命令 ( 10/03/2010 10:43:23 ) 失败

RMAN-06094: 数据文件3必须重新存储                --报错了,rman数据3也要恢复,但是我们不想恢复它

 

--sqlplus进行恢复

SQL> recover database until time '20101003 09:25:56';

ORA-00283: ??????????

ORA-01610: ?? BACKUP CONTROLFILE ??????????

 

 

SQL> recover database until time '20101003 09:25:56' using backup controlfile; --恢复数据库到删除前的那一刻

ORA-00279: ?? 2095552140 (? 10/03/2010 09:20:11 ??) ???? 1 ????

ORA-00289: ??: D:\ARCHLOG\ARC00038_0729788970.001

ORA-00280: ?? 2095552140 (???? 1) ??? #38 ?

 

 

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00279: ?? 2095552203 (? 10/03/2010 09:21:28 ??) ???? 1 ????

ORA-00289: ??: D:\ARCHLOG\ARC00039_0729788970.001

ORA-00280: ?? 2095552203 (???? 1) ??? #39 ?

ORA-00278: ??????????? 'D:\ARCHLOG\ARC00038_0729788970.001'

 

 

ORA-00279: ?? 2095552262 (? 10/03/2010 09:22:48 ??) ???? 1 ????

ORA-00289: ??: D:\ARCHLOG\ARC00040_0729788970.001

ORA-00280: ?? 2095552262 (???? 1) ??? #40 ?

ORA-00278: ??????????? 'D:\ARCHLOG\ARC00039_0729788970.001'

 

 

ORA-00308: ???????? 'D:\ARCHLOG\ARC00040_0729788970.001'

ORA-27041: ??????

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????

 

 

SQL> alter session set nls_language=american;

 

Session altered.

 

SQL> recover database until time '20101003 09:25:56' using backup controlfile;

ORA-00279: change 2095552262 generated at 10/03/2010 09:22:48 needed for thread

1

ORA-00289: suggestion : D:\ARCHLOG\ARC00040_0729788970.001

ORA-00280: change 2095552262 for thread 1 is in sequence #40

 

 

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: cannot open archived log 'D:\ARCHLOG\ARC00040_0729788970.001'

ORA-27041: unable to open file

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????

 

 

ORA-00308: cannot open archived log 'D:\ARCHLOG\ARC00040_0729788970.001'

ORA-27041: unable to open file

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????

 

 

SQL> alter database open resetlogs;        --打开

 

Database altered.

 

SQL> conn test/test

已连接。

SQL> select count(*) from t_drop;

 

  COUNT(*)

----------

     10000          --表数据回来了,导出数据,导入到原来的数据库就可以

 

SQL>

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有