oracle監聽不能啟動的問題及處理過程!
oracle環境如下:
SQL> select * from V$version
2 ;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
出錯過程回憶:在此之前用windows優化大師對系統注冊表進行了修復!
Q:鏈接oracle時報錯:ORA-12541: TNS: 無監聽程序
A:
1〉查看監聽有沒有啟動:
一:運行lsnrctl
C:\Documents and Settings\Admin>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-4月 -2007 09:
1:43
Copyright (c) 1991, 2005, Oracle. All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得信息。
二:查看stauts
LSNRCTL> status
正在連接到 (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=zxt)(PORT=1521)))
TNS-12541: TNS: 無監聽程序
TNS-12560: TNS: 協議適配器錯誤
TNS-00511: 無監聽程序
32-bit Windows Error: 61: Unknown error
三:發現監聽沒有啟動,現在啟動監聽
LSNRCTL> start
啟動tnslsnr: 請稍候...
Failed to start service, error 3.
TNS-12560: TNS: 協議適配器錯誤
TNS-00530: 協議適配器錯誤
2〉發現監聽啟動不起來,估計是注冊表有點問題,登錄注冊表
C:\Documents and Settings\Admin>regedit
進入注冊表到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb10g_home1TNSListener
發現ImagePath關鍵值沒有了,增加可擴充字符串值,取名為ImagePathImagePath,編輯字符串的數值數據為:G:\oracle\product\10.2.0\db_2\BIN\TNSLSNR(對應oracle的TNSLSNR的位置) ,退出注冊表。
3〉啟動監聽
LSNRCTL> start
啟動tnslsnr: 請稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系統參數文件為d:\oracle\product\10.2.0\db_1\network\admin\listener.ora
寫入d:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zxt)(PORT=1521)))
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期 20-4月 -2007 09:41:29
正常運行時間 0 天 0 小時 0 分 3 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 d:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
監聽程序日志文件 d:\oracle\product\10.2.0\db_1\network\log\listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zxt)(PORT=1521)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
4>監聽啟動成功后嘗試登錄
C:\Documents and Settings\Admin>sqlplus zxt@orcl
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 20 09:42:33 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
輸入口令:
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
登錄成功!
總結:估計是windows優化大師或者別的工具在修復注冊表時候刪掉了ImagePath字段,補上后就可以了!
補充:登錄sqlplus時報
ORA-12514: TNS: 監聽程序當前無法識別連接描述符中請求的服務錯誤!
處理辦法:
1〉oracle_home\NETWORK\ADMIN\tnsnames.ora中修改(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
為(ADDRESS = (PROTOCOL = TCP)(HOST = 本地計算機名)(PORT = 1521)),保存即可。
2〉有的人介紹oracle_home\NETWORK\ADMIN\sqlnet.ora中修改SQLNET.AUTHENTICATION_SERVICES = (NTS)為
SQLNET.AUTHENTICATION_SERVICES = (NONE)
這2種方法,第一個最佳!