数据库学习日常案例20240312-dataguard使用增量备份恢复dg备库

1 主库查询最小scn 信息:

SQL> col current_scn for 999999999999999
SQL>  SELECT CURRENT_SCN FROM V$DATABASE;
 
 select min(fhscn) from x$kcvfh;
 
 select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'     ;
     CURRENT_SCN
----------------
  12614205226673
  
MIN(FHSCN)
----------------
12614205076072
  
MIN(F.FHSCN)
----------------
12614205076072
 

2 查询是否增加了新的数据文件

+++++++++++++++++++++++++++++++++++++++++++++++

SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 12611050666604;

假设有记录。则不能进行witch 操作,能够參考一下文档来恢复:

rman 增量恢复 dg gap后 主库加入新数据文件
Note 1531031.1 Steps to perform for Rolling forward a standby database using RMAN incremental backup when datafile is added to primary

如果返回为0 则按照如下操作即可。


1.备库取消归档应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

2.备库确定 lowest scn

col current_scn for 99999999999999
 SELECT CURRENT_SCN FROM V$DATABASE;

 select min(fhscn) from x$kcvfh;

 select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'     ;

取上述查询中的最小值

SQL> col current_scn for 999999999999999999
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
 
        CURRENT_SCN
-------------------
     12611050666604
 
SQL> select min(fhscn) from x$kcvfh;
 
MIN(FHSCN)
----------------
12611050666605
 
SQL>  select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'     ;  2    3  
 
MIN(F.FHSCN)
----------------
12611050666605

3.on primary db 端依据第2步中获取的最小scn 来进行增量备份

BACKUP INCREMENTAL FROM SCN 12611050666604 DATABASE FORMAT '/lixora/ForStandby_%U' tag 'FORSTANDBY';

4.拷贝备份到 备库

$scp ForStandby_07pqprm4_1_1 192.168.0.10:/tmp

5.on standby db 在备库端注冊备份片,注意用户属主。权限

RMAN> CATALOG START WITH '/lixora/ForStandby'; 

6.运行恢复

RMAN> RECOVER DATABASE NOREDO; 

7.on primary db 生成新的standby 控制文件

RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/lixora/ForStandbyCTRL.bck';

8.把主库端生成的standby 控制文件复制到备库,注意用户属主。权限

RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/lixora/ForStandbyCTRL.bck';
 
scp /lixora/ForStandbyCTRL.bck 192.168.0.10:/tmp

9.备份备库数据文件信息,用于在恢复新的standby 控制文件后比对

spool datafile_names_step8.txt
set lines 200
col name format a60
select file#, name from v$datafile order by file# ;
spool off

10.on standby Db 恢复新的standby  控制文件

RMAN> SHUTDOWN IMMEDIATE ;
RMAN> STARTUP NOMOUNT; 
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/ForStandbyCTRL.bck'; 

11.更新控制文件里的数据文件信息

使新的standby 控制文件生效
RMAN> SHUTDOWN; 
RMAN> STARTUP MOUNT;

CATALOG START WITH '+DATA/zhglptdg/datafile/';

12.on primary db 确定是否添加过新数据文件。

确保在备库发生日志gap 后,主库没有加入过新的数据文件。
 

SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 12611050666604;


假设有记录。则不能进行witch 操作,能够參考一下文档来恢复:

rman 增量恢复 dg gap后 主库加入新数据文件
Note 1531031.1 Steps to perform for Rolling forward a standby database using RMAN incremental backup when datafile is added to primary


13.重命名数据文件

RMAN> SWITCH DATABASE TO COPY; 


14.再次确认在恢复增量备份片后主库和备库scn 差距没有太大

 SQL> col current_scn for 99999999999999
 SELECT CURRENT_SCN FROM V$DATABASE;
 
 select min(fhscn) from x$kcvfh;
 
 select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'     ;
        
 CURRENT_SCN
---------------
 12614205662375
 
MIN(FHSCN)
----------------
12614205076072
  
MIN(F.FHSCN)
----------------
12614205076072

15.On standby database, 清理standby 日志组

select * from v$standby_log;

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1; 
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2; 
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;


16.启动redo data apply

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

17 假设遇到一些因为设置 nologgling 而导致部分数据丢失,能够安装下述方法来进行恢复


To resolve NOLOGGING operations only, see Note 958181.1.   
In addition to this information, see the online documentation:
10.2:  http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/scenarios.htm#CIHIAADC
11.1:  http://download.oracle.com/docs/cd/B28359_01/server.111/b28294/rman.htm#SBYDB00759
11.2: http://download.oracle.com/docs/cd/E11882_01/server.112/e17022/rman.htm#CIHIAADC


后记
假设要启用实时应用,须要在备库加入standby redo log,大小应和主库一样。且比主库多一组。


ALTER DATABASE add standby LOGFILE GROUP 6 size 500M;
ALTER DATABASE add standby LOGFILE GROUP 7 size 500M;
ALTER DATABASE add standby LOGFILE GROUP 8 size 500M;
ALTER DATABASE add standby LOGFILE GROUP 9 size 500M;


启用命令:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;


详细内容參见: 

oracle 10g standby database 实时应用 redo 数据

怎样确保dg 已经正常,后台日志类似例如以下:
Mon Dec 22 10:03:04 CST 2014
RFS[1]: Archived Log: '+DATA/lixora/archivelog/1_23094_790186477.dbf'
Mon Dec 22 10:03:25 CST 2014
Media Recovery Log +DATA/lixora/archivelog/1_23094_790186477.dbf
Media Recovery Waiting for thread 1 sequence 23095 (in transit)
Mon Dec 22 10:05:53 CST 2014
RFS[2]: Archived Log: '+DATA/lixora/archivelog/1_23095_790186477.dbf'
Primary database is in MAXIMUM PERFORMANCE mode
RFS[2]: No standby redo logfiles of size 1024000 blocks exist
Mon Dec 22 10:05:55 CST 2014
Media Recovery Log +DATA/zhglptdg/archivelog/1_23095_790186477.dbf
Media Recovery Waiting for thread 1 sequence 23096 (in transit)
Mon Dec 22 10:05:57 CST 2014
RFS[2]: Archived Log: '+DATA/lixora/archivelog/1_23096_790186477.dbf'
Primary database is in MAXIMUM PERFORMANCE mode
RFS[2]: No standby redo logfiles of size 1024000 blocks exist
Mon Dec 22 10:06:00 CST 2014
Media Recovery Log +DATA/lixora/archivelog/1_23096_790186477.dbf
Media Recovery Waiting for thread 1 sequence 23097 (in transit)


类似一下日志,表明日志仅仅是传过来。可是没有应用:
Tue Dec 16 17:28:48 CST 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[3]: Successfully opened standby log 7: '+DATA/lixora/onlinelog/group_7.360.857131345'
Tue Dec 16 18:57:12 CST 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[3]: Successfully opened standby log 8: '+DATA/lixora/onlinelog/group_8.361.857131375'
Tue Dec 16 20:12:13 CST 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[3]: Successfully opened standby log 7: '+DATA/lixora/onlinelog/group_7.360.857131345'
Tue Dec 16 21:40:39 CST 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[3]: Successfully opened standby log 8: '+DATA/lixora/onlinelog/group_8.361.857131375'


18 怎样能够确保dg 正常:


1)v$archive_log.applied  是否为yes
2)主库切换日志:ALTER system swtich logfile。
看备库v$database.CURRENT_SCN 是否有增长?
-----------------------------------
怎样使用 RMAN 增量备份恢复 data guard log gap(日志断档)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值