标签: tnsnames

ORA-12154:TNS:无法解析指定的连接标识符

我正在尝试连接到安装在Linux EL 5上的oracle 11g并且出现以下错误

SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
Run Code Online (Sandbox Code Playgroud)

我在network/admin下的listener.ora如下

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (SID_NAME=orcl))
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (PROGRAM=extproc)))
Run Code Online (Sandbox Code Playgroud)

我的tnsnames.ora如下

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = …
Run Code Online (Sandbox Code Playgroud)

oracle tnsnames listener oracle11g ora-12514

8
推荐指数
2
解决办法
8万
查看次数

如何将JDBC连接到tns oracle

我可以使用tns文件从plsql连接到数据库

现在我想使用JDBC从我的Java连接到数据库.

我尝试了什么:

我搜索谷歌,我发现我必须使用此连接字符串:

"jdbc:oracle:thin:@//host:port))/tnsfile)";
Run Code Online (Sandbox Code Playgroud)

我的电脑名是myPC

在tnsfile中写入的端口是5151

所以我尝试了这个连接String

"jdbc:oracle:thin:@//myPC:5151))/tnsfile"
Run Code Online (Sandbox Code Playgroud)

但我得到了这个例外

java.sql.SQLRecoverableException: IO ERROR: SO Exception was generated
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

如何使用tns文件将我的JDBC连接到数据库?

java tnsnames jdbc oracle11g

8
推荐指数
3
解决办法
4万
查看次数

如何在没有tnsnames.ora文件的情况下使用Data Pump实用程序

我希望能够运行expdpimpdp直接指定连接参数而不是驻留的TNS名称tnsnames.ora.这可能吗?

oracle command-line tnsnames datapump

7
推荐指数
2
解决办法
2万
查看次数

创建与Oracle数据库的连接时出现java.lang.ArrayIndexOutOfBoundsException

看来Oracle的java客户端有一个错误 - 如果tnsnames.ora文件在特定位置放错了空格/制表符/换行符,则会出现以下跟踪异常:

java.lang.ArrayIndexOutOfBoundsException: <some number>
        at oracle.net.nl.NVTokens.parseTokens(Unknown Source)
        at oracle.net.nl.NVFactory.createNVPair(Unknown Source)
        at oracle.net.nl.NLParamParser.addNLPListElement(Unknown Source)
        at oracle.net.nl.NLParamParser.initializeNlpa(Unknown Source)
        at oracle.net.nl.NLParamParser.<init>(Unknown Source)
        at oracle.net.resolver.TNSNamesNamingAdapter.loadFile(Unknown Source)
        at oracle.net.resolver.TNSNamesNamingAdapter.checkAndReload(Unknown Source)
        at oracle.net.resolver.TNSNamesNamingAdapter.resolve(Unknown Source)
        at oracle.net.resolver.NameResolver.resolveName(Unknown Source)
        at oracle.net.resolver.AddrResolution.resolveAndExecute(Unknown Source)
        at oracle.net.ns.NSProtocol.establishConnection(Unknown Source)
        at oracle.net.ns.NSProtocol.connect(Unknown Source)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1037)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:282)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:468)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
Run Code Online (Sandbox Code Playgroud)

如果您使用C++应用程序并尝试tnsnames.ora使用相同的方式将其连接到数据库- 它可以正常工作.同样如此sqlplus.还tnsping应该分析此文件没有问题,解决任何服务名称.似乎Oracle .trim()对于价值观或其他东西太懒了 - 而且Oracle客户端版本9,10和11也存在同样的问题.

知道为什么这个问题存在以及tnsnames.ora格式的确切问题是什么?(我只是删除所有空格来解决它)

java oracle tnsnames

6
推荐指数
1
解决办法
4684
查看次数

在使用托管ODP.NET时,如何从C#查询LDAP以解析Oracle TNS主机名?

继我之前的问题,我设法在Oracle论坛的帮助下回答了自己,我现在有另一个问题,从前一个问题开始(提供给后台).

我希望直接从我的C#代码查询LDAP,以执行Oracle TNS主机名的LDAP查找,以获取连接字符串.这通常存储在tnsnames.ora中,我的组织使用LDAP(通过ldap.ora)使用Active Directory从LDAP服务器解析主机名.

