分类: Oracle
2017-11-19 18:26:02
DGMGRL> show configuration;
Configuration - DG_CONF
Protection Mode: MaxAvailability
Databases:
primarydb - Primary database
stbydb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> failover to 'stbydb';
Performing failover NOW, please wait...
Failover succeeded, new primary is "stbydb"
DGMGRL> reinstate database 'primarydb';
Reinstating database "primarydb", please wait...
Operation requires shutdown of instance "primarydb" on database "primarydb"
Shutting down instance "primarydb"...
Database closed.
Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "primarydb" on database "primarydb"
Starting instance "primarydb"...
ORACLE instance started.
Database mounted.
Continuing to reinstate database "primarydb" ...
Operation requires shutdown of instance "primarydb" on database "primarydb"
Shutting down instance "primarydb"...
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "primarydb" on database "primarydb"
Starting instance "primarydb"...
ORACLE instance started.
Database mounted.
Continuing to reinstate database "primarydb" ...
Reinstatement of database "primarydb" succeeded
DGMGRL> show configuration;
Configuration - DG_CONF
Protection Mode: MaxAvailability
Databases:
stbydb - Primary database
primarydb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL>
============fast_start failover
situation -- primary db is down imnormally
--current primary
1)
alter system switch logfile;
shutdown abort;
--current standby
2)
select name,database_role,switchover_status from v$database;
-- switchover status should be "NOT ALLOWED"
3)
alter databae commit to swtichover to primary; -- will failed .
4) alter database reover managed standby database finsh;
5) check status
select name,database_role,switchover_status from v$database;
select status from v$insance;
6) switchover
alter databae commit to swtichover to primary;
alter database open;
===
startup old primary db and found it's in "failed destination"
old primary dba need to be rebuild as standby db.
==============DG broker fastfailover
1 need to set the flashback on
alter database flashback on ; -- in 12c, no need to restart the db
2 dgmgrl check fask_start failover status
show fast_star failover
DGMGRL> show fast_start failover
Fast-Start Failover: DISABLED
Threshold: 30 seconds
Target: (none)
Observer: (none)
Lag Limit: 30 seconds
Shutdown Primary: TRUE
Auto-reinstate: TRUE
Observer Reconnect: (none)
Observer Override: FALSE
Configurable Failover Conditions
Health Conditions:
Corrupted Controlfile YES
Corrupted Dictionary YES
Inaccessible Logfile NO
Stuck Archiver NO
Datafile Offline YES
Oracle Error Conditions:
(none)
3 enable fast_start failover;
4 start observer -- the command it's better to run on server side, to keep the observer running
5 simulate primary db down
shutdown abort the primary db
then the database will automatically failover to standby db
======== use flashback on to rebuild DG after failover
1 set database flashback on
alter database flashback on
select flashback_on from v$database;
select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;
SQL> show parameter flashback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
2 simulate primary db down
shutdown abort
3 -- on standby
select * from v$archive_gap;
alter database recover managed standby database cancel;
alter database recover managed standby database finish;
select open_mode,database_role from v$database;
==== if no errors show on above commands , means no data will lost.
4 -- on standby ,failover to primary
alter database commit to swtichover to primary with session shutdown;
select open_mode,database_role from v$database;
----failover done.
5 Rebuild old primary db ,add back to DG
1) old primary db should flashback to the time when standby switchover to primary . can check the time on V$database on old standby db
select standby_became_primary_scn from v$database;
SQL> select standby_became_primary_scn from v$database;
STANDBY_BECAME_PRIMARY_SCN
--------------------------
81413952
2) on old standby db ,
--create a test table for testing
create table t as select * from dba_objects where rownum<100;
select count(*) from t;
alter system switch logfile;
alter system switch logfile;
select dbms_flashback.get_system_change_number from dual;
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
81459931
3) startup old primary db in mount status and flashback db to the scn of "standby_became_primary_scn" of old standby db
startup mount;
flashback database to scn 81413952;
4) alter database convert to physical standby ;
select open_mode, database_role from v$database;
--shutdown immediate;
--startup
-- alter database recover managed standby database using current logfile disconnect from session;
check if the log can sync from prmary and standby..
check the table t
select count(*) from t;use flashback on to rebuild DG after failoveruse flashback on to rebuild DG after failoveruse