暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

Oracle DG GAP之基于SCN增量备份恢复

原创 TAO 2022-08-25
1469

1.  模拟归档丢失

1.1.   查看DG当前状态

登录主备库查看归档状态

主库:

SQL> SELECT NAME,DB_UNIQUE_NAME,DATABASE_ROLE,PROTECTION_MODE, SWITCHOVER_STATUS, OPEN_MODE FROM V$DATABASE;

 

NAME       DB_UNIQUE_ DATABASE_ROLE        PROTECTION_MODE                SWITCHOVER_STATUS    OPEN_MODE

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

TEST       test       PRIMARY              MAXIMUM PERFORMANCE            TO STANDBY           READ WRITE

 

 

备库:

SQL> SELECT NAME,DB_UNIQUE_NAME,DATABASE_ROLE,PROTECTION_MODE, SWITCHOVER_STATUS, OPEN_MODE FROM V$DATABASE;

 

NAME       DB_UNIQUE_ DATABASE_ROLE        PROTECTION_MODE                SWITCHOVER_STATUS    OPEN_MODE

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

TEST       test1      PHYSICAL STANDBY     MAXIMUM PERFORMANCE            NOT ALLOWED          READ ONLY WITH APPLY

 

SQL> select value from v$dataguard_stats;

 

VALUE

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

+00 00:00:00

+00 00:00:00


1.2.   停止备库日志应用,并关闭备库

SQL> recover managed standby database cancel;

Media recovery complete.

SQL> shutdown immediate

Database closed.

Database dismounted.


1.3.   主库生成新归档并清理部分

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            +DATA

Oldest online log sequence     28

Next log sequence to archive   30

Current log sequence           30

SQL> alter system switch logfile;

System altered.

Elapsed: 00:00:00.09

SQL> /

System altered.

Elapsed: 00:00:00.03

SQL> /

System altered.

Elapsed: 00:00:00.02

SQL> /

System altered.

Elapsed: 00:00:00.03

SQL> /

System altered.

Elapsed: 00:00:00.01

 

[root@asm1 ~]# su - grid

[grid@asm1 ~]$ asmcmd

ASMCMD> cd data/test/arch*

ASMCMD> ls

2021_08_19/

2021_08_20/

ASMCMD> cd 2021_08_20

ASMCMD> ls

thread_1_seq_27.300.1081047797

thread_1_seq_28.301.1081047815

thread_1_seq_29.302.1081059237

thread_1_seq_30.303.1081060247

thread_1_seq_31.304.1081060249

thread_1_seq_32.305.1081060249

thread_1_seq_33.306.1081060251

thread_1_seq_34.307.1081060251

thread_1_seq_35.308.1081060613

thread_1_seq_36.309.1081060613

 

ASMCMD> rm thread_1_seq_32.305.1081060249

ASMCMD> rm thread_1_seq_33.306.1081060251


1.4.   启动备库查看状态

SQL> startup

ORACLE instance started.

 

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             545262632 bytes

Database Buffers          289406976 bytes

Redo Buffers                2355200 bytes

Database mounted.

Database opened.

SQL> recover managed standby database disconnect;

Media recovery complete.

 

SQL> SELECT NAME,DB_UNIQUE_NAME,DATABASE_ROLE,PROTECTION_MODE, SWITCHOVER_STATUS, OPEN_MODE FROM V$DATABASE;

 

NAME       DB_UNIQUE_ DATABASE_ROLE        PROTECTION_MODE                SWITCHOVER_STATUS    OPEN_MODE

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

TEST       test1      PHYSICAL STANDBY     MAXIMUM PERFORMANCE            NOT ALLOWED          READ ONLY WITH APPLY

 

SQL> select value from v$dataguard_stats;

 

VALUE

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

+00 00:12:26

 

14

 

存在延迟,日志报出现GAP,缺失32-33

 

SQL> select * from v$archive_gap;

 

   THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#

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

         1            32             33

 

Elapsed: 00:00:00.04


2.  主库做基于SCN的增量备份

2.1.   确认备库当前SCN

SQL> select to_char(current_scn) from v$database;

 

TO_CHAR(CURRENT_SCN)

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

