很多時候為了優化我們的啟動項把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
監聽:
(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
第三種:重置監聽程序,以及配置本地網絡名稱
我的電腦是window 7,所以從開始菜單中找到oracle的安裝目錄,找到Net Configuration Assistant打開之後,進行配置。主要配置是都過oracle自帶的管理工具實現的,具體如下圖: