对应的参数配置如下表:
dataguard保护模式切换
1、首先查看当前的保护模式 ---primary数据库操作
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
2、修改初始化参数 --primary数据库操作
SQL> alter system set log_archive_dest_2='SERVICE=standby
2 OPTIONAL LGWR SYNC AFFIRMVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
3 DB_UNIQUE_NAME=standby';
系统已更改。
3、重启数据库并设置新的数据保护模式 --primary数据库操作
语句非常简单,如下:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
FixedSize 1289484 bytes
VariableSize 121635572 bytes
Database Buffers 37748736 bytes
RedoBuffers 7098368 bytes
数据库装载完毕。
SQL> alter database setstandby database to maximize availability;
数据库已更改。
提示:maximize后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分别对应最大保护,最高可用性及最高性能。
Down掉数据库,重新启动
SQL>alter database open;
4、看一下当前的保护模式 --primary数据库操作
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
5、修改standby初始化参数设置(主要考虑角色切换,如果只测试的话本步可跳过) ---standby数据库操作
SQL> alter system set log_archive_dest_2='SERVICE=primary OPTIONAL LGWR SYNCAFFIRM
2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=primary';
系统已更改。
查看当前的保护模式
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
standby
SQL> selectprotection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
配置成功,正面顺便再测试一下。
6、停掉standby数据库,再查看primary数据库状态
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION
Standby数据库shutdown后,primary数据库保护级别切换为待同步。