zoukankan      html  css  js  c++  java
  • Oracle ORA12541:TNS:无监听程序

    Oracle ORA-12541:TNS:无监听程序

    标签: Oracle DataBase


    今天使用Oracle数据库,使用可视化连接工具连接测试环境的数据库时提示无监听程序,最后在老师帮助下终于搞定了!︿( ̄︶ ̄)︿

    问题:

    ORA-12541:TNS:无监听程序
    

    解决方法:

    1. 检查监听程序是否能够正常启动,使用『windows+R』输入cmd,
      在命令行中输入lsnrctl start来检查监听是否正常运行,如果正常则会提示:
      TNS-01106: 使用名称LISTENER的监听程序已经启动

      image_1cjqiblm71h663ph8ph129rqbmp.png-142.5kB

      如果没有运行,可以使用
      lsnrctl status 命令来查看服务状态,
      lsnrctl reload 来重启监听服务
      lsnrctl stop 来关闭监听服务
      lsnrctl start 来开启监听服务

      如果监听服务还是没有重启,并且提示:

      正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
      TNS-12541: TNS: 无监听程序
       TNS-12560: TNS: 协议适配器错误
        TNS-00511: 无监听程序
         64-bit Windows Error: 2: No such file or directory
      正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
       TNS-12541: TNS: 无监听程序
        TNS-12560: TNS: 协议适配器错误
         TNS-00511: 无监听程序
          64-bit Windows Error: 61: Unknown error  
      

      那么以 管理员身份 运行cmd (CMD位置:C:\Windows\system32)
      在cmd里输入 以下命令来重启 监听服务;

      net start "OracleOraDb11g_home1TNSListener"
      
    2. 在命令行下使用命令 tnsping IP地址 来查看IP的监听服务是否正常(eg:tnsping 192.168.20.181)
      来检查tnsnames.ora服务配置是否正确

      image_1cjqkuuus9ac1ie4u71qpt3gk16.png-39.1kB

    3. 检查防火墙问题。

    4. 根源所在:listener.ora文件。(修改之前记得备份!!!)

    # listener.ora Network Configuration File: D:\Oracle11g\product\11.2.0\dbhome_1\network\admin\listener.ora
    # Generated by Oracle configuration tools.
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = D:\Oracle11g\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle11g\product\11.2.0\dbhome_1\bin\oraclr11.dll")
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
    
    ADR_BASE_LISTENER = D:\Oracle11g
    
    

    Oracle相关服务设置

    最后,由于Oracle的数据库服务太占用系统资源(电脑配置不行....)于是自己写了一个批处理来设置Oracle相关服务的启动方式(设置为手动)以及开启或者关闭Oracle的相关服务。
    将以下代码保存为Oracle相关服务设置.bat 每次在用可视化工具连接Oracle时双击开启相关服务,使用完毕之后双击关闭相关服务。

    image_1cjqlq17b328uu7bvs3f1u1s19.png-811.5kB

    image_1cjqlsr4e13091ip91a13jqsrua1m.png-730.4kB

    @echo off
    title Oracle 服务设置工具By Ryanjie
    mode con lines=38 cols=88
    %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
    cd /d "%~dp0"
    
    
    :main
    color 2f
    echo.---------------------------------------------------------------------------------------+
    echo %date%   %time:~0,8%
    ::echo %date年~0,4%:%date月~5,2%:%date日~8,2% 
    ::echo %time%
    echo.
    echo   TODO:        Oracle 服务设置工具
    echo.
    echo   Author:      Ryanjie
    echo.
    echo   Function:    此批处理会自动设置、启动和停止Oracle服务
    echo.
    echo   WARNING:    如有360、电脑管家等安全软件提醒,请勾选信任允许和不再提醒!
    echo.
    pause
    echo.
    echo   Oracle相关服务(可根据自己电脑的服务名称进行更改,注意是『服务名称』不是『显示名称』)
    echo                          『OracleOraDb11g_home1ClrAgent』
    echo                          『OracleOraDb11g_home1TNSListener』
    echo                          『OracleServiceORCL』
    echo                          『Oracle ORCL VSS Writer Service』
    echo                          『OracleDBConsoleorcl』
    echo                          『OracleJobSchedulerORCL』
    echo                          『OracleMTSRecoveryService』
    echo   
    echo
    echo.---------------------------------------------------------------------------------------+
    echo.
    echo 请选择使用:
    echo.
    echo     1. 设置Oracle相关服务为手动启动(即在下面输入1)
    echo.
    echo     2. 启动Oracle相关服务(即在下面输入2)
    echo.
    echo     3. 停止Oracle相关服务(即在下面输入3)
    echo.
    echo.---------------------------------------------------------------------------------------+
    if exist "%SystemRoot%\System32\choice.exe" goto Win7Choice
    set /p choice=请输入数字并按回车键确认:
    echo.
    if %choice%==1 goto sc
    if %choice%==2 goto start
    if %choice%==3 goto stop
    "set choice="
    echo 您输入有误,请重新选择。
    ping 127.0.1 -n "2">nul
    cls
    goto main
    
    
    :Win7Choice
    choice /c 123 /n /m "请输入相应数字:"
    if errorlevel 3 goto stop
    if errorlevel 2 goto start
    if errorlevel 1 goto sc
    cls
    goto main
    
    
    :sc
    cls
    color 2f
    echo.---------------------------------------------------------------------------------------+
    echo.
    sc config "OracleOraDb11g_home1ClrAgent" start= demand
    sc config "OracleOraDb11g_home1TNSListener" start= demand
    sc config "OracleServiceORCL" start= demand
    sc config "Oracle ORCL VSS Writer Service" start= demand
    sc config "OracleDBConsoleorcl" start= demand
    sc config "OracleJobSchedulerORCL" start= demand
    sc config "OracleMTSRecoveryService" start= demand
    echo.---------------------------------------------------------------------------------------+
    echo.
    echo %date%   %time:~0,8%
    ::echo %date年~0,4%:%date月~5,2%:%date日~8,2% 
    ::echo %time%
    echo.
    echo 恭喜您,Oracle相关服务
    echo.                          『OracleOraDb11g_home1ClrAgent』
    echo.                          『OracleOraDb11g_home1TNSListener』
    echo.                          『OracleServiceORCL』
    echo.                          『Oracle ORCL VSS Writer Service』
    echo.                          『OracleDBConsoleorcl』
    echo.                          『OracleJobSchedulerORCL』
    echo.                          『OracleMTSRecoveryService』
    echo. 
    echo.    已成功设置为手动启动!
    echo. 
    echo.---------------------------------------------------------------------------------------+
    goto end
    
    
    :start
    cls
    color 2f 
    echo.---------------------------------------------------------------------------------------+
    echo.
    ::下面四个服务按照个人需求进行开启                                                                                              
    net start "OracleOraDb11g_home1ClrAgent"
    net start "OracleOraDb11g_home1TNSListener"
    net start "OracleServiceORCL"
    ::net start "Oracle ORCL VSS Writer Service"
    ::net start "OracleDBConsoleorcl"
    ::net start "OracleJobSchedulerORCL"
    ::net start "OracleMTSRecoveryService"  
    echo.---------------------------------------------------------------------------------------+
    echo.
    echo %date%   %time:~0,8%
    ::echo %date年~0,4%:%date月~5,2%:%date日~8,2% 
    ::echo %time%
    echo.
    echo 恭喜您,Oracle相关服务
    echo.                          『OracleOraDb11g_home1ClrAgent』
    echo.                          『OracleOraDb11g_home1TNSListener』
    echo.                          『OracleServiceORCL』
    echo. 
    echo.  
    echo.    已成功启动!
    echo. 
    echo.---------------------------------------------------------------------------------------+
    goto end
    
    
    :stop
    cls
    color 2f
    echo.---------------------------------------------------------------------------------------+
    echo.
    net stop "OracleOraDb11g_home1ClrAgent"
    net stop "OracleOraDb11g_home1TNSListener"
    net stop "OracleServiceORCL" 
    ::下面四个服务如果在上面已经打开,则删除前面的"rem"即可
    net stop "Oracle ORCL VSS Writer Service"
    net stop "OracleDBConsoleorcl"
    net stop "OracleJobSchedulerORCL"
    net stop "OracleMTSRecoveryService"  
    echo.---------------------------------------------------------------------------------------+
    echo.
    echo %date%   %time:~0,8%
    ::echo %date年~0,4%:%date月~5,2%:%date日~8,2% 
    ::echo %time%
    echo.
    echo 恭喜您,Oracle相关服务
    echo.                          『OracleOraDb11g_home1ClrAgent』
    echo.                          『OracleOraDb11g_home1TNSListener』
    echo.                          『OracleServiceORCL』
    echo.  
    echo.    已成功关闭!
    echo. 
    echo.---------------------------------------------------------------------------------------+
    goto end
    
    
    :end
    echo 请按任意键退出。
    @Pause>nul
    

    作者:Ryanjie

    出处:http://www.cnblogs.com/ryanjan/

    本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!

    如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!

  • 相关阅读:
    SOAP协议调研
    android 支付宝 沙箱环境配置
    点击两次物理键退出APP
    Android LitePal的简单使用
    多线程
    【Android】15.0 UI开发(六)——列表控件RecyclerView的网格布局排列实现
    【Android】14.0 UI开发(五)——列表控件RecyclerView的瀑布布局排列实现
    【Android】利用回收机制创建ListView列表实现
    BaseActivity
    【MySQL数据库】一些bug的解决
  • 原文地址:https://www.cnblogs.com/ryanjie/p/9403688.html
Copyright © 2011-2022 走看看