1071483

 

Elapsed: 00:00:00.01


2.2.   主库增量备份

先生成一个备库控制文件

SQL> alter database create standby controlfile as '/orabak/standby.ctl';

 

Database altered.

 

Elapsed: 00:00:00.84

 

增量备份

RMAN> run

2> {

3> allocate  channel a1 type disk;

4> allocate  channel a2 type disk;

5> backup incremental from scn 1071483 database format '/orabak/incre_%d_%T_%U';

6> }

 

released channel: ORA_DISK_1

allocated channel: a1

channel a1: SID=45 device type=DISK

 

allocated channel: a2

channel a2: SID=54 device type=DISK

 

Starting backup at 2021-08-20 07:33:16

channel a1: starting full datafile backup set

channel a1: specifying datafile(s) in backup set

input datafile file number=00001 name=+DATA/test/datafile/system.270.1081022317

input datafile file number=00004 name=+DATA/test/datafile/users.272.1081022317

input datafile file number=00003 name=+DATA/test/datafile/undotbs1.261.1081022317

channel a1: starting piece 1 at 2021-08-20 07:33:16

channel a2: starting full datafile backup set

channel a2: specifying datafile(s) in backup set

input datafile file number=00002 name=+DATA/test/datafile/sysaux.260.1081022317

input datafile file number=00005 name=+DATA/test/datafile/example.264.1081022395

channel a2: starting piece 1 at 2021-08-20 07:33:16

channel a1: finished piece 1 at 2021-08-20 07:34:11

piece handle=/orabak/incre_TEST_20210820_0n06vehs_1_1 tag=TAG20210820T073316 comment=NONE

channel a1: backup set complete, elapsed time: 00:00:55

channel a1: starting full datafile backup set

channel a1: specifying datafile(s) in backup set

channel a2: finished piece 1 at 2021-08-20 07:34:11

piece handle=/orabak/incre_TEST_20210820_0o06vehs_1_1 tag=TAG20210820T073316 comment=NONE

channel a2: backup set complete, elapsed time: 00:00:55

including current control file in backup set

channel a1: starting piece 1 at 2021-08-20 07:34:14

channel a1: finished piece 1 at 2021-08-20 07:34:15

piece handle=/orabak/incre_TEST_20210820_0p06vejj_1_1 tag=TAG20210820T073316 comment=NONE

channel a1: backup set complete, elapsed time: 00:00:01

Finished backup at 2021-08-20 07:34:15

released channel: a1

released channel: a2

 

将备份传到备库

[oracle@asm1 orabak]$ ll

total 26504

-rw-r-----. 1 oracle asmadmin 10043392 Aug 20 07:56 stanby.ctl

-rw-r-----. 1 oracle asmadmin   319488 Aug 20 08:13 incre_TEST_20210820_0q06vgqt_1_1

-rw-r-----. 1 oracle asmadmin  4825088 Aug 20 08:12 incre_TEST_20210820_0r06vgqt_1_1

-rw-r-----. 1 oracle asmadmin  1859584 Aug 20 08:12 incre_TEST_20210820_0s06vgqt_1_1

-rw-r-----. 1 oracle asmadmin 10092544 Aug 20 08:13 incre_TEST_20210820_0t06vgsb_1_1 [oracle@asm1 orabak]$ scp * rhel6:/orabak

oracle@rhel6's password:

incre_TEST_20210820_0q06vgqt_1_1                 100%  312KB 312.0KB/s   00:00   

incre_TEST_20210820_0r06vgqt_1_1                 100% 4712KB   4.6MB/s   00:00   

incre_TEST_20210820_0s06vgqt_1_1                 100% 1816KB   1.8MB/s   00:00   

incre_TEST_20210820_0t06vgsb_1_1                 100% 9856KB   9.6MB/s   00:00   

stanby.ctl                                       100% 9808KB   9.6MB/s   00:00    


3.  备库恢复

3.1.   将增量备份和控制文件注册进rman

RMAN>  catalog start with '/orabak/';

 

searching for all files that match the pattern /orabak/

 

List of Files Unknown to the Database

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

File Name: /orabak/stanby.ctl

