dataguard 三种保护模式
2014-05-27 10:18
176 查看
1、最大保护
这种保护模式在主库出现问题时不会有数据的丢失,为了提供这种保护模式,一个事物必须同时写本地的online redo log,和至少一个备库的redo log同步,才能commit;
为了确保数据不会丢失,如果备库至少有一个日志不能写入,那么主库不会继续处理其他事物,而是关闭。
在主库上的事物会尽快写入到备库上的日志后,会立刻通知主库,继续处理其他的事物,最大可能的减小主库同步的吞吐和响应时间。为了在备库上通过完整的验证,最好用real time apply
这样备库在接受到日志后,会尽可能快的应用日志,dataguard会通知他所遇到的损坏,并快速处理
这种数据保护模式比最高可用的数据保护模式要优先一些,oracle推荐最少有两个备库保护主库在最大保护模式,来阻止单备库故障,导致主库关闭
2、最大可用
这种保护模式提供了最高模式,不会影响主库的可用性,但是事物在主库写本地的online redo log和至少一个备库的redo log同步才会commit;如果主库的日志不能同步到至少一个备库,为了最大可用,那么就会转换成最大性能,
直到主库可以同步日志到至少一个备库,那么会恢复到最大可用
这种模式,确定没有数据丢失,如果主库的出的故障,但是几秒的故障不会阻止主库完全的数据集发送的备库去
3、最大性能
这种模式提供了最高级别的数据保护,他不会影响主库的性能,他是通过事物提交后快速写日志,这些日志会通过异步传输到一个多个备库中去,所以主库的性能是不会受到影响
最大性能保护模式比最大可用在数据保护略显不足,可能会有数据丢失,但是不会影响主库的性能,这是默认的保护模式
三种保护模式的不同:
日志同步方式不同:
maximum AvailabilityMaximum Performance
Maximum Protection
磁盘写操作 AFFIRM NOAFFIRM
AFFIRM
SYNC ASYNC
SYNC
DB_UNIQUE_NAMEDB_UNIQUE_NAME
DB_UNIQUE_NAME
standby log 无 ,推荐最好有 standby log
commit条件不同:
最大保护:Primary Database上的每个事务的Redo日志必须在本地和Standby Database上都写入日志文件后才能提交(如果不能写入STANDBY DATABASE,PRIMARY DATABASE 自动挂起,防止丢数据)
最高可用:Primary Database每个事务的Redo日志要写到本地和Standby Database中才能提交(与最大保护不同的是:写入STANDBY DATABASE失败,PRIMARY DATABASE不会挂起,会自动转成最大性能模式,等待问题解决后自动转成最大可用模式)
最大性能:Primary Database上的事务的Redo日志只要写到本地日志文件就可以提交,不必等待到Standby Database的传递完成
数据一致性不同:
最大保护:完全一致
最高可用:尽可能的避免数据的丢失,但不能绝对保证数据完全一致
最大性能:可以异步同步日志,可能有数据的丢失
默认是最大性能是模式保护模式
日志的传输模式:
arch:这是默认的传输日志的模式,主库在日志切换后,完成归档,才能通过arch进程传输给standby的RFS进程,这种传输日志的模式只能在最大性能模式使用
lgwr:使用lgwr方式即时传输日志给standby,主库产生事物后,会通过lgwr进程去写本地的redo和本地的lns进程,通过本地的lns进程传输日志给standby的lns进程,然后通过RFS进程写standby redo,MPR进程应用日志。
这种方式不需要等到归档才传输日志,减少了数据的丢失,这种日志传输方式适合三种模式,但是备库必须有standby redo log
主库查看使用哪种方式进行日志传输:
SQL> select dest_name,archiver from v$archive_dest;
DEST_NAME
ARCHIVER
-------------------- ----------
LOG_ARCHIVE_DEST_1 ARCH
LOG_ARCHIVE_DEST_2 LGWR
LOG_ARCHIVE_DEST_3 ARCH
LOG_ARCHIVE_DEST_4 ARCH
LOG_ARCHIVE_DEST_5 ARCH
LOG_ARCHIVE_DEST_6 ARCH
LOG_ARCHIVE_DEST_7 ARCH
LOG_ARCHIVE_DEST_8 ARCH
LOG_ARCHIVE_DEST_9 ARCH
LOG_ARCHIVE_DEST_10 ARCH
LOG_ARCHIVE_DEST_11 ARCH
LOG_ARCHIVE_DEST_12 ARCH
LOG_ARCHIVE_DEST_13 ARCH
LOG_ARCHIVE_DEST_14 ARCH
LOG_ARCHIVE_DEST_15 ARCH
LOG_ARCHIVE_DEST_16 ARCH
LOG_ARCHIVE_DEST_17 ARCH
LOG_ARCHIVE_DEST_18 ARCH
LOG_ARCHIVE_DEST_19 ARCH
LOG_ARCHIVE_DEST_20 ARCH
LOG_ARCHIVE_DEST_21 ARCH
LOG_ARCHIVE_DEST_22 ARCH
LOG_ARCHIVE_DEST_23 ARCH
LOG_ARCHIVE_DEST_24 ARCH
LOG_ARCHIVE_DEST_25 ARCH
LOG_ARCHIVE_DEST_26 ARCH
LOG_ARCHIVE_DEST_27 ARCH
LOG_ARCHIVE_DEST_28 ARCH
LOG_ARCHIVE_DEST_29 ARCH
LOG_ARCHIVE_DEST_30 ARCH
LOG_ARCHIVE_DEST_31 ARCH
31 rows selected.
一般而言,standby redo 日志文件组数要比primary 数据库的online redo 日志文件组数至少多一个。推荐standby redo 日志组数量基于primary 数据库的线程数(这里的线程数可以理解为rac 结构中的rac节点数)。
有一个推荐的公式可以做参考:(每线程的日志组数+1)*最大线程数
备库添加standby log:
SQL> alter database drop standby logfile '/archive/1_0_815224926.arc';
Database altered.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/redo01.log NO
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby01.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby02.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby03.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby04.log' size 50M;
Database altered.
SQL> select * From v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/redo01.log NO
4 STANDBY /u01/app/oracle/oradata/standby01.log NO
5 STANDBY /u01/app/oracle/oradata/standby02.log NO
6 STANDBY /u01/app/oracle/oradata/standby03.log NO
7 STANDBY /u01/app/oracle/oradata/standby04.log NO
7 rows selected.
为了防止出现什么切换过程中的问题,所以开启了闪回
SQL> alter database FLASHBACK ON;
Database altered.
SQL> select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------------
YES
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
2337163
从低到高:
最大性能----》 最大可用-----》最最大保护
需要在mount状态一步的切换,但是反过来不需要在mount下切换,open状态就可以
1、查看参数文件
*.DB_NAME=rac
*.DB_UNIQUE_NAME=rac
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(rac,orcl)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac'
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
*.LOG_ARCHIVE_MAX_PROCESSES=30
*.FAL_SERVER=rac
*.fal_client=orcl
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/','/u01/app/oracle/oradata/rac/'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/','/u01/app/oracle/oradata/rac/'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.STANDBY_ARCHIVE_DEST='/archive'
2、修改参数文件
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
参数没有问题,是lgwr async affirm或者lgwr sync affirm都可以
通过动态修改: 在主库
alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr SYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' scope=both
三种保护模式的切换:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(rac,orcl)';
在主库执行:只需要在主库执行,备库就会跟这改变
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE
PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE
MAXIMUM AVAILABILITY RESYNCHRONIZATION TO STANDBY
正常情况下 PROTECTION_LEVEL 是 MAXIMUM AVAILABILITY
出了点问题 , RESYNCHRONIZATION ,需要重新同步
SQL> select thread#, sequence#, status from v$log;
THREAD# SEQUENCE# STATUS
---------- ---------- ----------------
1 412 INACTIVE
1 413 ACTIVE
1 414 CURRENT
在备库执行:
SQL> select thread#, max(sequence#) from v$archived_log where applied='YES' group by thread#;
THREAD# MAX(SEQUENCE#)
---------- --------------
1 410
SQL> alter database recover managed standby database disconnect from session;
Database altered.
最后发现参数文件让我给修改错误了,DB_UNIQUE_NAME是备库的名称
alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr SYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' scope=both
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY TO STANDBY
查看备库:
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
MOUNTED MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY NOT ALLOWED
主库查看产生的最大归档号:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
422
备库查看产生的归档:
SQL> select sequence#,thread#,resetlogs_id from v$archived_log;
SEQUENCE# THREAD# RESETLOGS_ID
---------- ---------- ------------
403 1815224926
404 1815224926
405 1815224926
406 1815224926
407 1815224926
408 1815224926
409 1815224926
410 1815224926
411 1815224926
412 1815224926
413 1815224926
414 1815224926
415 1815224926
416 1815224926
417 1815224926
418 1815224926
419 1815224926
420 1815224926
421 1815224926
422 1815224926
20 rows selected.
SQL>
从高到低:
最大性能-《--- 最大可用《-----最最大保护
直接在主库进行切换,不用修改参数文件
在主库执行:
SQL> alter database set standby database to maximize availability;
Database altered.
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY TO STANDBY
SQL> alter database set standby database to maximize performance;
Database altered.
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO STANDBY
这种保护模式在主库出现问题时不会有数据的丢失,为了提供这种保护模式,一个事物必须同时写本地的online redo log,和至少一个备库的redo log同步,才能commit;
为了确保数据不会丢失,如果备库至少有一个日志不能写入,那么主库不会继续处理其他事物,而是关闭。
在主库上的事物会尽快写入到备库上的日志后,会立刻通知主库,继续处理其他的事物,最大可能的减小主库同步的吞吐和响应时间。为了在备库上通过完整的验证,最好用real time apply
这样备库在接受到日志后,会尽可能快的应用日志,dataguard会通知他所遇到的损坏,并快速处理
这种数据保护模式比最高可用的数据保护模式要优先一些,oracle推荐最少有两个备库保护主库在最大保护模式,来阻止单备库故障,导致主库关闭
2、最大可用
这种保护模式提供了最高模式,不会影响主库的可用性,但是事物在主库写本地的online redo log和至少一个备库的redo log同步才会commit;如果主库的日志不能同步到至少一个备库,为了最大可用,那么就会转换成最大性能,
直到主库可以同步日志到至少一个备库,那么会恢复到最大可用
这种模式,确定没有数据丢失,如果主库的出的故障,但是几秒的故障不会阻止主库完全的数据集发送的备库去
3、最大性能
这种模式提供了最高级别的数据保护,他不会影响主库的性能,他是通过事物提交后快速写日志,这些日志会通过异步传输到一个多个备库中去,所以主库的性能是不会受到影响
最大性能保护模式比最大可用在数据保护略显不足,可能会有数据丢失,但是不会影响主库的性能,这是默认的保护模式
三种保护模式的不同:
日志同步方式不同:
maximum AvailabilityMaximum Performance
Maximum Protection
磁盘写操作 AFFIRM NOAFFIRM
AFFIRM
SYNC ASYNC
SYNC
DB_UNIQUE_NAMEDB_UNIQUE_NAME
DB_UNIQUE_NAME
standby log 无 ,推荐最好有 standby log
commit条件不同:
最大保护:Primary Database上的每个事务的Redo日志必须在本地和Standby Database上都写入日志文件后才能提交(如果不能写入STANDBY DATABASE,PRIMARY DATABASE 自动挂起,防止丢数据)
最高可用:Primary Database每个事务的Redo日志要写到本地和Standby Database中才能提交(与最大保护不同的是:写入STANDBY DATABASE失败,PRIMARY DATABASE不会挂起,会自动转成最大性能模式,等待问题解决后自动转成最大可用模式)
最大性能:Primary Database上的事务的Redo日志只要写到本地日志文件就可以提交,不必等待到Standby Database的传递完成
数据一致性不同:
最大保护:完全一致
最高可用:尽可能的避免数据的丢失,但不能绝对保证数据完全一致
最大性能:可以异步同步日志,可能有数据的丢失
默认是最大性能是模式保护模式
日志的传输模式:
arch:这是默认的传输日志的模式,主库在日志切换后,完成归档,才能通过arch进程传输给standby的RFS进程,这种传输日志的模式只能在最大性能模式使用
lgwr:使用lgwr方式即时传输日志给standby,主库产生事物后,会通过lgwr进程去写本地的redo和本地的lns进程,通过本地的lns进程传输日志给standby的lns进程,然后通过RFS进程写standby redo,MPR进程应用日志。
这种方式不需要等到归档才传输日志,减少了数据的丢失,这种日志传输方式适合三种模式,但是备库必须有standby redo log
主库查看使用哪种方式进行日志传输:
SQL> select dest_name,archiver from v$archive_dest;
DEST_NAME
ARCHIVER
-------------------- ----------
LOG_ARCHIVE_DEST_1 ARCH
LOG_ARCHIVE_DEST_2 LGWR
LOG_ARCHIVE_DEST_3 ARCH
LOG_ARCHIVE_DEST_4 ARCH
LOG_ARCHIVE_DEST_5 ARCH
LOG_ARCHIVE_DEST_6 ARCH
LOG_ARCHIVE_DEST_7 ARCH
LOG_ARCHIVE_DEST_8 ARCH
LOG_ARCHIVE_DEST_9 ARCH
LOG_ARCHIVE_DEST_10 ARCH
LOG_ARCHIVE_DEST_11 ARCH
LOG_ARCHIVE_DEST_12 ARCH
LOG_ARCHIVE_DEST_13 ARCH
LOG_ARCHIVE_DEST_14 ARCH
LOG_ARCHIVE_DEST_15 ARCH
LOG_ARCHIVE_DEST_16 ARCH
LOG_ARCHIVE_DEST_17 ARCH
LOG_ARCHIVE_DEST_18 ARCH
LOG_ARCHIVE_DEST_19 ARCH
LOG_ARCHIVE_DEST_20 ARCH
LOG_ARCHIVE_DEST_21 ARCH
LOG_ARCHIVE_DEST_22 ARCH
LOG_ARCHIVE_DEST_23 ARCH
LOG_ARCHIVE_DEST_24 ARCH
LOG_ARCHIVE_DEST_25 ARCH
LOG_ARCHIVE_DEST_26 ARCH
LOG_ARCHIVE_DEST_27 ARCH
LOG_ARCHIVE_DEST_28 ARCH
LOG_ARCHIVE_DEST_29 ARCH
LOG_ARCHIVE_DEST_30 ARCH
LOG_ARCHIVE_DEST_31 ARCH
31 rows selected.
一般而言,standby redo 日志文件组数要比primary 数据库的online redo 日志文件组数至少多一个。推荐standby redo 日志组数量基于primary 数据库的线程数(这里的线程数可以理解为rac 结构中的rac节点数)。
有一个推荐的公式可以做参考:(每线程的日志组数+1)*最大线程数
备库添加standby log:
SQL> alter database drop standby logfile '/archive/1_0_815224926.arc';
Database altered.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/redo01.log NO
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby01.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby02.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby03.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/standby04.log' size 50M;
Database altered.
SQL> select * From v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/redo01.log NO
4 STANDBY /u01/app/oracle/oradata/standby01.log NO
5 STANDBY /u01/app/oracle/oradata/standby02.log NO
6 STANDBY /u01/app/oracle/oradata/standby03.log NO
7 STANDBY /u01/app/oracle/oradata/standby04.log NO
7 rows selected.
为了防止出现什么切换过程中的问题,所以开启了闪回
SQL> alter database FLASHBACK ON;
Database altered.
SQL> select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------------
YES
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
2337163
从低到高:
最大性能----》 最大可用-----》最最大保护
需要在mount状态一步的切换,但是反过来不需要在mount下切换,open状态就可以
1、查看参数文件
*.DB_NAME=rac
*.DB_UNIQUE_NAME=rac
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(rac,orcl)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac'
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
*.LOG_ARCHIVE_MAX_PROCESSES=30
*.FAL_SERVER=rac
*.fal_client=orcl
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/','/u01/app/oracle/oradata/rac/'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/','/u01/app/oracle/oradata/rac/'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.STANDBY_ARCHIVE_DEST='/archive'
2、修改参数文件
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
参数没有问题,是lgwr async affirm或者lgwr sync affirm都可以
通过动态修改: 在主库
alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr SYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' scope=both
三种保护模式的切换:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(rac,orcl)';
在主库执行:只需要在主库执行,备库就会跟这改变
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE
PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE
MAXIMUM AVAILABILITY RESYNCHRONIZATION TO STANDBY
正常情况下 PROTECTION_LEVEL 是 MAXIMUM AVAILABILITY
出了点问题 , RESYNCHRONIZATION ,需要重新同步
SQL> select thread#, sequence#, status from v$log;
THREAD# SEQUENCE# STATUS
---------- ---------- ----------------
1 412 INACTIVE
1 413 ACTIVE
1 414 CURRENT
在备库执行:
SQL> select thread#, max(sequence#) from v$archived_log where applied='YES' group by thread#;
THREAD# MAX(SEQUENCE#)
---------- --------------
1 410
SQL> alter database recover managed standby database disconnect from session;
Database altered.
最后发现参数文件让我给修改错误了,DB_UNIQUE_NAME是备库的名称
alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcl lgwr SYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' scope=both
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY TO STANDBY
查看备库:
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
MOUNTED MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY NOT ALLOWED
主库查看产生的最大归档号:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
422
备库查看产生的归档:
SQL> select sequence#,thread#,resetlogs_id from v$archived_log;
SEQUENCE# THREAD# RESETLOGS_ID
---------- ---------- ------------
403 1815224926
404 1815224926
405 1815224926
406 1815224926
407 1815224926
408 1815224926
409 1815224926
410 1815224926
411 1815224926
412 1815224926
413 1815224926
414 1815224926
415 1815224926
416 1815224926
417 1815224926
418 1815224926
419 1815224926
420 1815224926
421 1815224926
422 1815224926
20 rows selected.
SQL>
从高到低:
最大性能-《--- 最大可用《-----最最大保护
直接在主库进行切换,不用修改参数文件
在主库执行:
SQL> alter database set standby database to maximize availability;
Database altered.
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY TO STANDBY
SQL> alter database set standby database to maximize performance;
Database altered.
SQL> select open_mode, protection_mode,protection_level ,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
-------------------- -------------------- -------------------- --------------------
READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO STANDBY
相关文章推荐
- Oracle 11G DataGuard的三种保护模式介绍
- Oracle 11G DataGuard的三种保护模式介绍
- ORACLE 11G dataguard安装配置手册--单实例物理standby 三种保护模式互相切换
- 聊聊Dataguard的三种保护模式实验
- DataGuard 三种保护模式
- DATAGUARD 三种保护模式
- 探索Oracle11gR2 之 DataGuard_03 三种保护模式
- Dataguard的三种保护模式实验
- 探索Oracle11gR2 之 DataGuard_03 三种保护模式
- Dataguard三种保护模式
- 探索Oracle11gR2 之 DataGuard 三种保护模式
- Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置
- Data Guard 配置数据三种保护模式
- oracle 10g dataguard修改保护模式遭遇ORA-03113
- Oracle Study之--DataGuard 最大保护模式故障(ORA-16198)
- DataGuard保护模式介绍及切换示例
- [Oracle] Data Guard 之 三种保护模式介绍
- 对Dataguard的三种模式的理解
- dataguard的保护模式转化和主从切换
- [Oracle] Data Guard 系列(1) - 三种保护模式