Oracle的OID服务,Oracle.DataAccess和连接字符串

时间:2011-01-07 19:02:01

标签: .net oracle oid

我希望了解如何使用Oracle.DataAccess.dll在.Net中实现OID连接字符串。

OID连接字符串采用以下格式: ldap:// servname:389 / instance,cn = OracleContext

当我使用它作为我的数据源时,我收到此错误:..是一个无效的连接字符串属性

连接Oracle OID的格式是什么?

谢谢你, 斯科特

2 个答案:

答案 0 :(得分:8)

Oracle的想法是在TNS管理目录(通常为$ ORACLE_HOME / network / admin)的LDAP.ORA文件中配置LDAP服务器(在您的情况下为OID)。你有类似的东西:

DIRECTORY_SERVERS = (servname:389)
DEFAULT_ADMIN_CONTEXT = "dc=company,dc=com"
DIRECTORY_SERVER_TYPE = OID

您可能还需要调整SQLNET.ORA文件:

NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES)

然后您的连接字符串只是:

Data Source=instance; User ID=scott; Password=tiger

(甚至没有用户名和密码)。

<强>更新

如果您无法更改TNS Admin目录,我所知道的唯一选项是使用包含所有详细信息(服务器名称,端口,SID或服务名称)的连接字符串。有三种格式:

TNS语法:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=serername)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=instanceSID))); User ID=scott; Password=tiger

EZ使用服务名称连接(请注意服务器名称和服务名称之间的单一内容):

Data Source=//servername:1521/servicename; User ID=scott; Password=tiger

EZ使用SID连接(请注意服务器名称和SID之间的双斜线):

Data Source=servername:1521//instanceSID; User ID=scott; Password=tiger

答案 1 :(得分:0)

在被转移了将近两年后,我回到了这个问题,并找到了一个解决方案。

首先,Oracle指出oracle的托管库不支持ldap支持。嘘。 http://www.oracle.com/technetwork/database/windows/downloads/odpmbetainstall-1696475.html

其次,使用这个帖子: How do I query LDAP from C# to resolve Oracle TNS hostname while using managed ODP.NET?

我能够为tns连接字符串装配ldap查找,并最终将其传递给nhibernate。

我希望Oracle最终支持ldap。