我们目前被迫在ColdFusion上使用macromedia驱动程序以连接到Oracle数据库.jdbc连接url如下:
jdbc:macromedia:oracle://server:port;sid=service
Run Code Online (Sandbox Code Playgroud)
这种方法的另一面是它迫使我们"硬编码"数据库服务器的名称以及端口号和服务名称.
有谁知道jdbc url应该如何使用TNSNames条目?
对于OCI驱动程序,它是 jdbc:oracle:oci:@tnsentry
是否可以对macromedia驱动程序执行相同的操作?你是什么正确的网址?
这是我的问题:我在C#中使用ODP.NET dll的程序:oci.dll,ociw32.dll,Oracle.DataAccess.dll,orannzsbb11.dll,oraocci11.dll,oraociicus11.dll,OraOps11w.dll.
我有2台电脑.首先安装完整的ODAC包,然后安装第二个包.但我在exe目录中都需要dll,所以ODAC不是问题(我认为).这些计算机之间的区别是TNSNAMES文件的路径.第一个:C:\ app\OraHome_1\Network\admin\Second:C:\ Oracle\product\11.2.0\client_1 \network\admin
并在第一个CPU程序工作正常.但是在具有相同连接字符串的第二个上,无法打开连接(ORA-12154).使用SQL Plus,我可以在两台计算机上连接.
那么,我怎样才能展示我的程序通往TNSNAMES的正确途径?
我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中.
起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运行查询.这适用于小型表,但我有几个表有几十万行,有些表有数百万行,所以这个解决方案不起作用.
然后我创建了一个包含以下内容的TNS文件:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=XE)
)
)
Run Code Online (Sandbox Code Playgroud)
我按照我在别处找到的关于如何生成ODBC连接的指令,并且'测试连接'成功了.
然后我运行这些命令在MS SQL中创建链接服务器:
EXEC sp_addlinkedserver
@server = 'OracleLinkServer'
,@srvproduct = 'OracleTnsName'
,@provider = 'MSDASQL'
,@datasrc = 'OracleTnsName'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'OracleLinkServer'
,@useself = 'False'
,@locallogin = NULL
,@rmtuser = 'user'
,@rmtpassword = 'password'
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用openquery以下方法从SQL Server查询Oracle数据库中的表:
select * from openquery(OracleLinkServer, 'select * from oracleTable')
Run Code Online (Sandbox Code Playgroud)
但得到一个错误:
消息7399,级别16,状态1,行1
链接服务器"OracleLinkServer"的OLE DB提供程序"MSDASQL"报告错误.提供商未提供有关错误的任何信息.
消息7303,级别16,状态1,行1
无法为链接服务器"OracleLinkServer"初始化OLE DB提供程序"MSDASQL"的数据源对象.
当我检查链接服务器的属性,只需单击确定,我收到此错误:
我需要使用PLSQL Developer来访问oracle数据库.当我尝试连接到我的数据库时出现以下错误.ORA-12154: TNS:could not resolve the connect identifier specified.我可以使用SQLPLUS命令行来连接到数据库,并TNSPING成功返回,但我想不出为什么PLSQL开发者将无法正常工作-这是使用正确的tnsnames.ora文件,并在那里连接字符串是正确的,因为它与tnsping使用的相同.
任何人都知道我可以做些什么来解决这个问题?我已经查看了关于这个特定错误的其他线程而没有运气.
tnsnames.ora中
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MININT-AIVKVBM)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
Run Code Online (Sandbox Code Playgroud)
SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
Run Code Online (Sandbox Code Playgroud)
sqlpus命令行 图像在这里
PLSQL Developer连接首选项:此处为图像
我想连接Oracle数据库而不安装Oracle Client。
我下载了:
然后C:\Oracle\instantclient,在上创建文件夹,在其中提取所有软件包。
我被设置system environment为:
Path - C:\Oracle\instantclient
NSL_LANG - with properly key
ORACLE_HOME - C:\Oracle\instantclient
ORACLE_SID - C:\Oracle\instantclient
TNS_ADMIN - C:\Oracle\instantclient
然后我创建tnsnames.ora了配置文件C:\Oracle\instantclient
当我在cmd中输入命令时:
sqlplus user/password @HOST
我有一条消息,如:
ERROR:
ORA-12560: TNS:protocol adapter error
但是当我尝试像:
sqlplus user/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=address to host)(Port=1521))(CONNECT_DATA=(SID=address to SID)))
一切正常。为什么SQL识别tnsnames.ora文件有问题?
我一直想知道这一段时间,但由于它没有出现太多,我把它留在了"神秘的巫术"栏目中.
在我看来,ABC和ABC.DEFG之类的连接标识符之间存在某种关系,我不太清楚它是什么.
例如,我刚刚设置的机器我在使用identfier ED2时遇到问题,即使在我的tnsnames文件中我明显有
EDC2 = (....)
Run Code Online (Sandbox Code Playgroud)
这是从另一台运行良好的计算机上复制和粘贴的.然而,在我改变它之前,做EDC2的尝试将无法解决
EDC2.WORLD = (...)
Run Code Online (Sandbox Code Playgroud)
此时解析为EDC2开始工作.这里发生了什么?
是否有命令行实用程序来修改oracle客户端的tnsnames.ora文件?
[编辑]我正在寻找类似于odbcconf.exe(用于编辑Windows上的ODBC连接)的东西来修改tnsnames.ora文件.
[编辑2]我在自动构建脚本中使用MSBUILD.该的MSBuild社区任务项目具有适合正是我所需要的AddTnsName任务.我的谷歌搜索技巧一定很弱.我应该一直在搜索MSBuild和tnsnames.ora而不是命令行tnsnames.ora.但是,Oracle确实没有为tnsnames.ora提供odbcconf之类的命令行实用程序.
我正在尝试连接到远程 Oracle 服务器。我的连接字符串 -
OdbcConnection con = new OdbcConnection();
con.ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= xxxx)(PORT=xxxxx))(CONNECT_DATA=(SERVER=dedicated)(SERVICE_NAME=abc.domain.com)));USER ID=user1;Password=pwd;";
Run Code Online (Sandbox Code Playgroud)
我遇到错误:“错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序”(System.Data.Odbc.OdbcException) 异常消息 =“错误 [IM002] [Microsoft][ ODBC 驱动程序管理器]未找到数据源名称且未指定默认驱动程序“,异常类型 =”System.Data.Odbc.OdbcException”,异常 WinRT 数据 =“”
我根据我的 TNSNAMES.ora 指定了我的连接字符串
我的数据库在 TNSNAMES.ora 中的条目如下:
DB.WORLD=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST= xxxx)
(PORT=xxxxx)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=abc.domain.com)
)
)
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下这个错误吗?请帮助/建议我的连接字符串是否出错以及如何从我的 Windows 应用程序连接到 Oracle 服务器
尝试使用任一连接字符串绕过 tnsnames.ora(完整连接字符串和 EZCONNECT)会在尝试连接到数据库时返回以下错误:
pyodbc.Error: ('HY00', '[HY00] [Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error\n (12560) (SQLDriverConnect);[Oracle][ODBC][Ora]ORA -12560: TNS: 协议适配器错误\n (12560)')
我尝试使用https://www.connectionstrings.com/oracle/ 中的以下连接字符串:
Driver={Oracle in OraClient11g_home1}; Data Source=uid/pwd@//host:port/service_name;
Driver={Oracle in OraClient11g_home1};
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=port)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)));
User Id=uid;Password=pwd;'
Run Code Online (Sandbox Code Playgroud)
我可以使用 sqlplus 和 EZCONNECT 连接到数据库:
PS: C:\>sqlplus uid/pwd@//host:port/service_name
SQL*PLUS: Release 11.2.0.1.0 Production on Thu Aug 30 11:56:22 2018
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
SQL>
Run Code Online (Sandbox Code Playgroud)
我怀疑这是驱动程序问题,因为使用不同的驱动程序会返回不同的错误:
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 …