ITPub博客

首页 > 数据库 > Oracle > DataGuard---->物理StandBy的角色切换之switchover

DataGuard---->物理StandBy的角色切换之switchover

Oracle 作者:vmsysjack 时间:2020-01-01 15:17:09 1 删除 编辑

DataGuard---->物理StandBy的角色切换之switchover

Switchover,无损切换,通常是用户手动触发或者有计划地让其自动触发,如硬件升级等。

步骤:

1、Primary数据库转换为StandBy角色

2、StandBy数据库(之一)转换为Primary角色

准备工作:

1、检查待转换角色的数据库参数配置正确

2、检查即将成为Primay的物理Standby服务器是否是归档模式

3、确保所有的归档日志已经传送到物理StandBy数据库

主库可以手动切换一次logfile

Primary>alter system switch logfile;

查询主库当前的归档日志sequence#

Primary>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)--------------
        22

查询备库当前的归档日志sequence#

StandBY>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)--------------
        22

两者相同,代表已经完全同步

然后再暂停备库的redo应用

StandBy>alter database recover managed standby database cancel;
Database altered.

一、查询是否可以转换

查询 主库 是否支持switchover操作
Primary> select file_name, bytes from dba_temp_files;
SWITCHOVER_STATUS
----------------------------------------

如果是SWICHOVER_STATUS显示为SESSIONS ACTIVE, 说明当前有人连接Primary数据库

  查询备库是否支持switchover操作
StandBy> select switchover_status from v$database;
SWITCHOVER_STATUS
----------------------------------------
NOT ALLOWED

NOT ALLOWED是因为主库还未切换为standby

二、primary数据库切换为物理standby

Primary —> StandBy

Database altered.

此时Primary数据库变为mount状态

Primary>select open_mode from v$database;
OPEN_MODE
----------------------------------------
MOUNTED
 

角色也变为physical standby

Primary>select database_role from v$database;
DATABASE_ROLE
--------------------------------
PHYSICAL STANDBY

如果此时打开数据库,为只读状态

Primary>alter database open;Database altered.Primary>select open_mode from v$database;
OPEN_MODE
----------------------------------------
READ ONLY
Primary>
 

三、StandBy数据库转换为Primary角色

StandBy ---> Primary

StandBy>select switchover_status from v$database;
SWITCHOVER_STATUS
----------------------------------------
TO PRIMARY
Database altered.
StandBy>alter database open;
Database altered.
StandBy>select open_mode from v$database;
OPEN_MODE
----------------------------------------
READ WRITE
StandBy>select database_role from v$database;
DATABASE_ROLE
--------------------------------
PRIMARY
StandBy>

四、同步测试

1、当前的Primay数据库插入一条数据

Primay>select * from scott.dept;
    DEPTNO DNAME            LOC
    ---------- ---------------------------- --------------------------
    10 ACCOUNTING            NEW YORK    20 RESEARCH            DALLAS    30 SALES            CHICAGO    40 OPERATIONS            BOSTON    12 OPERATIONS            OPERATIONS    13 OPERATIONS            OPERATIONS6 rows selected.
    
Primay>INSERT INTO "SCOTT"."DEPT" ("DEPTNO", "DNAME", "LOC") VALUES ('14', 'OPERATIONS', 'OPERATIONS');
1 row created.
StandBY>commit;
Commit complete.
Primay>select * from scott.dept;
    DEPTNO DNAME            LOC
    ---------- ---------------------------- --------------------------
    14 OPERATIONS            OPERATIONS    10 ACCOUNTING            NEW YORK    20 RESEARCH            DALLAS    30 SALES            CHICAGO    40 OPERATIONS            BOSTON    12 OPERATIONS            OPERATIONS    13 OPERATIONS            OPERATIONS
    7 rows selected.

2、当前的StandBy启用redo应用

实时redo应用的情况

Primary>   
Database altered.

非实时redo应用的情况


-----应用redo


alter database recover managed standby database disconnect from session; 


-----暂停redo应用

alter database recover managed standby database cancel;

查询

Primary>select * from scott.dept;
    DEPTNO DNAME            LOC
    ---------- ---------------------------- --------------------------
    14 OPERATIONS            OPERATIONS    10 ACCOUNTING            NEW YORK    20 RESEARCH            DALLAS    30 SALES            CHICAGO    40 OPERATIONS            BOSTON    12 OPERATIONS            OPERATIONS    13 OPERATIONS            OPERATIONS
    7 rows selected.

 

无法同步的情况问题解决

1、如果无法同步,切换日志试试

StandBY>alter system switch logfile;

查询Priamry和StandBy的归档日志编号是否相同

StandBY>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
        22

2、查看配置的服务名中的service_name 和 lsnrctl status中的是否相同


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29099879/viewspace-2671538/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle之11g DataGuard
下一篇: 没有了~
请登录后发表评论 登录
全部评论
专注于Oracle数据库

注册时间:2013-11-11

  • 博文量
    5
  • 访问量
    13507