在线日志和归档日志对于同步的影响
1、什么是在线日志(redo log)
在线日志即数据库目前正在使用的日志组,它属于一组日志文件,不同的数据库对日志组的设置功能有所不同
有的是几个日志文件,有的每组日志有可以设置为几个日志成员,作为冗余差错处理的依据
2、什么是归档日志(archive log)
归档是和在线相对的,归档即当在线日志即将被重复写入的时候数据库将日志进行一次复制,将在线日志复制到归档目录
之后对原在线日志进行覆盖写,当然checkpoint也会在此刻生成,以保证归档日志在今后进行分析时不存在不确定数据
3、什么是SCN号(system change number)
SCN即系统跟踪号,它是明确标识数据库每一个操作的流水号,由时间戳转换得来,无论是DML,还是checkpoint,还是其他管理操作,
数据库都会生成一个唯一的序号,系统会根据这个序号来保证日志文件、数据文件、控制文件的一致性,会根据每种文件中的SCN
号来判断,是否需要回滚,是否需要写入数据文件。每次checkpoint系统都会将上次SCN和下次SCN之间的日志数据写入DISK
之后将SCN+1更新为下一个SCN,这样通过对比数据文件的SCN和日志文件的SCN我们就能够判断数据是否被正常写入DISK了
4、在归档日志中SCN号如何衔接
SCN号在系统中会一直增加,当数据库处于非归档模式下,系统写日志时并不会判断该日志文件是否需要归档就可以重新写入;
但是当数据库处于归档模式,并且下一个归档日志SCN号比目前的SCN号小的时候,日志系统会将该在线日志复制到归档目录下,
之后再进行在线日志的覆盖写入。
所以如果我们需要获得的SCN号已经不在在线日志中了,就需要我们到归档日志中去查找,因为日志中都有记录本日志最小的SCN号
和最大的SCN号,所以通过浏览日志头,我们就可以确定该日志文件是否是我们需要的还是继续NEXT归档日志文件
5、数据库同步该如何处理归档日志和在线日志
对于同步我们一方面要读在线日志,同时对于数据已经被切换到归档日志的情况也要进行归档日志SCN号判断,目的是找到每个
SCN对应的事务,并一一进行分析,不能让任何需要同步的语句漏掉;对于一些中小企业,他们的日志量不大,一般几天才能产生
一个归档文件,同步程序是没有影响的;对于金融、证券等行业客户,由于每天的日志量很大,通常日志每天要产生很多归档日志
在线日志每天要被覆盖几次,那么在获取在线日志的同时就要考虑SCN号的连续性,一定要保证在线日志读不到的日志要去归档日
志中读取,因为数据库一定会产生连续的SCN号的,这个就是我们同步操作监守的原则
6、加大在线日志文件大小的影响
在线日志增大会导致产生归档日志文件减少,但是太大的文件对于数据库系统来说是个比较大的负担,同时不方便查找,所以定义
合适的在线日志大小很重要,通常要考虑几种情况
如果每天产生日志量为A
如果每天最大的交易产生日志量B
共3个日志组,每个日志组文件大小为C
那么C的大小设计为如下时将满足日志不会轻易被归档,也不会因为设置的太大,系统维护困难。
B/2<C<(2A+B)/6)
这样设计的话,基本上日志切换不会太快,同时日志大小又能控制在合理范围。
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