ArcGIS SDE for Oracle 客户端直连错误解决
arcgis10.2发现直连数据库问题:通过arcgis desktop能连,但是arcengine不能连,始终报
“Underlying DBMS error[ORA-12154:”错误。
一、ArcEngine直连失败解决方法
ArcGIS SDE for Oracle 客户端安装配置,oracle中文乱码解决
服务器端环境:ArcGIS10.2,Oracle11g2服务器端,已安装,然后通过直连的方式,链接到SDE 客户端: 客户端不用安装oracle11g2客户端,只需要安装instantclient,然后配置环境变量参数,Oracle官网提供了instantclient,下载instantclient-basic包,将包解压存放到本地,测试位置为:D:\STUDY\instantclient_11_2;。 1、直接在这个目录下新建sqlnet.ora和tnsnames.ora两个文件 sqlnet.ora文件内容 --------------------- SQLNET.AUTHENTICATION_SERVICES= (NTS) //此处也可为=None,=NTS容易出现无法连接orcle现象。 NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora文件内容 orcl = (DESCRIPTION= (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.146.143 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) 注:斜体部分需要按需配置,如果端口是自定义的也需要相应变更。
二、ArcGIS10.1及以上 直连SDE参数配置方法
Server:服务器名或IP(可以不填)
INSTANCE: sde:oraclexx:数据库监听名
Database: 要连接的数据库名(可以不填)
username: 用户名(最好用SDE用户)
password: 密码
IPropertySet pPropset = new PropertySetClass(); pPropset .SetProperty("Server",“192.168.0.1”); pPropset .SetProperty("INSTANCE","sde:oracle11g:orcl"); pPropset .SetProperty("USER","sde"); pPropset .SetProperty("PASSWORD","sde"); pPropset .SetProperty ("DATABASE", "sde"); pPropset .SetProperty("VERSION","SDE.DEFAULT"); IWorkspaceFactory Fact = new SdeWorkspaceFactoryClass(); IFeatureWorkspace Workspace = (IFeatureWorkspace)Fact.Open(pPropset ,0);
参考:
ArcEngine 访问 直连方式Oracle11g SDE10.1
三、不配置 Tns Name 使用 ArcGIS Desktop 直连 SDE 的方法
按照一、二方法需要配置sqlnet.ora和tnsnames.ora两个文件;如果不配置也可以,服务写成这个样式即可“sde:oracle11g:192.168.15.192/orcl”,arcengine连接sde同理。
3.1 不配置 Tns Name 使用 ArcGIS Desktop 直连 SDE 的方法
以下是连接参数截图:
参数说明:
服务器:服务端IP或机器名
服务:“sde:oracle11g:”是固定的,最后的“PS2VM1”是oracle的网络服务名,就是oracle net manager左边的树的节点名称
PS:不用网络服务名也可以,例如可以这样:“sde:oracle11g:192.168.15.192/orcl”,192.168.15.192代表IP或计算机名,orcl是oracle数据库名(SID),这种写法也可用在plsql登录时的database一项
数据库:可以不填
用户名和密码:sde的用户和密码
3.2 不配置 Tns Name 使用 ArcEngine直连 SDE 的方法
写成这个样式即可“sde:oracle11g:192.168.15.192/orcl”
(上文中配置tnsname的写法是写成sde:oracle11g:orcl(此处的orcl是tnsname的监听名称orcl))
IPropertySet propertySet = new PropertySetClass(); propertySet.SetProperty("instance", "sde:oracle11g:192.168.1.1/orcl"); propertySet.SetProperty("user", "sde" propertySet.SetProperty("password", "sde" propertySet.SetProperty("version", "sde.DEFAULT" IWorkspaceFactory factory = new SdeWorkspaceFactoryClass(); return factory.Open(propertySet, 0);
参考:
ArcGIS Desktop 10.0 直连 ArcSDE 10.2
不配置Tns Name使用ArcGIS Desktop直连SDE的方法.pdf_微盘下载