问题描述
- Oracle rman异机备份问题
-
初学oracle rman,遇到了不大理解的地方。我想实现的是:现在两台主机,含有数据的A机与空机B。想实现在B中备份A。
现在在B中建立了恢复目录,在A的rman中使用语句:
backup database;
进行全库备份(因为测试,所以使用这一简单方式)。
但我想实现的是在B中保留A的备份,这样A down掉后我可以从B去恢复。
请问是在B的rman中直接操作,还是需要将A的备份直接复制到B的指定位置中实现备份?关于这一机制不是很理解,可能问题有些低端,还望各位不惜赐教。谢谢~
解决方案
恢复数据库需要准备的文件:rman完整备份(包括数据文件、日志文件、控制文件、参数文件),记录源数据库的DBID
一、安装数据库ORACLE数据库软件并创建跟源数据库同名和数据库SID并修改数据库DBID跟源数据库DBID一样,创建跟源数据库服务器相同的数据文件目录、日志文件目录、控制文件目录。
二、修改DBID:
SQL>CONN / AS SYSDBA;
SQL> select dbid from v$database;
DBID
1465764760
SQL> show parameter db_name
NAME TYPE VALUE
db_name string eygle
SQL> exec dbms_backup_restore.nidbegin('eygle','EYGLE','3935589514','1465764760',0,0,10)
PL/SQL 过程已成功完成。
SQL> select dbid from v$database;
DBID
1465764760
SQL> variable a number;
SQL> variable b number
SQL> variable c number;
SQL> exec dbms_backup_restore.nidprocessdf(0,0,:a,:b,:c);
PL/SQL 过程已成功完成。
SQL> print :a
A
0
SQL> print :b
B
1
SQL> print :c
C
1
SQL> exec dbms_backup_restore.nidprocesscf(:a,:b);
PL/SQL 过程已成功完成。
SQL> print :a
A
1
SQL> print :b
B
1
SQL> exec dbms_backup_restore.nidend;
PL/SQL 过程已成功完成。
SQL> select dbid from v$database;
DBID
3935589514
三、DBID修改成功后,依次恢复参数文件、控制文件、数据文件、日志文件:
SQL>startup nomount force
SQL>host;
C:Documents and SettingsAdministrator>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 9月 1 23:19:41 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: study (未装载)
----恢复参数文件
RMAN> restore spfile to pfile 'D:ORACLEDATABASEINITSTORDA.ORA' from 'D:ORACLEbackupC-3350757905-20090826-03';
--恢复控制文件
RMAN> restore controlfile from 'F:FULL-xCONTROL7286087020.CTL';
启动 restore 于 01-9月 -10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:06
输出文件名=D:ORACLEPRODUCT10.2.0ORADATASTUDYCONTROL01.CTL
输出文件名=D:ORACLEPRODUCT10.2.0ORADATASTUDYCONTROL02.CTL
输出文件名=D:ORACLEPRODUCT10.2.0ORADATASTUDYCONTROL03.CTL
完成 restore 于 01-9月 -10
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
RMAN>
----恢复所有可用的数据文件
SQL> select file#,name from v$datafile;
FILE# NAME
1 D:ORACLEPRODUCT10.2.0ORADATASTUDYSYSTEM01.DBF
2 D:ORACLEPRODUCT10.2.0ORADATASTUDYUNDOTBS01.DBF
3 D:ORACLEPRODUCT10.2.0ORADATASTUDYSYSAUX01.DBF
4 D:ORACLEPRODUCT10.2.0ORADATASTUDYUSERS01.DBF
5 D:ORACLEPRODUCT10.2.0ORADATASTUDYSTREAMS_TBS01.DBF
6 D:ORACLEPRODUCT10.2.0ORADATASTUDYPHONE01.DBF
7 D:ORACLEPRODUCT10.2.0ORADATASTUDYPHONE02.DBF
已选择7行。
RMAN> restore datafile 1,2,3,4,5,6;
启动 restore 于 01-9月 -10
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:ORACLEPRODUCT10.2.0ORADATASTUDYSYSTEM01.DBF
正将数据文件00002恢复到D:ORACLEPRODUCT10.2.0ORADATASTUDYUNDOTBS01.DBF
正将数据文件00003恢复到D:ORACLEPRODUCT10.2.0ORADATASTUDYSYSAUX01.DBF
正将数据文件00004恢复到D:ORACLEPRODUCT10.2.0ORADATASTUDYUSERS01.DBF
正将数据文件00005恢复到D:ORACLEPRODUCT10.2.0ORADATASTUDYSTREAMS_TBS01.DBF
正将数据文件00006恢复到D:ORACLEPRODUCT10.2.0ORADATASTUDYPHONE01.DBF
通道 ORA_DISK_1: 正在读取备份段 F:FULL-XCLMRBQU_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = F:FULL-XCLMRBQU_1_1 标记 = TAG20100901T231645
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:15
完成 restore 于 01-9月 -10
----恢复归档日志文件
RMAN> run{
2> set archivelog destination to '/racbackup';
3> restore archivelog all;
4> }
----恢复数据库
SQL> conn /as sysdba
SQL> recover database using backup controlfile until cancel;
----指定 resetlogs关键字,启动数据库到open状态
SQL> alter database open resetlogs;
至此,数据库恢复正常
SQL>CONN / AS SYSDBA;
----修改用户密码
SQL>alter user SYS identified by SYS;
----修改密码文件方法
C:Documents and SettingsAdministrator>orapwd file=C:Oracleproduct11.2.0dbhome_1databasePWDdmsasc.ora password=SYS force=y