ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle Data Guard模式和角色切换

2021-05-11 10:52:05  阅读:237  来源: 互联网

标签:保护模式 protection database -------------------- Guard PROTECTION SQL Oracle Data


               

        继上篇说到,Date Guard安装并测试成功。

        这篇主要记录Data Guard的三种模式切换【最大保护、最大性能和最大可用】和为了符合业务场景的主备库的角色切换。

最大保护模式

      

最大保护(maximize protection):最高级别的保护模式。primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。该模式能保证零数据丢失。

最大性能模式

最大性能(maximize performance):这是data guard默认的保护模式。事务可以随时提交,当前primary 数据库的redo 数据也需要至少写入一个standby 数据库,不过这种写入可以是不同步的,但standby对primary的性能影响最小。

最大可用模式


最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时,最大可用模式自动变为最大性能模式,所以standby故障不会导致primay不可用。只要至少有一个standby可用的情况下,即使primary down机,也能保证不丢失数据。

模式切换实现记录:


查看当前保护模式

Oracle 12c默认是最大性能模式, 所有操作都是在主库进行

SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL

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

PRIMARY          MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

当前保护模式为:最大性能模式。


关闭数据库

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。


启动到mount状态

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area  289406976 bytes

Fixed Size      1248600 bytes

Variable Size    92275368 bytes

Database Buffers  192937984 bytes

Redo Buffers    2945024 bytes

数据库装载完毕。


修改参数

修改为最大可用模式(如果pfile 中的参数已配置为:最大可用模式,可不执行 alter system这一句)

SQL>alter system set log_archive_dest_2='SERVICE=DMSDG LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DMSDG';


保护模式

 修改保护模式为最大可用模式

SQL> alter database set standby database to maximize availability;

数据库已更改。


打开数据库

SQL> alter database open;

数据库已更改。


主库查询

SQL> select open_mode,database_role,protection_mode,protection_level from v$database;


OPEN_MODE        DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL

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

READ WRITE       PRIMARY         MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

保护模式:已为最大可用


备库查询

SQL> select open_mode,database_role,protection_mode,protection_level from v$database;


OPEN_MODE        DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL

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

READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

保护模式:已为最大可用


所有保护模式语句

重要:

最大性能模式 ASYNC VALID    

SQL> alter system set log_archive_dest_2='SERVICE=DMSDG ASYNC VALID VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DMSDG'; 

DB_UNIQUE_NAME=根据实际情况来


最大可用模式 LGWR SYNC AFFIRM

SQL> alter system set log_archive_dest_2='SERVICE=DMSDG LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DMSDG';


最大可用,根据实际而定

SQL>alter database set standby database to maximize availability; 


最大保护

SQL> alter database set standby to maximize protection;


最大性能

SQL> alter database set standby to  maximize performance;

主备角色切换(DG Switchover)

Oracle Data Guard Switchover预期目标

角色

主机名

SID

DB_UNIQUE_NAME

网络连接名

备库

DB-01

orcl

ORCL

主库

DB-02

orcl

ORCLDG

1连接主数据库

图片

2修改数据状态并退出

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

Database altered.

SQL> exit

3DB-01数据库重新启动    图片

图片

4查看数据库数据库状态,主库改为只读

SQL> select open_mode,database_role,protection_mode,protection_level from v$database;


OPEN_MODE          DATABASE_ROLE    PROTECTION_MODE        PROTECTION_LEVEL

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

READ ONLY      PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

5DB-01数据库,启动恢复功能,接收数据同步状态

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

Database altered.


SQL> select open_mode,database_role,protection_mode,protection_level from v$database;


OPEN_MODE          DATABASE_ROLE    PROTECTION_MODE        PROTECTION_LEVEL

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

READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

至此DB-01,由主库切换为备库STANDBY状态完成。

6DB-02,由当前备库角色切换为主库角色,并重启

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

Database altered.



SQL> shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SQL>

SQL> startup;

ORACLE instance started.


Total System Global Area 1660944384 bytes

Fixed Size               8621376 bytes

Variable Size               1543504576 bytes

Database Buffers        100663296 bytes

Redo Buffers                  8155136 bytes

Database mounted.

Database opened.

SQL> select open_mode,database_role,protection_mode,protection_level from v$database;


OPEN_MODE          DATABASE_ROLE    PROTECTION_MODE        PROTECTION_LEVEL

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

READ WRITE            PRIMARY         MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

至此DB-02由备库的角色,切换为主库的角色,接下来验证数据同步功能是否正常!

SQL> select *  from t1;

ID NAME

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

 1 one

 2 two

SQL> insert into t1 values(3,'three');

1 row created.


SQL> insert into t1 values(4,'four');

1 row created.


SQL> commit;

Commit complete.


SQL> select * from t1;


ID NAME

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

 3 three

 4 four

 1 one

 2 two

SQL> alter system switch logfile;

System altered.

7DB-01(当前角色为备库)

使用test用户登录数据库,验证新写入的数据是否已同步。

SQL> select * from t1;


ID NAME

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

 3 three

 4 four

 1 one

 2 two


SQL>

至此已验证,DB-01,DB-02 进行角色切换后,数据同步仍然是成功的,我们的整个Data Guard 功能配置成功。

图片




标签:保护模式,protection,database,--------------------,Guard,PROTECTION,SQL,Oracle,Data
来源: https://blog.51cto.com/u_15127633/2766728

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有