一、环境介绍
Data Guard环境:
Primary数据库:Oracle10.2.0.5.0
操作系统:RedHat 4.4
主机名:source
IP地址:192.168.10.101
数据库SID:source
DB_UNIQUE_NAME:source_pr
Standby数据库:oracle10.2.0.5.0
操作系统:redhat 4.4
主机名:target
IP地址:192.168.10.102
数据库SID:source
DB_UNIQUE_NAME:source_st
二、dataguard启停
注意Data Guard启动顺序:
启动顺序:先standby ,后primary;
关闭顺序:先primary后standby;
在备库将实例启动到mount状态:
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
如果要取消恢复:alter database recover managed standby database cancel;
在备库启动监听:
$lsnrctl start
在主库启动实例:
SQL> startup;
在主库启动监听:
$lsnrctl start
在主库验证归档目录是否有效:
SQL> select dest_name,status,error from v$archive_dest;
如果有错误,要排查原因。
SQL> alter system switch logfile;
SQL> select max(sequence#) from v$archived_log;
查看数据库模式
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
SQL>select status,database_mode from v$archive_dest_status;
SQL>select OPEN_MODE, PROTECTION_MODE, ACTIVATION#,DATABASE_ROLE, SWITCHOVER# ,SWITCHOVER_STATUS from v$database;
三、保护模式切换体验
我最初配置的DG的保护模式是最大性能模式(MAXIMUM PERFORMANCE),在下面的体验中我分别完成如下模式的切换 最大性能-->最大保护
最大保护-->最大可用
最大可用-->最大保护
最大保护-->最大性能
最大性能-->最大可用
当保护模式更改顺序:
maximize protection ---> maximize availability ----> maximize performance
当在把dataguard的保护级别按这上面的顺序减低的时候,不需要primary库在mount状态,否则primary必须在mount状态。
如果是升级保护模式,比如从最高性能模式升级到最高可用模式,则需要先关闭数据库,然后mount数据库,如果是降级保护模式则直接
data guard数据保护模式 最大保护 最高可用 最高性能
REDO写进程 LGWR LGWR LGWR或ARCH
网络传输模式 SYNC SYNC LGWR进程时SYNC或ASYNC,ARCH进程时YNC
磁盘写操作 AFFIRM AFFIRM AFFIRM或NOAFFIRM
是否需要standby redologs YES YES 可没有但推荐有
1、最大性能-->最大保护的切换
DGMGRL> edit database source_pr set property LogXptMode ='SYNC'; --为什么改为SYNC大家很清楚吧
Property "logxptmode" updated
DGMGRL> edit database source_st set property LogXptMode ='SYNC';
Property "logxptmode" updated
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPROTECTION; --这个restart的过程是自动的
Operation requires shutdown of instance "source" on database "source_pr"
Shutting down instance "source"...
Database closed.
Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "source" on database "source_pr"
Starting instance "source"...
ORACLE instance started.
Database mounted.
2、最大保护-->最大可用的切换
这个动作比较简单,不需要改参数。
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
Succeeded.
3、最大可用-->最大保护的切换
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPROTECTION;
Operation requires shutdown of instance "source" on database "source_pr"
Shutting down instance "source"...
Database closed.
Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "source" on database "source_pr"
Starting instance "source"...
ORACLE instance started.
Database mounted.
DGMGRL>
4、最大保护-->最大性能的切换
DGMGRL> edit database source_pr set property LogXptMode ='ASYNC';
Property "logxptmode" updated
DGMGRL> edit database source_st set property LogXptMode ='ASYNC';
Error: ORA-16805: change of LogXptMode property violates overall protection mode
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPERFORMANCE;
Succeeded.
DGMGRL> edit database source_st set property LogXptMode ='ASYNC';
Property "logxptmode" updated
5、最大性能-->最大可用性的切换
DGMGRL> edit database source_pr set property LogXptMode ='SYNC'; --为什么改为SYNC大家很清楚吧
Property "logxptmode" updated
DGMGRL> edit database source_st set property LogXptMode ='SYNC';
Property "logxptmode" updated
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
Succeeded.
更多Oracle相关信息见 专题页面