怎么把rman备份恢复到另外一台服务器上
(2010-10-13 11:16:56)
标签:
it |
分类: 备份与恢复 |
怎么把rman备份恢复到另外一台服务器上(有恢复目录,恢复部分文件)?
数据库的状况
SQL> CREATE TABLE T_DROP(A INT);
Table created
SQL> BEGIN
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
我们有rman备份,有归档,把他恢复到另外一台计算机上,我们知道t_drop保存在数据文件user1中,也就是数据文件4中。
1.准备工作
安装一个相同版本的数据库,sid一样,安装目录,数据文件目录一样(最好,否则麻烦一些)
安装完毕后,删除数据文件,控制文件,在线日志文件,保留参数文件,密码文件
2.拷贝rman的 控制文件备份到异机上,启动数据库到nomount,恢复控制文件
--操作步骤:
SQL> startup nomount;
ORACLE 例程已经启动。
Total
System Global Area
Fixed
Size
Variable
Size
Database
Buffers
Redo
Buffers
SQL> select * from dual;
ADDR
-------- ---------- ---------- --
03854514
SQL> declare
PL/SQL 过程已成功完成。
发现生成了一个控制文件D:\CONTROL001.CTL,复制这个控制文件到你的数据文件目录(参数文件里记录的控制文件的目录)
--然后mount 数据库
SQL> alter database mount;
数据库已更改。
SQL> select file#,error from v$recover_file;
---------- -----------------------------------------------------------------
已选择6行。
SQL> select file#,name from v$datafile;
---------- -----------------------------------------------------------
已选择6行。
3.用rman恢复数据文件
1,2,4
恢复管理器: Release 10.2.0.4.0 - Production on 星期日 10月 3 10:37:24 2010
Copyright
(c) 1982, 2007, Oracle.
已连接到目标数据库: 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
正将数据文件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
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
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 10/03/2010 10:43:23 上) 失败
RMAN-06094:
数据文件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;
----------
SQL>