File Name: /orabak/incre_TEST_20210820_0s06vgqt_1_1

File Name: /orabak/incre_TEST_20210820_0q06vgqt_1_1

File Name: /orabak/incre_TEST_20210820_0r06vgqt_1_1

File Name: /orabak/incre_TEST_20210820_0t06vgsb_1_1

 

Do you really want to catalog the above files (enter YES or NO)? yes

cataloging files...

cataloging done

 

List of Cataloged Files

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

File Name: /orabak/stanby.ctl

File Name: /orabak/incre_TEST_20210820_0s06vgqt_1_1

File Name: /orabak/incre_TEST_20210820_0q06vgqt_1_1

File Name: /orabak/incre_TEST_20210820_0r06vgqt_1_1

File Name: /orabak/incre_TEST_20210820_0t06vgsb_1_1


 

3.2.   记录数据文件名,备库启动到nomount,恢复备库控制文件

SQL> select name from v$datafile;

 

NAME

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

+DATA/test1/datafile/system.258.1080695371

+DATA/test1/datafile/sysaux.259.1080695373

+DATA/test1/datafile/undotbs1.261.1080695419

+DATA/test1/datafile/users.262.1080695445

+DATA/test1/datafile/example.260.1080695373

 

Elapsed: 00:00:00.02

 

 

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup nomount;

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE instance started.

 

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             545262632 bytes

Database Buffers          289406976 bytes

Redo Buffers                2355200 bytes

 

[oracle@rhel6 ~]$ rman target /

 

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Aug 16 08:23:45 2021

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 

connected to target database: TEST (not mounted)

 

RMAN> restore controlfile from '/orabak/stanby.ctl';

 

Starting restore at 2021-08-16 08:24:28

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=26 device type=DISK

 

channel ORA_DISK_1: copied control file copy

output file name=+DATA/test1/controlfile/current.256.1080695337

output file name=+DATA/test1/controlfile/current.257.1080695337

Finished restore at 2021-08-16 08:24:29

 

RMAN> alter database mount;

 

database mounted

released channel: ORA_DISK_1

 

SQL> alter system set standby_file_management=manual sid='*';

 

System altered.

 

Elapsed: 00:00:00.02

SQL> alter database rename file '+DATA/test/datafile/system.270.1081022317' TO '+DATA/test1/datafile/system.258.1080695371'

  2  ;

 

Database altered.

 

Elapsed: 00:00:00.07

SQL> alter database rename file '+DATA/test/datafile/sysaux.260.1081022317' TO '+DATA/test1/datafile/sysaux.259.1080695373';

 

Database altered.

 

Elapsed: 00:00:00.03

SQL> alter database rename file '+DATA/test/datafile/undotbs1.261.1081022317' TO '+DATA/test1/datafile/undotbs1.261.1080695419' ;

 

Database altered.

 

Elapsed: 00:00:00.02

SQL> alter database rename file '+DATA/test/datafile/users.272.1081022317' TO '+DATA/test1/datafile/users.262.1080695445';

 

Database altered.

 

Elapsed: 00:00:00.02

SQL> alter database rename file '+DATA/test/datafile/example.264.1081022395' TO '+DATA/test1/datafile/example.260.1080695373' ;

 

Database altered.

 

Elapsed: 00:00:00.01

SQL> alter system set standby_file_management=auto sid='*';

 

System altered.


 

3.3.   修改控制文件中的数据文件名

 

SQL> alter system set standby_file_management=manual sid='*';

 

System altered.

 

Elapsed: 00:00:00.02

SQL> alter database rename file '+DATA/test/datafile/system.270.1081022317' TO '+DATA/test/datafile/system.258.1080695371';

 

SQL>

SQL>

SQL> alter database rename file '+DATA/test/datafile/system.270.1081022317' TO '+DATA/test1/datafile/system.258.1080695371';

 

Database altered.

 

Elapsed: 00:00:00.07

SQL> alter database rename file '+DATA/test/datafile/sysaux.260.1081022317' TO '+DATA/test1/datafile/sysaux.259.1080695373';

 

Database altered.

 

Elapsed: 00:00:00.03

