使用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:\app\Administrator\product\11.2.0\dbhome_2\NETWORK

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:\oracle\product\10.2.0\db_1\network\admin\listener.ora
寫入D:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息
寫入D:\oracle\product\10.2.0\db_1\network\trace\listener.trc的跟蹤信息
跟蹤級別當前為0

pid=1704開始

監聽

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
監聽該對象時出錯:(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=\\.\pipe\EXTPROC1ipc)))

第二步:查看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的解決方法。掃一掃二維碼:




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM