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

使用flashback恢复failover后的adg备库环境(会丢数据)

原创 TAO 2022-08-04
983

adg备库failover切成主库后,使用flashback将其恢复到强切之前的状态,切换之后的数据便丢失了,因此此方法并不能完整恢复强切之后的环境。此文章记录的是客户测试环境在测试完failover脚本后的环境恢复实验。即恢复成原来正常的主备关系。

–当前主备库状态

–主:

SQL> select name,db_unique_name,database_role,switchover_status,open_mode from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    SWITCHOVER_STATUS    OPEN_MODE
--------- ------------------------------ ---------------- -------------------- --------------------
TEST      test                           PRIMARY          SESSIONS ACTIVE      READ WRITE

–备:

SQL> select name,db_unique_name,database_role,switchover_status,open_mode from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    SWITCHOVER_STATUS    OPEN_MODE
--------- ------------------------------ ---------------- -------------------- --------------------
TEST      test1                          PHYSICAL STANDBY NOT ALLOWED          READ ONLY WITH APPLY

	
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

–使用dg broker failover

DGMGRL> show configuration

Configuration - dg_test

  Protection Mode: MaxPerformance
  Databases:
    test  - Primary database
    test1 - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

DGMGRL> failover to test1
Performing failover NOW, please wait...
Failover succeeded, new primary is "test1"

–failover之后主备的状态

–原主库

SQL> select name,db_unique_name,database_role,switchover_status,open_mode from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    SWITCHOVER_STATUS    OPEN_MODE
--------- ------------------------------ ---------------- -------------------- --------------------
TEST      test                           PRIMARY          NOT ALLOWED          READ WRITE

–原备库

SQL> select name,db_unique_name,database_role,switchover_status,open_mode from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    SWITCHOVER_STATUS    OPEN_MODE
--------- ------------------------------ ---------------- -------------------- --------------------
TEST      test1                          PRIMARY          NOT ALLOWED          READ WRITE

–查一下强切之前的scn

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

CURRENT_SCN
-----------
    2353873

–将原备库闪回恢复为备库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
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.
SQL> flashback database to scn 2353873;

Flashback complete.

Elapsed: 00:00:03.24
SQL> alter database convert to physical standby;

Database altered.

Elapsed: 00:00:00.61

SQL> shutdown immediate
ORA-01507: database not mounted


ORACLE instance shut down.
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> select name,db_unique_name,database_role,switchover_status,open_mode from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    SWITCHOVER_STATUS    OPEN_MODE
--------- ------------------------------ ---------------- -------------------- --------------------
TEST      test1                          PHYSICAL STANDBY TO PRIMARY           READ ONLY

–此时原主库broker configuration已经没用了,remove掉

DGMGRL> show configuration;
ORA-16795: the standby database needs to be re-created

Configuration details cannot be determined by DGMGRL
DGMGRL> disable configuration
Disabled.
DGMGRL> remove configuration
Removed configuration

–原备库broker configuration也有问题,remove掉,重新配置

DGMGRL> show configuration

Configuration - dg_test

  Protection Mode: MaxPerformance
  Databases:
    test1 - Primary database
      Error: ORA-16816: incorrect database role

    test  - Physical standby database (disabled)
      ORA-16661: the standby database needs to be reinstated

Fast-Start Failover: DISABLED

Configuration Status:
ERROR
DGMGRL> disable configuration
Disabled.
DGMGRL> remove configuration
Removed configuration

–主库重新配置,因为之前就是主备关系,tns和一些参数不用改

DGMGRL> create configuration 'dg_test' as primary database is 'test' connect identifier is 'test';

DGMGRL> add database 'test1' as connect identifier is test1 maintained as physical;

enable configuration

DGMGRL> edit database test1 set state='apply-on';

DGMGRL> show configuration;

Configuration - dg_test

  Protection Mode: MaxPerformance
  Databases:
    test  - Primary database
    test1 - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

–备库已同步

  SQL> select * from v$dataguard_stats;

NAME                             VALUE                UNIT                           TIME_COMPUTED                  DATUM_TIME
-------------------------------- -------------------- ------------------------------ ------------------------------ ------------------------------
transport lag                    +00 00:00:00         day(2) to second(0) interval   08/20/2021 15:26:42            08/20/2021 15:26:41
apply lag                        +00 00:00:00         day(2) to second(0) interval   08/20/2021 15:26:42            08/20/2021 15:26:41
apply finish time                                     day(2) to second(3) interval   08/20/2021 15:26:42
estimated startup time           14                   second                         08/20/2021 15:26:42

Elapsed: 00:00:00.01
SQL> select PROCESS,STATUS,GROUP#,THREAD#,SEQUENCE#,BLOCK#,BLOCKS from v$managed_standby;

PROCESS   STATUS       GROUP#                                      THREAD#  SEQUENCE#     BLOCK#     BLOCKS
--------- ------------ ---------------------------------------- ---------- ---------- ---------- ----------
ARCH      CLOSING      5                                                 1        129          1        337
ARCH      CLOSING      4                                                 1        128          1        329
ARCH      CONNECTED    N/A                                               0          0          0          0
ARCH      CLOSING      5                                                 1        125       2048       1923
RFS       IDLE         3                                                 1        130       1103          1
RFS       IDLE         N/A                                               0          0          0          0
RFS       IDLE         N/A                                               0          0          0          0
MRP0      APPLYING_LOG N/A                                               1        130       1103     102400

8 rows selected.

以上实验为单机环境进行,rac环境在关库闪回时只保留一个节点,后续配置broker记得将两个节点都启动;主库强切后主节点将会mount,删除broker configuration才能重启

–19c rac broker重配置参考

########## reset broker
export ORACLE_SID=xxx
dgmgrl sys/oracle
remove configuration
exit
dgmgrl sys/oracle
remove configuration
CREATE CONFIGURATION 'DG_RAC19C' AS PRIMARY DATABASE IS 'RAC19C'  CONNECT IDENTIFIER IS RAC19C;
add database 'RAC19CDG' as connect identifier is RAC19CDG;
edit database RAC19C set property redoroutes='(local:(RAC19CDG async ))';
edit database RAC19C set property maxfailure=0;
edit database RAC19CDG set property redoroutes='(local:(RAC19C async))';
edit database RAC19CDG set property maxfailure=0;
edit instance 'RAC19C1' on database 'RAC19C' set property staticconnectidentifier='(description=(address=(protocol=tcp)(host=55.14.xx.20)(port=1521))(connect_data=(service_name=RAC19C)(instance_name=RAC19C1)(server=dedicated)))';
edit instance 'RAC19C2' on database 'RAC19C' set property staticconnectidentifier='(description=(address=(protocol=tcp)(host=55.14.xx.21)(port=1521))(connect_data=(service_name=RAC19C)(instance_name=RAC19C2)(server=dedicated)))';
edit instance 'RAC19CDG1' on database 'RAC19CDG' set property staticconnectidentifier='(description=(address=(protocol=tcp)(host=55.14.xx.16)(port=1521))(connect_data=(service_name=RAC19CDG)(instance_name=RAC19CDG1)(server=dedicated)))';
edit instance 'RAC19CDG2' on database 'RAC19CDG' set property staticconnectidentifier='(description=(address=(protocol=tcp)(host=55.14.xx.17)(port=1521))(connect_data=(service_name=RAC19CDG)(instance_name=RAC19CDG2)(server=dedicated)))';
edit configuration set protection mode as maxperformance;
enable configuration;
edit database RAC19CDG set state='apply-on';
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论