今天突然接到BOSS电话,问一年前做性能测试时如何对Arcgis server和SDE中oracle做的调整,于是翻了以前的文档,看到了Arcgis server中主要是调整JVM和空闲线程数,而SDE调整的参数就比较多,但是记得当时管用的就是cursor数。
以下是oracle可调整的参数:
1.1. Open_cursors
初始化参数Open_cursors规定了一个会话(session)在任何时候可以打开的游标数量。默认是300。
ArcSDE会将频繁执行打开操作的游标保存在缓存中以提高性能。如果Open_cursors设置得不够高可能会引发-1000 oracle错误。Oracle官方文档已说明此值设置较大时没有负面影响。
如果想预先计算一个会话(session)可能需要的游标数,可以参照以下的公式,结合在应用中的具体的数据情况,可以作为一个指导:
Ø 各种ArcSDE数据管理的游标数20个+
Ø 各种匿名的PL/SQL块20个+
Ø 空间查询-约每层(layer)6个+
Ø Log文件查询11个+
Ø 当编辑多版本表格时各种查询所用的-每个多版本的表或图层12个
因此一个ArcMap应用程序打开有10层数据的地图文档编辑时,所需游标数为231个,20+20+60+11+120=231。
如果服务器没有足够的内存供oracle服务进程使用时,必须将此参数值调低。
(在arcgisserver + arcsde的架构中,经过项目检验,调整此值有效,将提高30%左右的数据库利用率。)1.1. Session_cached_cursors
Oracle会监控每个session提交的SQL语句,如果检测到相同的语句被多次提交,即将该语句打开的cursor移到cursor cache中,同时保持打开状态,便于接着重用。Session_cached_cursors的值控制了cursor cache中可以存放的cursor数目。
这个参数的默认值根据oracle的版本而不同,实例中该参数所配置的值至少应该为50,如果没有应该增加到50。
1.2. Undo_management andundo_tablespace
由于服务中暂未涉及编辑,此处不予考虑。
1.3. Sessions
ArcSDE依操作系统默认允许48或64个并发连接,如果配置了sde.server_config数据字典表,将并发连接数据调整为较大值,同时需要修改oracle的sessions参数以同步支持新的设置。
sessions参数直接控制了oracle允许的并发总数。如果默认值不足以支持SDE所需的连接数,应该将此值增加到期望值外加上期望值的最少10%,以备oracle内部函数使用。
1.4. Prosesses
通过Prosesses可以限制oracle可以创建的最大进程数。当使用独占服务进程模式配置时,进程数据会与数据库所支持的最大并发sessions大体一致。如果增加了ArcSDE允许的连接数,必须确保Prosesses参数的值不少于ArcSDE允许的连接数再加上25,这25个主要是oracle一系列后台进程所需要的。