11G real time query
测试环境:
redhat linux as 4.7(64bit)
11.1.0.7.0 lgwr + async 20480 + real time query
主库:10组512M的联机日志
备库:11组512M的standby logfile
测试方法:
循环插入记录,为了增大日志量,起了6个进程,插入test1-test6
以下是代码片段: declare v_counter pls_integer := 0; begin for i in 1..100000000 loop insert into $1 (id,mdate,mm) values(i,sysdate,’wo shi ni ba’); v_counter := v_counter + 1; if v_counter = 10 then commit; v_counter := 0; end if; end loop; end; / |
以表test1为参考,每隔1秒查询主库和备库的最大ID,还有插入的时间,如果是完全实时,这两个数值应该相等,
通过两边的max(id)和maxid对应的时间,可以看出real time query的延迟,采样结果保存于rquery_time表
测试的日志量大家可以自己加压设置,本次测试日志量是37M/S,让我有点吃惊,但多次statspack统计的结果和日志切换的频率计算,就是如此
以下是引用片段: Load Profile Per Second Per Transaction Per Exec Per Call declare v_max_stb pls_integer := 0; -获取主库最大ID,最大时间 -查询结果 |
两边相差大概5000笔记录,时间延迟在1秒不到的样子,对于37M/S的日志量来说,这个实时性是相当高了
当然备库是否应用跟得上主库,还要看IO的类型和存储的能力,网络传输量,具体环境具体测试
不过使用lgwr+standby logfile传输日志,对于数据的保护理论上只会丢一个async buffer的日志,但实际测试起来,结果会大跌眼镜,特别是standby机器性能不是很好的情况下很容易发生丢几组日志
我们在32位的AS 4.4上测试出了这个情况,并且可以多次重现备库跟不上主库的节奏,当前standby logfile 541中的日志还没有全部应用到数据文件,主库已经切换了多次日志
这些日志会以archive log的方式传到备库(如果备库的standby logfile足够的话,会直接使用standby logfile),如果此时主库突然crash,备库的情况就是
541 standby logfile
542 archive log
543 archive log
理论上可以recover standby database until cancel;然后依次指定上面的文件,但在应用541 standby logfile时,会遇到非常扯淡的错误(经过旺旺同学解释,数据库是最大性能模式,主库不能保证日志的完全写入,所以是corrupt):
以下是引用片段: SQL> recover standby database until cancel; ORA-00279: change 25661117 generated at 07/02/2009 23:38:00 needed for thread 1 ORA-00289: suggestion : /data/oradata/arch/ctrdmsb/ctrdm_1_541_690507562.arc ORA-00280: change 25661117 for thread 1 is in sequence #541 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} |
主库意外终止后,oracle会认为当前standby logfile是不可用的,这样会导致后面的两个归档根本没法应用,损失是非常大的
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:八神 来源: Alibaba DBA Team
- 标签: realTimeQuery
- 发布时间:2009-10-10 18:19:36
- [69] Twitter/微博客的学习摘要
- [64] find命令的一点注意事项
- [64] 如何拿下简短的域名
- [64] IOS安全–浅谈关于IOS加固的几种方法
- [63] android 开发入门
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [59] Oracle MTS模式下 进程地址与会话信
- [58] 读书笔记-壹百度:百度十年千倍的29条法则
- [58] 图书馆的世界纪录