异地RMAN恢复,更改数据文件位置;

一 RMAN全备
(1)RMAN全备
(2)创建测试数据
二 RMAN恢复
(1)恢复参数文件
(2)恢复控制文件
(3)修改控制文件中记录的rman相关路径信息
(4)恢复数据库
(5)验证数据

一 RMAN全备

(1)RMAN全备

---RMAN全备2018-07-01 22:00
RUN
{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
allocate channel c1 type disk;
allocate channel c2 type disk;
backup full database tag='full_orcl' format 'E:\backup\rman\rman_full_%d_%T_%U.bak';
sql 'alter system archive log current';
backup archivelog all tag 'arch_orcl' format 'E:\backup\rman\rman_arc_%d_%T_%U.bak' delete all input;
backup current controlfile tag 'ctl_orcl' format 'E:\backup\rman\rman_ctl_%d_%T_%U.bak';
release channel c1;
release channel c2;
report obsolete;
crosscheck backup;
crosscheck copy;
delete noprompt expired backup;
delete noprompt expired copy;
delete noprompt obsolete;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-7';
}
exit;

(2)创建测试数据

---创建测试表2018-07-02 14:30
conn chenjch/**
select * from user_tables;
create table test20180702 as select level as id from dual connect by level<=1000;
select * from test20180702;
---切换日志
alter system switch logfile;
alter system checkpoint;

二 RMAN恢复

---备份文件恢复到其他服务器上,并更改备份文件路径,数据文件路径;

(1) 恢复参数文件

RMAN> startup nomount
RMAN> restore spfile to 'D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILECHENJCHORCL.ORA' from 'D:\backup_nfs\rman\RMAN_FULL_CHENJCHORCL_20180702_4QT6UTM7_1_1.BAK';

SQL> shutdown immediate
SQL> create pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITeasorcl.ORA' from spfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILECHENJCHORCL.ORA';
---提前根据参数文件创建或修改目录
SQL> startup nomount pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITeasorcl.ORA';

(2) 恢复控制文件

RMAN> restore controlfile from 'D:\backup_nfs\rman\RMAN_CTL_CHENJCHORCL_20180702_4TT6UULU_1_1.BAK';
SQL> alter database mount;

(3) 修改控制文件中记录的rman相关路径信息

RMAN> list backup; ---查看控制文件中记录的数据文件位置等信息;
RMAN> list backup of archivelog all; ---查看控制文件中记录的归档位置等信息;

---将备份文件注册到控制文件(原库部分文件目录和目标库备份文件目录不一致时,需要执行注册);
RMAN> catalog backuppiece 'D:\backup_nfs\rman\RMAN_FULL_CHENJCHORCL_20180702_4NT6USSD_1_1.BAK';
RMAN> catalog backuppiece 'D:\backup_nfs\rman\RMAN_FULL_CHENJCHORCL_20180702_4PT6UTLS_1_1.BAK';
RMAN> catalog backuppiece 'D:\backup_nfs\rman\RMAN_FULL_CHENJCHORCL_20180702_4QT6UTM7_1_1.BAK';
RMAN> catalog backuppiece 'D:\backup_nfs\rman\RMAN_FULL_CHENJCHORCL_20180702_4OT6USSE_1_1.BAK';
RMAN> catalog backuppiece 'D:\backup_nfs\rman\RMAN_ARC_CHENJCHORCL_20180702_4RT6UUDT_1_1.BAK';
RMAN> catalog backuppiece 'D:\backup_nfs\rman\RMAN_ARC_CHENJCHORCL_20180702_4ST6UUE0_1_1.BAK';

---归档位置(原库归档目录位置和目标库备份文件目录不一致时,需要执行注册);

RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40620_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40621_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40622_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40623_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40624_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40625_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40626_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40627_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40628_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40629_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40630_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40631_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40632_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40633_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40634_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40635_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40636_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40637_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40638_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40639_954797105.ARC'; 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40640_954797105.ARC'; 
...... 
RMAN> catalog archivelog 'D:\backup_nfs\arch\CHENJCHORCL_1_40648_954797105.ARC';

---RMAN恢复时重新指定数据文件位置;
SQL> select * from v$dbfile order by 1;

FILE# NAME
---------- --------------------------------------------------
1 D:\DATABASE\CHENJCHORCL\SYSTEM01.DBF
2 D:\DATABASE\CHENJCHORCL\SYSAUX01.DBF
3 D:\DATABASE\CHENJCHORCL\UNDOTBS01.DBF
4 D:\DATABASE\CHENJCHORCL\USERS01.DBF
5 D:\DATABASE\CHENJCH_D_CJC_TEMP2.DBF
6 D:\DATABASE\CHENJCH_D_CJC_STANDARD.ORA
7 D:\DATABASE\CHENJCH_D_CJC_INDEX.ORA
8 D:\DATABASE\CHENJCH_D_CHEN2_STANDARD.DBF
9 D:\DATABASE\CHENJCH_D_A005_STANDARD.DBF
10 D:\DATABASE\CHENJCH_D_A003_STANDARD.DBF
12 D:\DATABASE\CHENJCH_D_A004_STANDARD.DBF

已选择11行。

(4)恢复数据库

RMAN>
RUN {
SET NEWNAME FOR DATAFILE 1 to 'D:\oradata\easorcl\SYSTEM01.DBF';
SET NEWNAME FOR DATAFILE 2 to 'D:\oradata\easorcl\SYSAUX01.DBF';
SET NEWNAME FOR DATAFILE 3 to 'D:\oradata\easorcl\UNDOTBS01.DBF';
SET NEWNAME FOR DATAFILE 4 to 'D:\oradata\easorcl\USERS01.DBF';
SET NEWNAME FOR DATAFILE 5 to 'D:\oradata\easorcl\CHENJCH_D_CJC_TEMP2.DBF';
SET NEWNAME FOR DATAFILE 6 to 'D:\oradata\easorcl\CHENJCH_D_CJC_STANDARD.ORA';
SET NEWNAME FOR DATAFILE 7 to 'D:\oradata\easorcl\CHENJCH_D_CJC_INDEX.ORA';
SET NEWNAME FOR DATAFILE 8 to 'D:\oradata\easorcl\CHENJCH_D_CHEN2_STANDARD.DBF';
SET NEWNAME FOR DATAFILE 9 to 'D:\oradata\easorcl\CHENJCH_D_A005_STANDARD.DBF';
SET NEWNAME FOR DATAFILE 10 to 'D:\oradata\easorcl\CHENJCH_D_A003_STANDARD.DBF';
SET NEWNAME FOR DATAFILE 12 to 'D:\oradata\easorcl\CHENJCH_D_A004_STANDARD.DBF';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
recover database;
}

......

启动 recover 于 03-7月 -18
使用通道 ORA_DISK_1

正在开始介质的恢复

无法找到归档日志
归档日志线程=1 序列=40649
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 07/03/2018 11:06:01 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 40649 的归档日志以及起始 SCN 799976516
......

SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-00344: 无法重新创建联机日志 'D:\DATABASE\CHENJCHORCL\REDO01A.LOG'
ORA-27040: 文件创建错误, 无法创建文件
OSD-04002: 无法打开文件
O/S-Error: (OS 3) 系统找不到指定的路径。

SQL> col member for a50
SQL> select member,group# from v$logfile order by 2,1;
MEMBER GROUP#


D:\DATABASE\CHENJCHORCL\REDO01A.LOG 1
D:\DATABASE\CHENJCHORCL\REDO01B.LOG 1
D:\DATABASE\CHENJCHORCL\REDO02A.LOG 2
D:\DATABASE\CHENJCHORCL\REDO02B.LOG 2
D:\DATABASE\CHENJCHORCL\REDO03A.LOG 3
D:\DATABASE\CHENJCHORCL\REDO03B.LOG 3
D:\DATABASE\CHENJCHORCL\REDO04A.LOG 4
D:\DATABASE\CHENJCHORCL\REDO04B.LOG 4
D:\DATABASE\CHENJCHORCL\REDO05A.LOG 5
D:\DATABASE\CHENJCHORCL\REDO05B.LOG 5

已选择10行。

SQL> alter database rename file 'D:\DATAB ASE\CHENJCHORCL\REDO01A.LOG' to 'D:\oradata\easorcl\REDO01A.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO01B.LOG' to 'D:\oradata\easorcl\REDO01B.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO02A.LOG' to 'D:\oradata\easorcl\REDO02A.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO02B.LOG' to 'D:\oradata\easorcl\REDO02B.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO03A.LOG' to 'D:\oradata\easorcl\REDO03A.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO03B.LOG' to 'D:\oradata\easorcl\REDO03B.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO04A.LOG' to 'D:\oradata\easorcl\REDO04A.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO04B.LOG' to 'D:\oradata\easorcl\REDO04B.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO05A.LOG' to 'D:\oradata\easorcl\REDO05A.LOG';
SQL> alter database rename file 'D:\DATABASE\CHENJCHORCL\REDO05B.LOG' to 'D:\oradata\easorcl\REDO05B.LOG';

SQL> alter database open resetlogs;
数据库已更改。
---重建tempfile;

(5)验证数据
SQL> conn chenjch/*
已连接。

SQL> select count(*) from test20180702;
COUNT(*)


1000

作者:chenoracle

最后修改:2022 年 02 月 27 日
如果觉得我的文章对你有用,请随意赞赏