环境1:Server:windows2003+Oracle9i(9.0.2)+ArcSDE9.2(Oracle补丁)
Client:windows+ArcEngine9.2
环境2:Server:windows2003+Oracle10i(10.0.2)+ArcSDE9.3(OracleSP1补丁)
Client:windows+ArcEngine9.3 ; ArcGIS Server for .NET/JAVA
问题1:在运行过程中(多客户端)出现突然白屏或者网络错误,强制关闭客户端后在服务器端的oracle中的会话和锁(gsrvr.exe)无法释放,累积到一定数量则所有客户端无法连接。
问题2:大数据量图层(400多万数据量)入SDE库后,ArcMap图层操作报数据源读取错误,ArcGIS Server 进行图层查询操作后,导致地图白屏,地图缓存只到第8级便失败,在SDE的日志sde_esri_sde.log中都有相同错误:
[Tue Jun 29 20:12:28 2010] [1577] [ts-chengguanju] db_array_fetch_spix_recs OCI Fetch Error (3114)
[Tue Jun 29 20:12:28 2010] [1577] [ts-chengguanju] load_buffer error -409 on SZXDLG500RESPOLY, rowid -1
[Tue Jun 29 20:12:28 2010] [1577] [ts-chengguanju] db_array_fetch_spix_recs OCI Fetch Error (3114)
[Tue Jun 29 20:12:28 2010] [1577] [ts-chengguanju] load_buffer error -409 on SZXDLG500TRAPOLY, rowid -1
[Tue Jun 29 20:12:28 2010] [1577] [ts-chengguanju] db_array_fetch_spix_recs OCI Fetch Error (3114)
[Tue Jun 29 20:12:28 2010] [1577] [ts-chengguanju] load_buffer error -409 on SZXDLG500VEGPOLY, rowid -1
查询相关资料后解决 http://www.3snews.net/html/16/22116-21915.html
现将资料转引如下:
————引用:
解决过程:这三种现象可能并不是同一个问题,但此次解决主要集中在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了,技术问题累死人呀,怎么才能做个快乐的程序员呢
————————————引用结束
有同学在ESRI,然后通过他咨询了下,得知SDE各版本对应的ORALCE都有对应的最稳定版本,如SDE9.2,如果使用Oracle9.2.0.1版本则需要打oracle9.2.0.3版本补丁,SDE9.3如果使用Oracle10.2.0.1则需打10.2.0.3补丁,或者使用更高版本的Oracle。由此想到之前有项目采用的SQL Server 2005的数据库,可能也会有相类似的问题,但是因为其他原因而打过补丁,所以并未发现这个问题(^^)
介绍下Oralce升级的步骤(Oracle10.2.0.1-->Oracle10.2.0.3)
1)下载升级包,一定要下载的正确的升级包,之前就是因为错误的升级包几次没成功,浪费了很多时间。p5337014_10203_WINNT.zip是经过我验证的。
2)重新安装Oracle10.2.0.1,确保安装前已经卸载干净原来的Oracle,所有的Oracle服务已经删除干净,如何干净的卸载Oracle在网上有介绍,在安装时不安装数据库。
3)安装升级包p5337014_10203_WINNT.zip,选择路径是要选择Oracle10.2.0.1的 db1 的路径 。
4)使用Oracle的工具建立数据库
5)使用Oracle的工具建立监听