Phy standby工作模式
Redo apply
物理standby通过应用归档文件或者直接从standby系统通过oracle恢复机制应用redo 文件。恢复操作是block对block的操作,如果当前正在应用redo,则数据库不能被open
Read-only
以read-only模式打开后,你可以直接从standby库中执行查询,或者备份操作。此时standby数据库仍然可以接受redo数据,只不过不被应用,知道数据库恢复redo apply。可以根据需要,在这两种模式之间互相切换。
Read-write
如果以read-write模式打开,则standby暂停从primary接受redo数据,而且暂时失去灾难保护功能。切回redo apply时数据库闪回到操作前的状态,闪回之后,standby会自动同步primary数据库。
Phy standby特点
灾难恢复及高可用性
物理standby提供了一个健全而且极高效的灾难恢复及高可用性的解决方案。更加易于管理的switchover/failover角色转换及最更短的计划内或计划外停机时间。
数据保护
应用物理standby数据库,Dg能够确保即使面对无法预料的灾害也能够不丢失数据。前面也提到物理standby是基于块对块的复制,因此对象、语句统统无关,primary数据库上有什么,物理standby也会有什么。
分担primary数据库压力
通过将一些备份任务、仅查询的需求转移到物理standby,可以有效节省primary数据库的cpu以及i/o资源。
提升性能
物理standby所使用的redo应用技术使用最底层的恢复机制,这种机制能够绕过sql级代码层,因此效率最高。
下面看看如何设置phy standby的工作模式吧,以read apply和read only为例。
1)启动redo apply
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 2019928 bytes
Variable Size 113249704 bytes
Database Buffers 130023424 bytes
Redo Buffers 6365184 bytes
SQL> alter database mount standby database;
Database altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /usr/local/ora10/flash_recovery_area/
Oldest online log sequence 88
Next log sequence to archive 0
Current log sequence 90
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select name,database_role from v$database;
NAME DATABASE_ROLE
--------- ----------------
ORCL PHYSICAL STANDBY
SQL>
2)启动read-only
Standby库原先工作在redo apply模式下
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open;
Database altered.
SQL>
alter database open会直接打开到read only 模式
如果要再切换会redo apply模式,直接执行
alter database recover managed standby database disconnect from session即可。
Phy standby数据库事件管理
初始化参数STANDBY_FILE_MANAGEMENT可以控制是否自动将primary数据库增加删除表空间、数据文件的改动继承到standby。
如果该参数值设置为auto,则自动创建。
如果设置为manual,则需要手工复制新创建的数据文件到standby服务器。
下面在auto下模拟增删表空间,数据文件
1)查看standby_file_management
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL>
2)在pirmary增加表空间
SQL> create tablespace test datafile '/usr/local/ora10/oradata/orcl/test.dbf' size 10M;
Tablespace created.
SQL>
SQL> alter system switch logfile;
System altered.
SQL>
3) 在standby查看表空间
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
7 DAT YES NO YES
8 TEST YES NO YES
7 rows selected.
SQL>
Test表空间创建了。