我是SQL Server用户.
我正在使用oracle的项目(我很少使用)我需要创建一个ODBC连接,所以我可以通过MS Access访问一些数据我的机器上有一个名为oraHome90的应用程序.它似乎允许在"网络配置实用程序"中配置一个称为侦听器的东西,我认为还需要完成"本地网络服务名称配置".IT支持为我提供了设置ODBC连接的信息.我尝试过每一个我能想到的组合.我可以通过测试成功通过测试"登录"到oracle服务器数据库.当我尝试创建ODBC连接时,我收到以下错误:ORA-12154:TNS:无法解析服务名称.
假设我想从头开始,以下信息应该允许我连接到数据库......任何建议或评论?注意:最终项目将有一个网站.ASP页面查询数据,但我必须首先证明我可以通过MS Access使用ODBC连接查看数据
Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Oracle Connection
Dim ocst
Dim oconn
ocst = "Provider=OraOLEDB.Oracle;" & _
"Data Source=DATASOURCE;" & _
"User ID=CHIJXL;" & _
"Password=password;"
set oconn = CreateObject("ADODB.Connection")
Run Code Online (Sandbox Code Playgroud)
来自http://ora-12154.ora-code.com
ORA-12154:TNS:无法解析指定的连接标识符
原因:使用连接标识符请求连接到数据库或其他服务,并且使用配置的命名方法之一无法将指定的连接标识符解析为连接描述符.例如,如果使用的连接标识符类型是网络服务名称,则无法在命名方法存储库中找到网络服务名称,或者无法找到或到达存储库.
行动:
如果您使用本地命名(TNSNAMES.ORA文件):
确保"TNSNAMES"列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRECTORY_PATH参数的值之一
验证TNSNAMES.ORA文件是否存在并且位于正确的目录中并且可以访问.
检查TNSNAMES.ORA文件中是否存在用作连接标识符的网络服务名称.
确保TNSNAMES.ORA文件中的任何位置都没有语法错误.寻找无与伦比的括号或流浪汉字符.TNSNAMES.ORA文件中的错误可能使其无法使用.
如果您使用目录命名:
验证"LDAP"是否列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRETORY_PATH参数的值之一.
验证LDAP目录服务器是否已启动且可以访问.
验证是否在目录中配置了用作连接标识符的网络服务名称或数据库名称.
通过指定完全限定的网络服务名称或完整的LDAP DN作为连接标识符,验证所使用的默认上下文是否正确
如果您使用简单连接命名:
验证"EZCONNECT"是否列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRETORY_PATH参数的值之一.
确保指定的主机,端口和服务名称正确无误.
尝试将连接标识符括在引号中.有关命名的详细信息,请参阅"Oracle Net Services管理员指南"或Oracle操作系统特定指南.
参考此MSDN POST中的#7 ,添加注册表项对我有用。我安装了Vs2010等oracle 11.0。
\n\n\n\n检查 HKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE 处的注册表项 \xe2\x80\x9cTNS_ADMIN\xe2\x80\x9d。如果存在,请确保其具有正确的值,如 \xe2\x80\x9cDir:\\app\\product\\11.1.0\\client_1\\network\\admin\xe2\x80\x9d。\n如果您没有\xe2\x80\x99 看到该密钥,则创建该密钥并设置适当的值\n,如下所示。Regedit->HKEY_LOCAL_MACHINE->Software->Oracle->RightClick\n NEW->StringValue 并将其命名为 TNS_ADMIN 并给出值 \n \xe2\x80\x9cX:\\app\\product\\11.1.0\\client_1 \\网络\\管理\xe2\x80\x9d
\n
假设你正在使用TNSNAMES命名,这里有几件事要做:
Run Code Online (Sandbox Code Playgroud)> SERVICENAME_alias = > (DESCRIPTION = > (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521)) > (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))
这假设您使用的是1521的标准Oracle端口.请注意,servicename_alias可以是您要在本地系统上使用的任何名称.您可能还会发现需要指定(SID = SERVICENAME)而不是(SERVICENAME = SERVICENAME).
小智 5
我花了几个小时努力解决这个问题,直到我发现在“我的电脑”=>“属性”=>“高级”=>“环境变量”=>“在系统变量”中查找名为“TNS_ADMIN”的条目中设置了一个名为 TNS_ADMIN 的环境变量。添加 TNS_ADMIN 以更改 Tnsnames.ora 条目的默认路径。当在可以为所有网络计算机设置通用 tnsnames.ora 条目的网络环境中使用时,这非常有用。要查看 tnsnames.ora 的默认路径,请在 TNS_ADMIN 中添加默认路径。
归档时间: |
|
查看次数: |
245562 次 |
最近记录: |