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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




