ArcCatalog连接ArcSDE提示:ORA-21561 生成OID失败 No extended error

今天接到用户邮件咨询,他的ArcCatalog连接ArcSDE服务,提示ORA-21561 生成OID失败 No extended error,这个错误看起来没有什么参考性。然后又给用户电话沟通,用户说他进行了并发测试后,再连接数据库就出现这个问题。


刚好一个同事也碰到过这个问题,就给大家共享一下。


其实我们在以前的ArcSDE连接数已经说明过了,只是经验不足,也没有碰到过,或许只有并发测试可能碰到。

http://blog.csdn.net/linghe301/article/details/6652722


我们上面提到的连接数,其实包括ArcSDE连接数、操作系统连接、数据库连接,那么我们以前遇到的大多是ArcSDE连接数超出,那么就会报

“Failedto connect to database. Maximum number of conections to instance exceeded”。

但是如果是操作系统连接数不够了比如Windows,可能就会报:
ORA-21561 生成OID失败 No extended error

解决方法:

Windows连接数

       在 Windows 中,ArcSDE 服务以非交互桌面形式启动。名为 SharedSection 的 Windows 初始化参数用于设定分配给非交互桌面的堆内存上限值。

       无论是交互桌面还是非交互桌面,所有桌面的可用堆内存上限值均为 48 MB。由于内存量有限,因此,应注意调节 SharedSection 参数。若 ArcSDE 服务以域帐户启动,则 gsrvr.exe 会从桌面分配一个大小为 512 KB 的非交互桌面堆,专门用于 ArcSDE 服务。若 ArcSDE 服务以 LocalSystem 帐户启动,则 gsrvr.exe 会从共享桌面分配一个大小为 512 KB 的非交互桌面堆,专门用于以 LocalSystem 运行的所有服务。若 ArcSDE 服务以 LocalSystem 帐户启动(使用“允许”服务与已启用桌面交互),则gsrvr.exe 会从默认桌面分配一个大小为 3 MB 的交互桌面堆。解决方案解决方案取决于 ArcSDE 平台。目前无法确定单个桌面使用的内存量,也无法确定全局池中剩余的内存量。

         更改注册表中的 SharedSection 参数。

          估计所需 gsrvr 的数量。对于类似 ArcView、ArcEditor 和 ArcExplorer 等客户端,一个 gsrvr 通常表示一个 ArcSDE 连接。而对于 ArcIMS 来说,gsrvr 的数量取决于服务类型。假设每个空间服务器 CPU 有两个虚拟服务器线程,以下为通用公式:

[csharp]  view plain copy print ?
  1. (2 image service threads * total CPUs) + (numberof query server threads)  

         例如:(2 * 8) + 8 = 24 个 gsrvr,此建议还假定使用了图像和查询服务,而且,所有的 AXL 以相同用户和数据库连接到 ArcSDE 服务器。若您的 AXL 中引用了不同的数据库或用户,则公式如下:

[csharp]  view plain copy print ?
  1. (#databases * #mapservice threads)+(#dbs*#queryservices)  

         若 gsrvr 的数量超过 64 个 -ArcSDE SERVER_CONFIG 表中的默认 CONNECTIONS 设置 - 需考虑是将其中的某些连接改为直接连接,还是增大注册表中的第三个SharedSection 参数。由于直接连接以客户进程中的线程运行,因此,不会在 ArcSDE 服务器上为其分配桌面。

        警告:继续操作之前,建议备份您的操作系统及文件,包括注册表。

[csharp]  view plain copy print ?
  1. \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems  

       该字符串中包含 Windows 的启动参数。该字符串中包含 SharedSection 参数。其默认值为 1024,3072,512。其中,第三个参数是分配给非交互桌面的堆内存上限值。默认情况下,其设定值为 512 KB 或 1 MB。如果使用此设置,一个 ArcSDE 服务大约可接受 56 个连接。如果将非交互桌面的最大堆大小增至 2 MB,则 ArcSDE 服务最多可接受 270 个连接。如果将非交互堆大小设置为 2 MB(2048KB),则 SharedSection 值为 1024,3072,2048。

       注意该值不要修改的过大,否则会出现错误。

        一旦 SharedSection 被更改,则必须重新启动服务器。

      

[csharp]  view plain copy print ?
  1. Windows XP:SharedSection=1024,3076,512  
  2. Windows7:SharedSection=1024,20480,768 


 -------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
QQ群:              78773981
Blog:               http://blog.csdn.net/linghe301
Weibo:            http://www.weibo.com/linghe301

-------------------------------------------------------------------------------------------------------

你可能感兴趣的:(windows,数据库,server,服务器,测试,System)