介绍日志传输服务
日志传输服务控制着redo数据自动从数据库传输到一个或多个目的地。日志传输服务也管理着由于网络导致的归档redo日志的任何断层(gap).可以传输redo数据到本地和远程目的地,远程目的地可以包含下面的任意类型:物理和逻辑备库,归档日志存放处。下面的额图是一个简单的日志传输服务归档redo数据到主库本地,同时传输它到远程归档redo日志文件或standby redo日志文件目的地
数据要传输到哪里
有几个支持的目的地类型
1dg备库
2归档日志存放地,这种类型的存放地允许异地归档redo数据。
3Oracle Streams real-time downstream capture database
4Oracle Change Data Capture staging database
使用log_archive_dest_n参数配置目的地
n是1到10的,使用location或service属性来指定归档redo数据到哪里。对每个log_archive_dest_n初始化参数,指定相应的log_archive_dest_state_n参数,该参数指明了相应的目的地是否可用该参数有下面几个值
修改目的地的属性
修改在主库上的下一次的日志切换时生效,下面是修改的一个例子
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=boston VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;
设置闪回恢复区
如果你设置了一个闪回恢复区而且没有设置任何的本地归档目录,那么log_archive_dest_10暗地里就设置成了use_db_recovery_file_dest,也就是归档的日志文件将会被送到闪回恢复区。在闪回恢复区中的redo日志文件名会用omf自动生成,不会基于log_archive_format初始化参数来生成。
使用standby_archive_dest目的地
在物理备库上,你可以定义standby_archive_dest参数来指定闪回恢复区,例如:
STANDBY_ARCHIVE_DEST='LOCATION=USE_DB_RECOVERY_FILE_DEST'
该参数在逻辑备库上被忽略
怎么发送redo数据
在主库上,dg使用归档进程或是lgwr进程来说收集事务redo数据,传输到备库上,尽管不能用归档进程和lgwr进程 写redo数据到同一个目的地,你可以指定lgwr写到一些目的地,同时归档进程发送redo数据到别的目的地。
使用归档进程来归档redo数据
默认的,在主库上日志传输服务使用归档进程来归档在线redo日志,归档进程只支持最大性能数据保护模式,别的数据保护级别你必须使用lgwr来传送数据。
控制归档进程行为的初始化参数
log_archive_max_processes初始化参数指定了arcn进程的最大个数,默认有4个归档进程被调用当主库启动的时候,oracle动态调整进程的数量来平衡归档负载,因此这个参数在不同时间可能会不同。如果归档的压力大,可以调整最大值到30.
arcn归档进程
归档发生在主库上的日志切换的时候:
在主库上,当arc0进程成功的把在线重做日志归档到本地目的地后,arc1进程在本地的归档日志中传输到远程的备库上。
在远程目的地,remote file server进程写redo日志到归档的redo日志文件中。然后 redo apply或sql apply应用到备库上。
使用lgwr来归档redo数据
使用lgwr进程与使用arc进程不同,因为lgwr不是等待主库上的在线日志切换,然后一次写整个归档redo日志到远程目的地,lgwr进程在备库选择一个standby redo文件,这个文件能反映主库的当前在线日志文件的序列号。然后,当主库上生成redo的时候,它也传输到远程的地址上,传输到远程目的地既可以是同步的,也可以使异步的,基于是否使用了sync或async参数。对于最大保护模式或是最高性能模式,需要配置同步lgwr。
The SYNC
attribute performs all network I/O synchronously, in conjunction with each write operation to the online redo log file, and waits for the network I/O to complete. Section 5.3.2.2 shows an example of synchronous network transmission in a Data Guard configuration. This is the default network transmission setting.
The ASYNC
attribute performs all network I/O asynchronously and control is returned to the executing application or user immediately, without waiting for the network I/O to complete. Section 5.3.2.3 shows an example of asynchronous network transmission in a Data Guard configuration.
如果你配置了lgwr进程,但是因为一些原因lgwr进程变得不可用,那么redo传输会转换使用arc进程来完成归档操作。net_timeout属性建议配置,因为他控制着lgw在中断网络r等待网络状态的时间。如果在net_timeout秒之内没有响应,那么lgwr返回一个错误信息。
在主库上,lgwr进程提交redo数据给一个或多个网络服务进程(lnsn),这个进程并行初始化网络io到多个远程目的地,对于lgwr sync目的地,事务在redo数据写到目的地之前是不会提交的。
在备库上,remote file server接受redo数据,写这些数据到redo日志文件中。
在主库上的日志切换触发备库上的一次日志切换,导致arcn进程在备库山归档备库的standby redo日志到归档日志文件。然后redo apply或是sql apply应用redo数据,如果实时应用被启用,dg在当前的standby redo文件中直接应用redo。
三种模式的最低要求
管理日志文件
当redo数据在主库传输过来,redo数据被写到log_archive_dest_n参数指定的目录下的归档的redo日志文件中,你也可以再备库上通过standby_archive_dest初始化参数来指定可选的目录,来存放从主库接受过来的日志文件来归档。如果这2个参数都被指定了,那么standby_archive_dest初始化参数会覆盖log_archive_dest_n参数。
当数据库启动后,按下面的规则来找归档日志文件的目录:
- If the
STANDBY_ARCHIVE_DEST
initialization parameter is specified on the standby database, that location is used. -
If the
LOG_ARCHIVE_DEST_
n
parameter contains theVALID_FOR=(STANDBY_LOGFILE,*)
attribute, then the location specified for this destination is used. -
If the
COMPATIBLE
parameter is set to 10.0 or greater and none of theLOG_ARCHIVE_DEST_
n
parameters contain theVALID_FOR=(STANDBY_LOGFILE,*)
attribute, then an arbitraryLOG_ARCHIVE_DEST_
n
parameter that is valid for the destination is used. -
If none of the initialization parameters have been specified, then archived redo log files are stored in the default location for the
STANDBY_ARCHIVE_DEST
initialization parameter.To see the implicit default value of the
STANDBY_ARCHIVE_DEST
initialization parameter, query theV$ARCHIVE_DEST
view:SQL> SELECT DEST_NAME, DESTINATION FROM V$ARCHIVE_DEST 2> WHERE DEST_NAME='STANDBY_ARCHIVE_DEST';
管理备库的redo日志文件
向以存在的日志组中添加standby redo log 成员
ALTER DATABASE ADD STANDBY LOGFILE MEMBER '/disk1/oracle/dbs/log2b.rdo' TO GROUP 2;
当归档日志文件生成及rman备份生成,oracle向控制文件的重用部分添加新的记录,如果没有记录可以复用(因为所有的记录仍然在control_file_record_keep_time的时间内),那么控制文件会扩展,新的记录会添加进来。控制文件的最大大小事20000个数据块,如果db_block_size是8192,那么控制文件最大的大小事156MB。control_file_record_keep_time默认是7天,要设置这个参数比在磁盘上的最老的备份时间长。