天天看點

Oracle Dg 重建,DG Failover之後原主庫恢複成standby重建加入DG

一.原DG主備庫需開啟flashback database1.檢視是否開啟flashback主:

SQL> select flashback_on from v$database

LASHBACK_ON

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

NO

備:

SQL> select flashback_on from v$database;

LASHBACK_ON

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

NO

2.開啟flashback(主,備)

SQL> shutdown immediate

SQL> Startup mount

SQL> Alter database flashback on

SQL> Alter database open

二.Failover DGhttps://www.cndba.cn/Expect-le/article/122

原備庫成為主庫,原主庫脫離DG。成為兩個單執行個體。

1.備庫的failoverSQL> shutdown immediate

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area  709836800 byteshttps://www.cndba.cn/Expect-le/article/122

Fixed Size 2256632 bytes

Variable Size 486539528 bytes

Database Buffers 218103808 bytes

Redo Buffers 2936832 bytes

Database mounted.

SQL> alter system flush redo to 'zds_s';

System altered.

2.failover操作

這裡省略了failover的操作步驟。

步驟:

alter system flush redo to

alter database recover managed standby database finish force;

alter database commit to switchover to primary with session shutdown;

alter database open;

https://www.cndba.cn/Expect-le/article/122

[[email protected] opt]# python zx.py dgfo_st zds

TRUE|1

檢查源備庫:

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

NAME   LOG_MODE     OPEN_MODE     DATABASE_ROLE    PROTECTION_MODE   SWITCHOVER_STATUS

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

ZDS   ARCHIVELOG   READ WRITE     PRIMARY      MAXIMUM PERFORMANCE  FAILED DESTINATION

SQL> select open_mode from v$database;

OPEN_MODE

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

READ WRITE

https://www.cndba.cn/Expect-le/article/122

2.恢複原主庫成備庫。

---新主庫檢視scn

SQL> SELECT TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) FROM V$DATABASE;

TO_CHAR(STANDBY_BECAME_PRIMARY_SCN)

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

1269588

---舊主庫

SQL> shutdown immediate

SQL> startup mount;

ORACLE instance started.

Total System Global Area  709836800 bytes

Fixed Size     2256632 bytes

Variable Size   486539528 bytes

Database Buffers   218103808 bytes

Redo Buffers     2936832 bytes

Database mounted.

---閃回到上面查出scn

SQL> flashback database to scn 1269588;

Flashback complete.

----切換到PHYSICAL STANDBYhttps://www.cndba.cn/Expect-le/article/122

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

Database altered.

SQL> SHUTDOWN IMMEDIATE;

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> startup;

ORACLE instance started.

Total System Global Area  709836800 bytes

Fixed Size     2256632 bytes

Variable Size   486539528 bytes

Database Buffers   218103808 bytes

Redo Buffers     2936832 bytes

Database mounted.

Database opened.

---啟動MRP

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

Database altered.

SQL>

檢視程序

SQL> select process,status from v$managed_standby;

PROCESS   STATUS

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

ARCH   CONNECTED

ARCH   CONNECTED

ARCH   CONNECTED

ARCH   CLOSING

RFS   IDLE

RFS   IDLE

RFS   IDLE

MRP0   APPLYING_LOG

8 rows selected.

至此,原主庫已經恢複成備庫

三.檢查新加入DG的狀态

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

NAME   LOG_MODE     OPEN_MODE     DATABASE_ROLE    PROTECTION_MODE   SWITCHOVER_STATUS

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

ZDS   ARCHIVELOG   READ WRITE     PRIMARY      MAXIMUM PERFORMANCE  TO STANDBY

SQL> select DEST_NAME,STATUS,PROCESS,ERROR,TRANSMIT_MODE from v$archive_dest WHERE TARGET='STANDBY';

DEST_NAME        STATUS  PROCESS    ERROR    TRANSMIT_MOD

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

LOG_ARCHIVE_DEST_2        VALID  LGWR    ASYNCHRONOUS

新主庫:

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

48

SQL> alter system switch logfile;

System altered.

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

49

新備庫:

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

48

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

49

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。