SQL> alter database rename file '+DATA/test/datafile/undotbs1.261.1081022317' TO '+DATA/test1/datafile/undotbs1.261.1080695419' ;

 

Database altered.

 

Elapsed: 00:00:00.02

SQL> alter database rename file '+DATA/test/datafile/users.272.1081022317' TO '+DATA/test1/datafile/users.262.1080695445';

 

Database altered.

 

Elapsed: 00:00:00.02

SQL> alter database rename file '+DATA/test/datafile/example.264.1081022395' TO '+DATA/test1/datafile/example.260.1080695373' ;

 

Database altered.

 

Elapsed: 00:00:00.01

SQL> alter system set standby_file_management=auto sid='*';

 

System altered.


 

3.4.   恢复备库

RMAN> RECOVER DATABASE NOREDO;

 

Starting recover at 2021-08-16 09:01:55

using channel ORA_DISK_1

channel ORA_DISK_1: starting incremental datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

destination for restore of datafile 00001: +DATA/test1/datafile/system.258.1080695371

channel ORA_DISK_1: reading from backup piece /orabak/incre_TEST_20210820_0q06vgqt_1_1

channel ORA_DISK_1: piece handle=/orabak/incre_TEST_20210820_0q06vgqt_1_1 tag=TAG20210820T081213

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting incremental datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

destination for restore of datafile 00002: +DATA/test1/datafile/sysaux.259.1080695373

destination for restore of datafile 00004: +DATA/test1/datafile/users.262.1080695445

channel ORA_DISK_1: reading from backup piece /orabak/incre_TEST_20210820_0r06vgqt_1_1

channel ORA_DISK_1: piece handle=/orabak/incre_TEST_20210820_0r06vgqt_1_1 tag=TAG20210820T081213

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting incremental datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

destination for restore of datafile 00003: +DATA/test1/datafile/undotbs1.261.1080695419

destination for restore of datafile 00005: +DATA/test1/datafile/example.260.1080695373

channel ORA_DISK_1: reading from backup piece /orabak/incre_TEST_20210820_0s06vgqt_1_1

channel ORA_DISK_1: piece handle=/orabak/incre_TEST_20210820_0s06vgqt_1_1 tag=TAG20210820T081213

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

 

Finished recover at 2021-08-16 09:01:58

 

RMAN>

 

RMAN>

 

RMAN> alter database open;

 

database opened


3.5.   检查备库

SQL>  select INSTANCE_NAME,HOST_NAME,VERSION,STARTUP_TIME,STATUS from v$instance;

 

INSTANCE_NAME    HOST_NAME                 VERSION           STARTUP_TIME        STATUS

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

test1            rhel6                     11.2.0.4.0        2021-08-16 08:21:41 OPEN

Elapsed: 00:00:00.00

 

SQL> set linesize 180

SQL> col name for a10

SQL> col DB_UNIQUE_NAME for a10

SQL> col DATABASE_ROLE for a20

SQL> col PROTECTION_MODE for a30

SQL> col SWITCHOVER_STATUS for a20

SQL> col OPEN_MODE for a30

SQL> SELECT NAME,DB_UNIQUE_NAME,DATABASE_ROLE,PROTECTION_MODE, SWITCHOVER_STATUS, OPEN_MODE FROM V$DATABASE;

 

NAME       DB_UNIQUE_ DATABASE_ROLE        PROTECTION_MODE                SWITCHOVER_STATUS    OPEN_MODE

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

TEST       test1      PHYSICAL STANDBY     MAXIMUM PERFORMANCE            RECOVERY NEEDED      READ ONLY

 

Elapsed: 00:00:00.06

SQL> recover managed standby database disconnect;

Media recovery complete.

SQL> select value from v$dataguard_stats;

 

VALUE

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

+00 00:40:42

+00 02:34:33

 

14

 

Elapsed: 00:00:00.00

SQL> select * from v$archive_gap;

 

no rows selected

 

Elapsed: 00:00:00.04

主库切下归档

SQL> select value from v$dataguard_stats;

 

VALUE

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

+00 00:00:00

+00 00:00:00

 

14

 

Elapsed: 00:00:00.01


 

最后修改时间:2022-08-26 09:32:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论