苹果后端的Oracle数据库
最近在微博上,网友发布了一份来自于苹果公司的Oracle数据库AWR报告,虽然我们早就知道Apple的APP Store后端使用的就是Oracle数据库,部署在Exadata一体机上,但是完整的AWR报告通常还是很难见到(这份报告可能包含了客户敏感信息,我仅作一点非常简要的分析)。
从报告上看,数据库环境基本如下:
数据库版本11.2.0.2 (当然这是几年前的数据);
5个节点的RAC环境;
数据库名称为INDIGO,以此为名称的表空间,最大文件序号为1139 - datafile/indigo.1139.788591137 ,单表空间存在大量文件(可见文件667个);
当然这个报告是夜间的,不具有典型的业务代表性;
最近正好有朋友咨询关于Oracle数据库的隐含参数设定,我们可以借此报告来了解一下苹果的参数设置。
如图中截取部分参数,可以看到,苹果有如下一些参数设置。
cursor_sharing = force,强制的变量绑定,这说明苹果也曾经面临绑定变量的问题;
_file_size_increase_increment = 2143289344,设置文件扩展大小,这是Exadata优化的推荐设置之一;
_optim_peek_user_binds = FALSE,绑定变量Peeking,禁用;
_kill_diagnostics_timeout = 140,超时设置,140秒,这是11g的诊断参数,在指定超时之后,杀掉队列阻塞进程;
_lm_rcvr_hang_allow_time = 140,也是140秒,同样是11g的Hang诊断参数,设置该参数改变节点Hang的驱逐时间;
_buffer_busy_wait_timeout = 2 ,buffer busy wait的超时时间,单位是厘秒;
deferred_segment_creation = FALSE,禁用11g的延迟段创建特性;
此外,如下一个系列的参数是Exadata的推荐设定,在这个环境中也多有设置:
alter system set "_enable_NUMA_support"=FALSE scope=spfile;
alter system set "_file_size_increase_increment"=2044M scope=spfile;
alter system set compatible=11.2.0.3.0 scope=spfile;
alter system set db_lost_write_protect=TYPICAL scope=spfile;
alter system set filesystemio_options=setall scope=spfile;
alter system set global_names=TRUE scope=spfile;
alter system set open_cursors=1000 scope=spfile;
alter system set parallel_adaptive_multi_user=FALSE scope=spfile;
alter system set processes=10000 scope=spfile;
alter system set sql92_security=TRUE scope=spfile;
alter system set dispatchers = '' scope=spfile;
alter system set pga_aggregate_target=0 scope=spfile;
alter system set shared_servers=0 scope=spfile;
Oracle的参数设置有大学问,值得参考学习。
以下附件是苹果Apple Store后台的DataGuard架构体系(来自网络),供参考。
另外,我们最近在编撰一本和AWR分析相关的书籍,大家有报告问题和建议欢迎提供,也可以加我的个人微信帐号:eyglee 讨论。