Oracle ORA-12541:TNS:無監聽程序

Oracle ORA-12541:TNS:無監聽程序

標籤: Oracle DataBase數據庫


今天使用Oracle數據庫,使用可視化鏈接工具鏈接測試環境的數據庫時提示無監聽程序,最後在老師幫助下終於搞定了!︿( ̄︶ ̄)︿windows


問題

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 來開啓監聽服務oracle

    若是監聽服務仍是沒有重啓,而且提示:
    正在鏈接到 (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

『』『』code

相關文章
相關標籤/搜索