但是,我在我的C#应用​​程序中使用ODP.NET,托管驱动程序测试版(Oracle.ManagedDataAccess.dll),它不支持LDAP,如前面提到的Oracle论坛回复所指出的发行说明中所述.这就是我希望直接从C#查询LDAP的原因.

我在这里找到了一种方法,使用DirectoryEntryDirectorySearcher,但我不知道要把什么作为参数DirectorySearcher.我可以访问ldap.ora,其格式如下:

#LDAP.ORA配置
#由Oracle配置工具生成.
DEFAULT_ADMIN_CONTEXT ="dc = xx,dc = mycompany,dc = com"
DIRECTORY_SERVERS =(ldap_server1.mycompany.com:389:636,ldap_server2.mycompany.com:389:636, ...)DIRECTORY_SERVER_TYPE = OID

但是,如何将其映射到在我的C#代码中设置LDAP查询?

c# oracle tnsnames ldap directoryentry

6
推荐指数
2
解决办法
7508
查看次数

ORA-12154:无法连接到 Windows 10 上的默认 Oracle XE 21c 数据库

我已经受够了。我就是无法让它发挥作用。我在 Windows 10 桌面上安装了 Oracle XE 21c。当我以管理员身份运行安装文件后,安装就顺利了。我基本上都是选择默认的。

现在它正在运行,并且 XE 为我创建了一个默认数据库。但是当我尝试使用 SQLPlus 作为 SYSTEM 连接时,我得到了这个信息:


SQL*Plus: Release 21.0.0.0.0 - Production on Mon Nov 1 19:08:25 2021
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Enter user-name: SYSTEM
Enter password:
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified

Run Code Online (Sandbox Code Playgroud)

我查看了一下,没有 tnsnames.ora 或 listern.ora 文件,因此我尝试创建它们,尽管我不确定它们是否正确。

C:\app\sysde\product\21c\dbhomeXE\network\admin\listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
Run Code Online (Sandbox Code Playgroud)

C:\app\sysde\product\21c\dbhomeXE\network\admin\tnsnames.ora …

oracle connection tnsnames listener

6
推荐指数
1
解决办法
8021
查看次数

ORA-12162: TNS:在 Mac OS X Lion 上错误地指定了网络服务名称

我正在尝试使用 tnsnames.ora 使用 oracle sqlplus 即时客户端连接到 oracle 数据库。但出现此错误:ORA-12162: TNS:net 服务名称指定不正确。

我设置了以下环境值:

DYLD_LIBRARY_PATH,TNS_ADMIN, ORACLE_HOME
Run Code Online (Sandbox Code Playgroud)

sqlplus 的位置已添加到 PATH 变量中。我的 instantclient10_2 部署位于 ~/Library/oracle direcoty。oracle文件夹拥有用户的所有访问权限。

我可以使用 oracle SqlDeveloper 连接 TNS。请帮我解决这个问题。

操作系统版本:- Mac OS X 10.7.2 (Lion)

tnsnames sqlplus osx-lion

5
推荐指数
1
解决办法
4万
查看次数

从SQL Server查询Oracle数据库

我有一个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"的数据源对象.

当我检查链接服务器的属性,只需单击确定,我收到此错误:

标题:Microsoft SQL …

sql-server oracle oledb tnsnames openquery

5
推荐指数
1
解决办法
5万
查看次数

Oracle 11G 连接字符串中的 SDU 设置

我没有引用 sqlnet.ora 文件进行查找,并且几乎提供了以下 TNS URL 用于连接,我需要在下面的连接 URL 中挤入 SDU 设置,我想知道它会去哪里以及新的如何url 会是什么样子?

这是我正在使用的:jdbc:oracle:thin:@192.168.191.231:1521:naladomain

我现在需要在上面的 TNS 字符串中压缩自定义 sdu 设置。我该怎么做?:-)

谢谢!

oracle tns tnsnames oracle11g

5
推荐指数
1
解决办法
4341
查看次数

无法连接 SQLState=08004 [Oracle][ODBC][Ora]ORA-12154: TNS: 无法解析 ms odbc 管理员中指定的连接标识符

我想在一个 tnsnames.ora 文件中添加两个服务名称,并在“Microsoft ODBC 驱动程序配置”中的下面 2 个图像中出现错误。 在此输入图像描述

oracle excel odbc tnsnames instantclient

5
推荐指数
2
解决办法
4万
查看次数