出处:http://www.cnblogs.com/papapa/articles/760863.html
环境:Server:windows2003+Oracle9i+ArcSDE9 Client:windows+ArcEngine9
问题:在运行过程中(多客户端)出现突然白屏或者网络错误,强制关闭客户端后在服务器端的oracle中的会话和锁(gsrvr.exe)无法释放,累积到一定数量则所有客户端无法连接。
状态:尚未解决
解决过程:这三种现象可能并不是同一个问题,但此次解决主要集中在SDE的稳定性和服务器会话、锁无法释放问题。
注:优化SDE主要还是在优化Oracle配置。
1、将SDE中的TCP/IP Keepalive on Connections设置为ON
命令:sdemon -o info -I config (查看当前设置状态)
sdeconfig -o alter -v TCPKEEPALIVE=ON -u SDE (更改设置)
解释:此设置将会检测客户端是否已经被关闭,如果是则断开连接。
疑问:此设置的说明中:两个小时左右进行检测状态,可否设置更短的时间。(可以,修改注册表: /HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/TCPIP/Parameters/KeepAliveTime,参见http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=25129)
结果:没有解决以上提出的锁定问题和客户端网络不稳定情况。
2、修改注册表信息:
修改:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/SubSystems/Windows 项目中的SharedSection,将原SharedSection=1024,3072,512种的第三项改为SharedSection=1024,3072,1024。
解释:参见资料http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=23953,没看明白。
疑问:资料中说明此修改只支持SQLSERVER,不知道对ORACLE是否支持。
结果:没有解决以上提出的锁定问题和客户端网络不稳定情况。
3、重新通过培植SDE
命令:通过ArcSDE For Oracle9i Installatio重新配置SDE服务。
解释:在网上看到一个人说重新配置一两次就可以解决gsrvr报错的情况。
结果:没有解决以上提出的锁定问题和客户端网络不稳定情况。
4、扩大临时表空间和屏蔽缓存读取
修改:将SDE用户使用的临时表空间改大一些。
修改dbinit.sde,在最后添加set DISABLE_SPATIAL_CACHE=TRUE行(在C:/arcgis/ArcSDE/ora9iexe/etc目录下),重新启动SDE服务。
解释:在SDE的日志sde_esri_sde.log中有以下错误:db_array_fetch_spix_recs OCI Fetch Error (24852),查资料说打补丁ArcSDE-Oracle9i-91sp1.msp后设置以上参数,但补丁无法安装,所以试一下以上设置是否可行
结果:修改缓存设置反而使死机情况增多。
5、打补丁,优化程序,减少IO访问。
补丁:ArcSDE-Oracle9i-90sp3.msp,sde90-orapatch-ora9i-win.exe (下载地址:http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.listPatches&PID=19 ),注意在安装补丁之前最好先停止SDE服务,以免重新启动计算机。
结果:没有解决以上提出的锁定问题和客户端网络不稳定情况。
6、打Oracle补丁,p4163445_92070_WINNT.zip
解释:目前使用Oracle为9.2.0.1.0版本,咨询ESRI得到9.2.0.3.0以上版本是经过测试的稳定版本。
补丁:p4163445_92070_WINNT.zip(http://www.sjdd.com.cn/download/software/oracle/oracle9i/)
结果:O了,技术问题累死人呀,怎么才能做个快乐的程序员呢