程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 使用PLSql連接Oracle時報錯ORA-12541:TNS:無監聽程序

使用PLSql連接Oracle時報錯ORA-12541:TNS:無監聽程序

編輯:Oracle教程

使用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。

 

機名輸入localhost或127.0.0.1都會提示無監聽程序。由於自動分配的IP地址會有變動,所以將oracle值中的host改成本機的計算機名,保存修改後的tnsnames.ora。再次連接(10.1.10.183/orcl)數據庫,出錯問題解決。

 

第二種方法是具體查看oracle的系統。

具體流程如下:

第一步:查看oracle的log日志。

發現下面錯誤:
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自帶的管理工具實現的,具體如下圖:

\\\\\\\\\\\\\\\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved