我是靠谱客的博主 单纯手机,最近开发中收集的这篇文章主要介绍oracle11g rman恢复到另一台服务器,怎么把rman备份恢复到另外一台服务器上,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

怎么把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:backupCONTROL_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:ORACLEPRODUCT10.2.0ORADATABACKSYSTEM01.DBF

2 D:ORACLEPRODUCT10.2.0ORADATABACKUNDOTBS01.DBF

3 D:ORACLEPRODUCT10.2.0ORADATABACKSYSAUX01.DBF

4 D:ORACLEPRODUCT10.2.0ORADATABACKUSERS01.DBF

5 D:ORACLEPRODUCT10.2.0ORADATABACKTBS_STREAM02.DBF

6 D:ORACLEPRODUCT10.2.0ORADATABACKUSERS02.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:ORACLEPRODUCT10.2.0ORADATABACKSYSTEM01.DBF

--恢复1,2,4

正将数据文件00002还原到D:ORACLEPRODUCT10.2.0ORADATABACKUNDOTBS01.DBF

正将数据文件00004还原到D:ORACLEPRODUCT10.2.0ORADATABACKUSERS01.DBF

通道 ORA_DISK_1:

正在读取备份片段 D:BACKUPBACKUP_3TLPGR8T_1_1

通道 ORA_DISK_1:

已还原备份片段 1

段句柄 =

D:BACKUPBACKUP_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:ARCHLOGARC00038_0729788970.001

ORA-00280:

?? 2095552140 (???? 1) ??? #38 ?

指定日志:

{=suggested | filename | AUTO |

CANCEL}

auto

ORA-00279:

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

ORA-00289:

??: D:ARCHLOGARC00039_0729788970.001

ORA-00280:

?? 2095552203 (???? 1) ??? #39 ?

ORA-00278:

??????????? 'D:ARCHLOGARC00038_0729788970.001'

ORA-00279:

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

ORA-00289:

??: D:ARCHLOGARC00040_0729788970.001

ORA-00280:

?? 2095552262 (???? 1) ??? #40 ?

ORA-00278:

??????????? 'D:ARCHLOGARC00039_0729788970.001'

ORA-00308:

???????? 'D:ARCHLOGARC00040_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:ARCHLOGARC00040_0729788970.001

ORA-00280:

change 2095552262 for thread 1 is in sequence #40

Specify

log: {=suggested | filename |

AUTO | CANCEL}

auto

ORA-00308:

cannot open archived log

'D:ARCHLOGARC00040_0729788970.001'

ORA-27041:

unable to open file

OSD-04002:

????????????

O/S-Error:

(OS 2) ??????????????????????

ORA-00308:

cannot open archived log

'D:ARCHLOGARC00040_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>

最后

以上就是单纯手机为你收集整理的oracle11g rman恢复到另一台服务器,怎么把rman备份恢复到另外一台服务器上的全部内容,希望文章能够帮你解决oracle11g rman恢复到另一台服务器,怎么把rman备份恢复到另外一台服务器上所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部