新浪博客

RMAN(11G)备份恢复到异机数据库(不同路径)

2022-03-17 02:02阅读:
RMAN异机恢复,本次实验的恢复机(B)与备份机(A)的控制、数据、归档、重做日志的文件路径都不同
大步骤:
1 A机进行RMAN热备(参数、控制、归档日志、数据文件)
2 B机准备好控制、重做日志、数据文件、归档日志目录并让Oracle用户有读写权限
3 将A机RMAN备份文件复制至B机
4 B机进行还原、恢复
一、A机RMAN热备
RMAN备份方式
冷备 --> 数据库正常关闭,控制文件、数据文件、redo文件的SCN一致
热备 --> 数据库运行中,可单独备份控制、表空间、数据、归档文件(密码与redo不能备份)
备份控制文件:
自动备份 -> 备份SYSTEM的数据文件,即1#数据文件会自动备份控制文件
设置RMAN默认参数 -> configure controlfile autobackup on;
再用RMAN备份都会自动备份控制、系统参数(spfile.ora)文件
但不会备份初始化参数文件(initSID.ora)
手动RMAN -> backup current controlfile;
手动输出 -> alter database backup controlfile to trace;
会在user_dump_dest路径下生成sid_orcl_xxxx.trc的文件
手动copy -> 直接将控制文件另存一份
run{
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT
'/u01/rman/all_%T_%U.bak';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
sql 'alter system archive log current';
backup database include current controlfile spfile plus archivelog delete input;
sql 'alter system archive log current';
}
分别列出参数文件备份,控制文件备份,数据文件备份,以及归档备份的名字:
list backup of spfile;
list backup of controlfile;
list backup of database;
list backup of archivelog all;
二、将备份片文件复制到B机
[root@localhost oracle]# scp * oracle@192.168.3.106:/u01/rman/
三、还原参数文件
注意oracle用户要对备份片文件有访问权限,否则会提示无法找到有效的备份
[oracle@ora11g dbs]$ export ORACLE_SID=ora11g
RMAN> startup nomount
1、还原为spfile -> 适合B机文件路径与A机一致,不用修改。还原后直接用该参数文件启动实例
RMAN> restore spfile from '/u01/rman/all_20220316_2v0oije8_1_1.bak';
2、还原为pfile -> 适合B机文件路径与A机不一致,参数文件中的一些文件路径要修改
RMAN> restore spfile to pfile '/u01/oracle/product/11.2.0/dbs/initora11g.ora' from '/u01/rman/all_20220316_2v0oije8_1_1.bak';
3、编辑上面生成的pfile参数文件,将其中的文件路径的都修改为B机的路径
注意此处控制文件路径要是可访问的路径,因为在稍后还原的控制文件会还原到此目录
原路径*.control_files='/u01/oracle/oradata/ora11g/control01.ctl','/u01/oracle/fast_recovery_area/ora11g/control02.ctl'#Restore Controlfile
*.control_files='/u01/oracle/data/ora11g/control01.ctl','/u01/oracle/data/ora11g/control02.ctl','/u01/oracle/data/ora11g/control03.ctl'#Restore Controlfile
4、还原控制文件,会被还原到上面参数文件中指定的控制文件位置
RMAN> shutdown immediate
RMAN> startup nomount
RMAN> set DBID=98872961;
RMAN> restore controlfile from '/u01/rman/all_20220316_2u0oije4_1_1.bak';
还原控制文件后,可以正常切换到挂载状态,还原数据文件需要到mount状态
RMAN> alter database mount;
到此参数、控制文件已经还原完成,接下来就是还原数据文件与恢复了
5、数据备份路径不一致时操作
因为不是用catalog目录,rman信息是直接存在控制文件中的, 上面还原了控制文件,但里面记录的rman备份片
路径是A机上的,在B机上备份片位置已经变了,需要:
1清除控制文件RMAN信息
2将备份集的新路径注册到控制文件中
清除当前控制文件RMAN信息
RMAN> delete backup;
再次查看已经没有了
RMAN> list backup;
再把当前备份片信息注册到控制文件中
RMAN> catalog backuppiece '/u01/rman/all_20220316_2s0oij97_1_1.bak';
RMAN> catalog backuppiece '/u01/rman/all_20220316_2t0oij98_1_1.bak';
此时再用list backup 查看就能看到备份集路径已经为B机上的正确路径
此时B机控制文件的RMAN信息与备份片的路径都能对上了,可以进行restore database了
6、还原恢复数据库
数据文件路径与A机不一致时用set newname for datafile # to B机数据文件新位置
方式1:
run
{
set newname for datafile 1 to '/u01/oracle/data/ora11g/system01.dbf';
set newname for datafile 2 to '/u01/oracle/data/ora11g/sysaux01.dbf';
set newname for datafile 3 to '/u01/oracle/data/ora11g/undotbs01.dbf';
set newname for datafile 4 to '/u01/oracle/data/ora11g/users01.dbf';
set newname for datafile 5 to '/u01/oracle/data/ora11g/example01.dbf';
set newname for datafile 6 to '/u01/oracle/data/ora11g/tt1.dbf';
set newname for datafile 7 to '/u01/oracle/data/ora11g/test01.dbf';
set newname for tempfile 1 to '/u01/oracle/data/ora11g/temp01.dbf';
SQL 'ALTER DATABASE RENAME FILE ''/u01/oracle/oradata/ora11g/redo01.log'' to ''/u01/oracle/data/ora11g/redo01.log'' ';
SQL 'ALTER DATABASE RENAME FILE ''/u01/oracle/oradata/ora11g/redo02.log'' to ''/u01/oracle/data/ora11g/redo02.log'' ';
SQL 'ALTER DATABASE RENAME FILE ''/u01/oracle/oradata/ora11g/redo03.log'' to ''/u01/oracle/data/ora11g/redo03.log'' ';
restore database;
switch datafile all;
switch tempfile all;
recover database;
}
方式2:
run{
set newname for database to '/u01/oracle/data/ora11g/%b';
set newname for tempfile 1 to '/u01/oracle/data/ora11g/temp01.dbf';
SQL 'ALTER DATABASE RENAME FILE ''/u01/oracle/oradata/ora11g/redo01.log'' to ''/u01/oracle/data/ora11g/redo01.log'' ';
SQL 'ALTER DATABASE RENAME FILE ''/u01/oracle/oradata/ora11g/redo02.log'' to ''/u01/oracle/data/ora11g/redo02.log'' ';
SQL 'ALTER DATABASE RENAME FILE ''/u01/oracle/oradata/ora11g/redo03.log'' to ''/u01/oracle/data/ora11g/redo03.log'' ';
restore database;
switch datafile all;
switch tempfile all;
recover database;
}
7、恢复归档日志:
可能在恢复的过程中归档没有及时生成,可以在最后再备份一下归档日志,或者将新产生的归档拷贝到归档的相应目录下,然后进行如下的恢复操作步骤:
RMAN> startup mount;
RMAN> catalog start with '/u01/archive/';
RMAN> recover database;
会提示scn不一致的错误,因为备份时数据库还在进行,可能备份完成后控制文件、归档日志、数据文件的SCN不一致,就会出现这个提示
8、在重置日志模式打开数据库
SQL> alter database open resetlogs;
SQL> select name,OPEN_MODE from v$database; --验证数据库状态
SQL> select max(sequence#) from v$archived_log;
重新启动数据库
SQL> shutdown immediate;
SQL> startup
正常关闭会将控制文件、重做日志、数据文件的SCN保持一致,能正常关闭也就表示数据库处于一致性状态,也就可以正常打开了

我的更多文章

下载客户端阅读体验更佳

APP专享