ORACLE DG概念及切换

DG的原理:

DG分为物理standy,逻辑standy

物理standy:

物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。

逻辑standy:

逻辑STANDBY则不是这样,在逻辑STANDBY中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表。

DG三种模式:

最大保护模式(Maximum protection)  --性能不佳

alter database set standby database to maximize protection;

Primary Database上的每个事务的Redo日志必须在本地和Standby Database上都写入日志文件后才能提交,如果不能写入到Standby Database,Primary Database就会自动关闭(挂起)以防止数据丢失。

最大可用性(Maximum Availability)

Primary Database每个事务的Redo日志要写到本地和Standby Database中才能提交。

这个和最大保护模式不同的是,如果写入到Standby Database失败,Primary Database不会自动关闭。这时Primary Database会自动转换为Maximum Performance模式,等待问题解决并且Standby Database再次和Primary Database同步之后,Primary Database会自动的转换为Maximum Availability。

这种模式要求Standby Database必须配置Standby Redo log,而Primary Database必须配置为LGWR、SYNC、AFFIRM方式归档。

最大性能(Maximum Performance)

这个模式是缺省模式,他更加侧重对Primary Database的可用性不造成任何影响。

Primary Database上的事务的Redo日志只要写到本地日志文件就可以提交,不必等待到Standby Database的传递完成。

Primary Database的Redo流可以异步的发送到Standby Database。

这种模式通过LGWR ASYNC或者ARCH实现,Standby Database也不要求使用Standby Redo Log。

一、检查DG是否正常的四个方法

1.看备库的告警日志,正在恢复的日志号是否对应得上

2.看三个进程是否都已经启动

SQL>select process from v$managed_standby

主库中显示:

PROCESS

---------

ARCH

ARCH

ARCH

ARCH

备库中显示:ARCH、MRPO和RFS 表示正常

3.先切换一次日志,再进到归档目录里,看两边的归档文件号是否对得上

4.用命令查看两边归档是否对得上

SQL> select max(sequence#) from v$archived_log where applied='YES';

二、切换DG步骤

关闭:先主库,后备机,开启的时候先开备库启动备库监听,再开主库

1.先将主库切换成备库,然后将原主库启动到物理库的状态

SQL> Alter database commit to switchover to physical standby with session shutdown;

2.关闭主库

SQL> shutdown immediate

3.打开数据库nomount

SQL> startup nomount

4.更改主库为备库

SQL> alter database mount standby database;

SQL> alter database recover managed standby database disconnect from session;

如果配置了 standby redo log 并需要启用实时同步则执行以下代码

SQL>alter database recover managed standby database using current logfile disconnect from session;

5.将备库切换成主库

SQL> select switchover_status from v$database;

SQL> select * from v$version where rownum<2;

SQL> alter database commit to switchover to primary with session shutdown;

如果备库还有未应用的日志则执行

SQL>alter database recover managed standby database disconnect from session;

SQL> shutdown immediate

SQL> startup

切换日志进行检查

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

SQL>select sequence#,applied from v$archived_log;

SQL> alter system switch logfile;

 

你可能感兴趣的:(Oracle,DataGuard,Oracle,DataGuard)