SRL Introduce
从">ORACLE9i开始,出现了Standby Redo Logs(SRL),9.1开始只有">physical standby支持SRL.从">10g开始,Physical和Logical standby均支持SRL.
SRL用来接受从primary传输过来的">redo data信息。SRL的最大的益处是每一条写进">primary Online Redo Logs(ORL)的条目将会被同时传输到standby端的">SRL.减小了standby端数据丢失的可能。
从">oracle10g开始,SRL可用来启动Real-Time Apply.在Real-Time Apply的环境中,redo应用从">primary接受的并存储在SRL的redo信息。如果没有">SRL,则redo应用archivelog,也就不能成为">Real-Time Apply了。
创建SRL
在">primary创建SRL,执行备份恢复时也会在">standby创建响应的SRL,Oracle建议同时在">Primary和Standby创建SRL.如果只在">standby创建SRL,则需启动standby database到mount阶段。
例如">:
SQL> alter database add standby logfile group 4 '+DATA' size 50M.
需要注意的是,在">controlfile里定义的数据库当前最大可以创建的redo log组。可以通过"> backup controlfile to trace查看。
SQL> alter database backup controlfile to trace;
如:
MAXLOGFILES 8
MAXLOGMEMBERS 3
SRL限制
在">oracle9i/10g的DG环境中,RFS进程接受从">primary传输过来的redo数据并写入磁盘">(Standby Redo Logs/Archived Redo Logs).如果考虑使用">SRL,则其大小必须和Online Redo Logs保持一致。如果">Online Redo Logs的大小不一致,则必须创建相应大小的Standby Redo Logs,如果SRL和ORL的大小不一致,">RFS进程将不会依附SRL.
ORACLE建议每个线程SRL的数量比">ORL多一组。
SRL中填充的信息和primary端的">ORL一致。在10.2之前,必须在LOG_ARCHIVE_DEST_n参数配置">LGWR传输模式,才能由LGWR进程提供redo信息到">Standby的RFS进程。从10.2开始,">ARCH进程也可能写redo信息到SRL.
SRL和Archive Log的区别
如果没有">SRL,则RFS进程将会创建一个Archive Redo Log.在Physical standby中,由MRP(Managed Recovery Process)进程应用已归档的日志到standby database中。
如果有">SRL,则RFS进程将从primary接收到的">redo信息写入到SRL中,当primary发生">Log Switch,Standby端的归档进程将会归档SRL到">Archived Redo Log,然后由MRP进程应用这些归档到">standby database中。在Failover场景,仍然可以访问">SRL中的信息,减小数据丢失。
从">Oracle 10g开始,Oracle增加">Real-Time Apply的选项。Real-Time Apply会直接应用">SRL中从primary接收到的redo data.Real-Time Apply不能应用没有完全归档的Archivelog.因此,在">Real-Time Apply的环境中,SRL是必须的。
注:">12c中,MRP默认采用Real-Time Apply模式。