`
zonlylove
  • 浏览: 5821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle连接外库问题

 
阅读更多

  相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。

      在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: TNS: 无法解析指定的连接标识符”。配置Oracle客户端详细步骤如下:
      安装好Oracle客户端之后,在开始菜单中依次找到“Oracle - OraClient10g_home1—>配置和移植工具—>Net Manager”并打开(Win7,Win8用户如果没有取得Administrator账号登陆需要以管理员方式运行),依次展开“Oracle Net配置—>本地—>服务命名”点击左侧“加号”配置新的网络服务

image

image

image

image

      最后,点击“下一步”完成即可,如果不知道或者忘记Oracle服务名可以通过查看服务获得,比如我这里配置的主机名是我本机,在我的电脑服务中找到oracle相关的服务

image

通过上面的服务名称,可以看出我安装的服务名就是“ORCL”,或者在服务端通过SQL Plus使用sys账号登陆,输入命令
show parameter service_name查看。
OracleDBConsoleORCL是Oracle网页端管理工具的服务,访问地址一般为“http://127.0.0.1:1158/em/console/logon/logon”,如果不习惯用这个来管理数据库可以不用启动。
OracleJobSchedulerORCL是管理Oracle中计划任务的,一般不用启动。
OracleOraDb10g_home1iSQL*Plus是SQL Plus的服务,如果不习惯在命令行下面操作数据库,可以不用启动。
OracleServiceORCL,OracleOraDb10g_home1TNSListener都需要开启,前者是主服务,后者是监听服务。

     当在Oracle客户端中配置好Net Manager中配置好服务后就可以通过我们配置的网络服务名访问Oracle数据库了,此配置实质想D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中增加了一行配置(由于我的Oracle是安装在D盘Oracle目录中,具体路径根据安装时选择的路径而定)。

复制代码
# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )
复制代码

    如果在同一台电脑上面同时安装了Oracle客户端和服务端,那么在服务端的安装目录中也会存在同样的配置文件D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,在这种情况下如果我们配置好了客户端Net Manager然后连接Oracle数据库,可能会出现“ORA-12154: TNS: 无法解析指定的连接标识符”这时,你就应该怀疑,我到底访问的是哪个路径下的配置文件呢?此时可以使用tnsping命令

image

      如果你是在客户端Net Manager中配置的网络服务,但是此时解析出来的使用参数文件却是D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora,那么我想你应该明白了。这种情况有两种解决办法:
      第一:在服务端的Net Manager也配置相同的网络服务,或者直接拷贝D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中的配置到D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,每次配置了新的网络服务你都需要这么做,如果不想这么麻烦那就使用第二种解决办法。     
      第二:修改系统环境变量Path值,将D:\Oracle\product\10.2.0\client_1\bin;路径移至D:\Oracle\product\10.2.0\db_1\bin;前面即可一劳永逸。
      注意:造成以上这种情况出现的原因是:在一台电脑上同时安装了oracle客户端和数据库服务,并且是先安装客户端,再安装数据库服务造成的,如果先安装数据库服务,再安装客户端就不会出现这种情况了。
      根据以上方式配置完oracle后,相信在程序中就可以正常连接oracle数据库了。

      当我安装好PLSQL Developer软件后登陆时任然出现了“ORA-12154: TNS: 无法解析指定的连接标识符”,如果是Win7,Win8用户甚至可以会出现弹出一个白框的情况,这时需要以管理员身份运行PLSQL Developer,并且确保你的PLSQL Developer是读取的oracle客户端配置,直接取消登陆,在PLSQL Developer工具栏中找到“Tools—>Preferences”,在Oracle的Connection节点中找到Oracle Home选择OraClient10g_home1,保存后关闭PLSQL Developer就可以正常登陆了。

image

     需要注意的是,在安装PLSQL Developer时不能安装在带有括号的目录中,如64bit系统的Program Files (x86)目录,就会出现无论你怎么设置,它依然不停的弹出“ORA-12154: TNS: 无法解析指定的连接标识符”。同样的问题也会出现在其他Oracle数据库管理软件中,比如Toad for Oracle

     “ORA-12154: TNS: 无法解析指定的连接标识符”是使用Oracle数据库的新手遇到的比较常见的问题之一,只要我们了解了它的工作方式,冷静排查,相信很容易就能够找到问题的解决办法的。

---------------------------------------------------------------------------------------------------------------

***oracle Net Manager 服务命名无法配置(无法新建、添加服务名)

 

今天在配置oracle Net Manager 配置服务命名的时候总是无法配置,以前配置的服务名都显示不出来,然后点击绿色添加按钮也没反应,因为先前我修改了oracle\product\10.2.0\db_1\NETWORK\ADMIN下的tnsnames.ora文件

   查了半天才发现重命名服务名前面多了个空格,把那个空格去掉就没事了

 

 

--------------------------------------------------------------------------------------------------------------

***ORA-12170 TNS 连接超时

这是一个初级问题,一般是服务没有配置好,解决方法如下:

1、打开cmd输入netca(或者在开始菜单里找Net Configuration Assistant)。 
2、选择【本地net服务名配置】→下一步。 
3、选择【添加】→下一步。 
4、在【服务名】中输入你想要连接的服务器上的oracle服务的名字→下一步。 
5、选择【tcp】→下一步。 
6、在【主机名】中输入你想要连接的服务器ip,端口号不变→下一步。 
7、选择【进行测试】→下一步。(当然你也可以选择不测试) 
※1测试如果不通过,点击【更改登录】输入一个肯定能登入的【用户名】和【口令】→确定,出现【正在连接...测试成功。】表明测试成功。 
※2测试不通过的话,点【上一步】确认你写的【服务名】和【主机名】,确认无误的情况下,确认你要连接的服务器oracle监听服务已经打开。 
8、在【net服务名中】输入你想要使用的本地的服务名→下一步。 
※就是【sqlplus user/passwd @本地服务名】。 
9、选择【否】→下一步。 
10、出现【net服务配置完毕】字样→下一步。 
11、点击【完成】完成服务配置。 
12、在上面服务配置完成以后,在cmd中输入如下命令即可远程登录oracle服务器: 
sqlplus user_name/password@本地服务名 
一定记住,上面的本地服务名是你第8步写的服务名

 

分享到:
评论

相关推荐

    oracle连接需要的驱动

    标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...

    Navicat for Oracle 连接oracle库需要的扩展工具

    在使用Navicat for Oracle连接Oracle数据库时,有时会遇到需要额外扩展工具的情况,特别是对于某些特定版本的Oracle数据库。本文将详细介绍在连接Oracle库时可能需要的oci.dll文件和sqlplus.exe,以及它们在...

    利用python-oracledb库连接Oracledb数据库,使用示例

    python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...

    oracle连接MYSQL的库

    oracle连接MYSQL的库 http://www.oracle.com/technology/global/cn/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html orai18n.jar(1,646,178 字节)— 用于 JDK 1.2、1.3、1.4 和 1.5 的 NLS 类。该 jar ...

    oracle客户端连接远程服务器

    标题中提到的“Oracle客户端连接远程服务器”,是指使用Oracle数据库客户端软件来建立与远程Oracle数据库服务器的连接。Oracle数据库是一种广泛使用的商业数据库系统,它支持多用户并发访问并保证数据的一致性,适用...

    oracle连接的包

    "oracle连接包"可能指的是Oracle的ojdbc驱动,例如`ojdbc8.jar`或`ojdbc7.jar`等,这些驱动包允许Java应用通过JDBC API与Oracle数据库建立连接。将这个连接包放入项目的`lib`目录下,意味着它是项目运行时的依赖库,...

    应用于asp.net oracle连接数据动态库下载

    应用于asp.net oracle连接数据动态库下载

    C#中连接oracle连接方法

    首先,你需要在你的项目中引入Oracle客户端库。Oracle提供了一个名为ODP.NET(Oracle Data Provider for .NET)的组件,它可以让你在C#中无缝地连接到Oracle数据库。你可以通过NuGet包管理器来安装这个组件,搜索并...

    测试连接oracle数据库

    本文将深入探讨如何进行Oracle数据库的测试连接,特别是针对Oracle 11g和12c这两个版本。在面对这些版本时,可能会遇到一些挑战,如兼容性、配置或性能问题。为了解决这些问题,一种有效的方案是使用Object6和JDK ...

    SqlDbx连接oracle

    这种连接方式通常依赖于Oracle的Instant Client,这是一个精简版的Oracle客户端,只包含必要的库文件,可以让你的机器与Oracle服务器通信。 在提供的文件列表中,我们看到以下几个关键的Oracle Instant Client组件...

    ArcGIS连接SDE 在数据库连接处添加数据库连接之前必须安装oracle client客户端库

    为了实现ArcGIS与Oracle Spatial and Graph (SDE)数据库的有效连接,需要正确安装并配置Oracle客户端库。本文将详细介绍如何安装Oracle客户端以及配置环境变量,以确保ArcGIS能够成功连接到SDE数据库。 #### 二、...

    oci.zip 解决Oracle连接时提示oracle library is not loaded的问题

    在使用Navicat Premium 15这样的数据库管理工具连接Oracle数据库时,有时会遇到“oracle library is not loaded”的错误提示,这通常是由于缺少或不兼容的Oracle客户端库文件导致的。Oracle Call Interface (OCI) 是...

    navicat连接oracle插件

    5. 安装完成后,启动Navicat并新建Oracle连接,输入数据库的SID或服务名、用户名、密码等信息,Navicat就可以通过Oracle Instant Client与数据库建立连接。 使用Navicat连接Oracle数据库的优点包括: 1. 界面友好...

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    四、在C++中实现Oracle连接池 1. 初始化:首先,需要初始化环境和会话,设置必要的参数,如数据库服务器地址、端口、用户名、密码等。 2. 创建连接池:通过oci池化函数ociPoolCreate创建连接池,指定最小、最大连接...

    pdm连接oracle数据库

    - **安全性和权限管理**:在配置数据库连接时,应考虑安全性问题,比如使用强密码、限制不必要的网络访问等。 - **测试连接**:完成配置后,务必进行连接测试以确保一切正常。 - **文档记录**:建议对整个配置过程...

    navicat连接oracle 万能oci

    2. 在Navicat的Oracle连接设置中,指定oci的路径或者配置环境变量指向oci库的位置。 3. 如果更改了oci配置,需要重启Navicat以使更改生效。 在实际操作中,如果遇到问题,用户可以参考网络上的教程,例如通过搜索...

    易语言oracle数据库连接模块源码

    在给定的标题中提到的"oraociei10.dll"就是Oracle的客户端库文件,它是OCI接口的一部分,用于在应用程序中实现与Oracle数据库的通信。 使用oraociei10.dll,开发者可以通过调用其提供的函数来执行SQL语句、管理...

    oracle连接jar包

    在Java中连接Oracle数据库时,我们需要引入特定的JAR包,这些库提供了Java应用程序与Oracle数据库通信所需的API。本篇文章将详细介绍如何在Java中使用JAR包连接Oracle数据库,并探讨相关知识点。 首先,最重要的JAR...

    delphi 通过oci连接oracle数据库

    "ncoci8"可能是指使用Oracle的第8代客户端库进行连接,这表明是较旧的版本,可能需要考虑升级到最新版本以获得更好的稳定性和安全性。 总的来说,通过OCI在Delphi中连接Oracle数据库是一种高效且灵活的方法,适合...

    Navicat 连接数据库Oracle 12c ocr.dll连接资源包

    描述中的“安装Oracle 12c 用Navicat for Oracle连接数据库 cannot load OCI DLL”进一步明确了问题的核心。OCI(Oracle Call Interface)是Oracle数据库提供的一套API,用于开发应用程序与数据库进行交互。当用户...

Global site tag (gtag.js) - Google Analytics