ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用RMAN增量备份前滚standby

使用RMAN增量备份前滚standby

原创 Linux操作系统 作者:byfree 时间:2009-09-12 17:07:54 0 删除 编辑
physical standby database丢失或损坏了归档日志时,可以通过RMAN增量备份前滚追上primary database

 

我的测试环境中,primarystandby在同一台主机上,ORACLE版本10.2.0.1.0

  • Primary

Sid=orcl

Archive log  D:\oracle\product\10.2.0\flash_recovery_area\ORCL\ARCHIVELOG

Spfile部分参数:

log_archive_config='dg_config=(orcl,dg)'

log_archive_dest_2='service=dg valid_for=(online_logfiles,primary_role) db_unique_name=dg'

  • standby

Sid=dg

Archive log  D:\oracle\product\10.2.0\oradata\dg\arc

Spfile部分参数:

log_archive_config='dg_config=(orcl,dg)'

 

下面为了测试,先将primary上的log_archive_dest_2置空,之后做日志切换,把新产生的日志删除(模拟归档丢失),紧接着再把log_archive_dest_2指向standby,再切换日志,这时standby就会出现缺少归档日志的情况。

  • Primary

SQL> alter system set log_archive_dest_2='';

 

系统已更改。

 

SQL> alter system switch logfile;

 

系统已更改。

 

SQL> alter system switch logfile;

 

系统已更改。

 

删除新产生的两个归档日志文件

 

SQL> alter system set log_archive_dest_2='service=dg valid_for=(online_logfiles,primary_role) db_unique_name=dg';

 

系统已更改。

 

SQL> alter system switch logfile;

 

系统已更改。

 

  • Standby

SQL> select sequence#,applied from v$archived_log;

 

 SEQUENCE# APP

---------- ---

        17 YES

        18 YES

        19 YES

        20 YES

        21 YES

        22 YES

        25 NO

此时缺少2324两个归档未传到standby,至此就可以使用RMAN增量备份来前滚丢失的2324归档日志了。

 

Standby

SQL> alter database recover managed standby database cancel;

 

数据库已更改。

 

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

1381543

 

Primary

RMAN> backup incremental from scn 1381543 database format 'd:\tmp\forstandby_%U' tag 'forstandby';

 

启动 backup 12-9 -09

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=144 devtype=DISK

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF

输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF

输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF

输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

输入数据文件 fno=00007 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST.DBF

输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\MARY.DBF

输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 12-9 -09

通道 ORA_DISK_1: 已完成段 1 12-9 -09

段句柄=D:\TMP\FORSTANDBY_3OKP2P2P_1_1 标记=FORSTANDBY 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:36

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 12-9 -09

通道 ORA_DISK_1: 已完成段 1 12-9 -09

段句柄=D:\TMP\FORSTANDBY_3PKP2P3T_1_1 标记=FORSTANDBY 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03

完成 backup 12-9 -09

 

将生成的增量备份文件复制到standby(我的环境中这步就省略了,primarystandby在同一主机)

 

Standby

RMAN> catalog start with 'd:\tmp\forstandby';

 

使用目标数据库控制文件替代恢复目录

搜索与样式 d:\tmp\forstandby 匹配的所有文件

 

数据库未知文件的列表

=====================================

文件名: D:\TMP\FORSTANDBY_3OKP2P2P_1_1

文件名: D:\TMP\FORSTANDBY_3PKP2P3T_1_1

 

是否确实要将上述文件列入目录 (输入 YES NO)? yes

正在编制文件目录...

目录编制完毕

 

已列入目录的文件的列表

=======================

文件名: D:\TMP\FORSTANDBY_3OKP2P2P_1_1

文件名: D:\TMP\FORSTANDBY_3PKP2P3T_1_1

 

 

RMAN> recover database noredo;

 

启动 recover 12-9 -09

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=31 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复增量数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

数据文件 00001 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\SYSTEM01.DBF

数据文件 00002 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\UNDOTBS01.DBF

数据文件 00003 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\SYSAUX01.DBF

数据文件 00004 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\USERS01.DBF

数据文件 00005 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\EXAMPLE01.DBF

数据文件 00006 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\MARY.DBF

数据文件 00007 的恢复目标: D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:\TMP\FORSTANDBY_3OKP2P2P_1_1

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:\TMP\FORSTANDBY_3OKP2P2P_1_1 标记 = FORSTANDBY

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:07

完成 recover 12-9 -09

 

Primary

备份standby controlfile

RMAN> backup current controlfile for standby format 'd:\tmp\standby.bck';

 

启动 backup 12-9 -09

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括备用控制文件

通道 ORA_DISK_1: 正在启动段 1 12-9 -09

通道 ORA_DISK_1: 已完成段 1 12-9 -09

段句柄=D:\TMP\STANDBY.BCK 标记=TAG20090912T164532 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03

完成 backup 12-9 -09

 

Standby

RMAN> restore standby controlfile from 'd:\tmp\standby.bck';

 

启动 restore 12-9 -09

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=37 devtype=DISK

 

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:02

输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DG\STANDBY.CTL

完成 restore 12-9 -09

 

SQL> shutdown immediate

SQL> startup nomount

ORACLE 例程已经启动。

 

Total System Global Area  209715200 bytes

Fixed Size                  1248116 bytes

Variable Size              67110028 bytes

Database Buffers          134217728 bytes

Redo Buffers                7139328 bytes

SQL> alter database mount standby database;

 

数据库已更改。

 

SQL> alter database recover managed standby database disconnect from session;

 

数据库已更改。

 

Primary上切换几次归档,再到standby上看应用情况:

SQL> select sequence#,applied from v$archived_log;

 

 SEQUENCE# APP

---------- ---

        26 YES

        27 YES

此时可看到standby已应用了primary新产生的归档日志2627,说明已跳过了缺少的2324两个归档,可继续前滚primary传到standby的归档日志,实现了incremental backup补足缺失归档部分。

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

请登录后发表评论 登录
全部评论

注册时间:2008-04-16

  • 博文量
    65
  • 访问量
    212502