• ArcGIS10.x Engine直连提示连接超时ORA-12170 来自:http://www.iarcgis.com/?p=1004


    导语

    随着Esri大力宣传直连,用户也越来越由服务连接,改为直连,当然ArcGIS Engine开发用户也不例外。

    环境

    Oracle数据库,ArcGIS版本不限,不过由于9版本多以服务连接,以10版本之后作为测试对象

    问题描述

    由于现在都用直连了,而且直连需要安装数据库客户端,Oracle客户端可能对某些用户也比较难以把握,一般就是用比较方便的Instant Client ,这个客户端直接解压缩,配置环境变量即可。

    但是用户的环境比较特殊,默认的1521数据库端口是不暴漏给客户端用户的,DBA给客户端用户另外开辟了一个非1521端口,而且现在如果使用IntantClient都默认使用EZConnect方式,
    也就是IP:端口号/服务名,如果你的端口号默认1521,这个写法也可以把端口号省略掉,IP/服务名

    那么问题就出来了,使用ArcGIS Engine连接SDE的代码如下:

    public IWorkspace Connect_SDE()
            {
                IPropertySet propertySet = new PropertySetClass();
                propertySet.SetProperty("INSTANCE","sde:oracle11g:192.168.220.131/orcl");
                propertySet.SetProperty("USER", "sde");
                propertySet.SetProperty("PASSWORD", "sde");
              
    
                IWorkspaceFactory sdefactory = new SdeWorkspaceFactoryClass();
                IWorkspace sdeWorkspace = sdefactory.Open(propertySet, 0);
                return sdeWorkspace;
            }

    如果是默认端口1521,用户可以按照上面的连接即可,但是如果修改了端口号,用户需要添加端口号,相关代码为

    propertySet.SetProperty("INSTANCE","sde:oracle11g:192.168.220.131:1522/orcl");

    但是使用这种方式,ArcGIS Engine会报一个超时的错误。

    问题原因

    这个问题是一个Bug

    Bug Number  NIM077055
    Submitted  Jan 17, 2012 11:27 AM
    Severity  Medium
    Applies To  No Product Found
    Version Found  No Version Found
    Prog Language  N/A
    Server Platform  
    Client Platform  
    Database  All
    Locale  N/A
    Status  
    Version Fixed  10.1
    SP Fixed  N/A

    解决方案

    1、如果使用默认1521端口,就是用上面代码的连接方式,注意不能包含端口号
    2、如果使用非1521端口,你就必须安装一个Oracle客户端的管理员版本,配置NetserviceName就可以了
    假如你的netservicename名称为:orcl_123

    propertySet.SetProperty("INSTANCE","sde:oracle11g:orcl_123");

    总结

    在ArcGIS Engine开发过程中,虽然可以类比ArcGIS for Desktop的功能和写法,但是在连接参数这块可能有所区别
    1、ArcGIS for Desktop不需要写sde:oracle11g、支持端口号
    2、ArcGIS Engine必须要写sde:oracle11g、不支持端口号

    iarcgis.com,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:http://www.iarcgis.com/?p=1004
  • 相关阅读:
    thinkphp中field的用法
    Thinkphp常用标签
    thinkphp框架的相关总结
    TP 控制器扩展_initialize方法实现原理
    Thinkphp中的volist标签(查询数据集(select方法)的结果输出)用法简介
    php中遍历数组的方法
    django自定义过滤器
    centos7 安装 mysql
    centos7 安装 nginx
    centos 服务器改名
  • 原文地址:https://www.cnblogs.com/gisoracle/p/4393964.html
Copyright © 2020-2023  润新知