zoukankan      html  css  js  c++  java
  • 使用PLSql连接Oracle时报错ORA-12541: TNS: 无监听程序

       非常多时候为了优化我们的启动项把oracle的服务禁止了。但是重新启动启动之后使用PLSQL登陆oracle时会出现无监听程序,这说明我们有一些服务没有启动。我们先查看一下oracle的服务是否启动,查看方法是计算机-->>管理-->>服务和应用程序-->>服务,进行查找oracle的启动服务,

    进入之后详细情况例如以下图:



       在这里能够看到oracle的启动服务OracleServiceORCL和OracleOraDb11g_home1TNSLister,OracleDBCConsoleorcl等启动项都是没有启动,在这里把我上图中红色矩形框内的服务启动就能够了。

    在oracle11成功安装之后,用PLSQL 登陆的时候提示ORA-12541: TNS:无监听程序。无法进行登陆。在这里总结了一下解决此类的办法,希望能够帮到大家。

    第一种方法:因为地址分配不正确。我们这里须要又一次配置一下本机的环境。

    oracle的安装环境中找到network,如图:


    我的oracle安装到了D盘。所以你依据自己安装路径进行寻找,比如:D:appAdministratorproduct11.2.0dbhome_2NETWORK

    LISTENER_ORCL =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = ORCL)

        )

      )

     

    ORACLR_CONNECTION_DATA=

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))

        )

        (CONNECT_DATA =

          (SID = CLRExtProc)

          (PRESENTATION = RO)

        )

      )

     

    ORCL =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = ORCL)

        )

      )

    改动后的代码{

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = ORCL)

        )

      )

    把里面的localhost改动成电脑随机生成的IP

     

    机名输入localhost127.0.0.1都会提示无监听程序。

    因为自己主动分配的IP地址会有变动,所以将oracle值中的host改成本机的计算机名。保存改动后的tnsnames.ora。再次连接(10.1.10.183/orcl)数据库。出错问题解决。

     

    另外一种方法是详细查看oracle的系统。

    详细流程例如以下:

    第一步:查看oraclelog日志。

    发现以下错误:
    TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-9
    -2008 10:25:26

    Copyright (c) 1991,2005, Oracle. All rights reserved.

    系统參数文件为D:oracleproduct10.2.0db_1 etworkadminlistener.ora
    写入D:oracleproduct10.2.0db_1 etworkloglistener.log的日志信息
    写入D:oracleproduct10.2.0db_1 etwork racelistener.trc的跟踪信息
    跟踪级别当前为0

    pid=1704開始

    监听

    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1ipc)))
    监听该对象时出错:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.5.0.5)(PORT=1521)))
    TNS-12545:
    因目标主机或对象不存在,连接失败
    TNS-12560: TNS:
    协议适配器错误
    TNS-00515:
    因目标主机或对象不存在,连接失败
    32-bit Windows Error: 49: Unknown error
    不再监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1ipc)))

    第二步:查看oracle的监听程序是否启动

        进入dos窗体。快捷键是 菜单键+R。输入cmd。在dos窗体中输入lsnrctlstatus 查看你的执行状态。假设结果例如以下:

    LSNRCTL for 32-bitWindows: Version 10.2.0.1.0 - Production on 20-9 -2008 10:5
    0:44

    Copyright (c) 1991,2005, Oracle. All rights reserved.

    正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
    TNS-12541: TNS:
    无监听程序
    TNS-12560: TNS:
    协议适配器错误
    TNS-00511:
    无监听程序
    32-bit Windows Error: 2: No such file or directory
    正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.5.0.5)(PORT=1521)))
    TNS-12535: TNS:
    操作超时
    TNS-12560: TNS:
    协议适配器错误
    TNS-00505:
    操作超时
    32-bit Windows Error: 60: Unknown error

    代表你的监听程序没有启动,须要你进行启动监听程序,启动方式有两种:一个是在dos中输入lsnrctl start就能够了。还有一种方式是:计算机à管理à服务à找到oracle的自启服务,找到OracleOraDb11g_home1TNSListener,点击启动就能够了。

    第三种:重置监听程序,以及配置本地网络名称

     我的电脑是window 7,所以从開始菜单中找到oracle的安装文件夹,找到Net Configuration Assistant打开之后,进行配置。主要配置是都过oracle自带的管理工具实现的,详细例如以下图:


    这里的图片用的是网上搜寻的,只是方法我都使用了。由于那时候问题真的非常多,换了好几种方法。很多其它的知识朋友们能够搜寻一下我的公众平台:牧笛助手,账号:MuDi_Assistant,近期刚開始筹建。打算分享学习中的案例已经各种问题bug的解决方法。扫一扫二维码:



  • 相关阅读:
    Django之Admin
    反射功能:***attr
    python单例模式
    三元表达式,推导式,生成器表达式
    jquery的each()
    Django篇之F,Q
    Django的思维导图
    Models_Class 有choice,如何显示其中文
    Java并发机制(1)--线程状态与方法(转)
    Java并发机制(2)--synchronized与Lock
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5318917.html
Copyright © 2011-2022 走看看