ORA-12505 錯誤解決

在Fedora下安裝了Oracle 10gR2,安裝完成之後,使用netca創建了監聽,創建的時候沒有使用默認的LISTENER和1521端口,而是使用了LISTENER_DELL和1522端口,終端下顯示完成,然後在$ORACLE_HOME/network/admin/tnsnames.ora下增加一個tns別名。

DELL =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SID = dell)
   )
 )
加好之後,如下登錄
sqlplus /nolog
connect scott/tiger@dell
登錄之後就報錯了,ORA-12505,按說監聽方面的錯誤還是很好解決的,結果檢查了監聽也是正常啓動的,但就是無法按照@DELL來登錄,將tnsnames.ora裏面SID = dell 改成 SERVER_NAME = dell  還是一直報錯ORA-12505, TNS:listener does not currently know of SID given in connect descriptor。
     然後發現$ORACLE_HOME/network/admin/目錄下沒有sqlnet.ora文件,運行netca,設置命名方法,運行之後sqlnet.ora文件有了,內容如下:
more sqlnet.oraNAMES.DIRECTORY_PATH= (TNSNAMES)
再次嘗試登錄,發現還是同樣的錯誤。於是突然想到Oracle肯定一直是以LISTENER這個並未啓動的監聽來來Oracle提供監聽信息,而我並沒有使用默認監聽名稱所以造成這個錯誤,於是給監聽文件listener.ora添加SID信息。
LISTENER_DELL =
 (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = avon)(PORT = 1522))
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
   )
 )
SID_LIST_LISTENER_DELL =
 (SID_LIST =
   (SID_DESC =
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
     (PROGRAM = extproc)
   )
 )
添加SID信息 (見藍色加粗字體)
SID_LIST_LISTENER_DELL =
 (SID_LIST =
   (SID_DESC =
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
     (PROGRAM = extproc)
   )
   (SID_DESC =
     (GLOBAL_DBNAME = dell)
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
     (SID_NAME = dell)
   )
 )
加好之後保存退出 :wq
進行測試,還是報錯,發現tnsnames.ora 裏面我設置的是SERVER_NAME,於是給改成SID = dell 再次測試
sqlplus /nolog
SQL> conn scott/tiger@dell
Connected.
OK,一切正常。
後記:在windows下也進行了同樣的嘗試,發現如果不使用LISTENER作爲默認監聽名稱 端口不爲1521的話,也會導致這個錯誤,而解決方法和上面一致。 不過並沒有嘗試名稱爲LISTENER但是端口不爲1521的情況。
C:\Windows\system32>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 13-9月 -2010 23:2
6:34
Copyright (c) 1991, 2006, Oracle.  All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得信息。
LSNRCTL> status
正在連接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS: 無監聽程序
TNS-12560: TNS: 協議適配器錯誤
 TNS-00511: 無監聽程序
  32-bit Windows Error: 61: Unknown error
LSNRCTL> set current_listener LISTENER_DEMO
目前的監聽程序爲 LISTENER_DEMO
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scott-PC)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER_DEMO
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Produ
ction
啓動日期                  13-9月 -2010 23:17:13
正常運行時間              0 天 0 小時 9 分 41 秒
跟蹤級別                  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_dem
o.log
監聽端點概要...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=scott-PC)(PORT=1522)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
 例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
以上爲出現ORA-12505錯誤時,監聽的狀態,
以下爲修改正常,監聽重啓後的狀態
LSNRCTL> set current_listener LISTENER_DEMO
目前的監聽程序爲 LISTENER_DEMO
LSNRCTL> stop
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scott-PC)(PORT=1522)))
命令執行成功
LSNRCTL> start
啓動tnslsnr: 請稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.3.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_demo.log的日誌信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=scott-PC)(PORT=1522)))
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scott-PC)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER_DEMO
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Produ
ction
啓動日期                  13-9月 -2010 23:35:14
正常運行時間              0 天 0 小時 0 分 6 秒
跟蹤級別                  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_dem
o.log
監聽端點概要...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=scott-PC)(PORT=1522)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
 例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "demo" 包含 1 個例程。
 例程 "demo", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章