ITPub博客

首页 > 数据库 > Oracle > RMAN备份和恢复

RMAN备份和恢复

原创 Oracle 作者:chenoracle 时间:2018-07-03 13:44:51 0 删除 编辑
RMAN备份和恢复


异地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
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-2157253/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2727927