今天在使用SQL Developer的時候連不上去,報ORA-12505錯誤,但是SQLPLUS可以連接。
檢查服務名,是OracleServiceORCL,那SID應當就是orcl,但是使用該SID仍然無法連接。
查閱資料后解決方法如下:
1. 打開數據庫實例的目錄(我的是C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN)
找到listener.ora文件(listener監聽器進程的配置文件),使用文本編輯器打開。
內容如下:
# listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\Administrator
2. 添加SID信息(紅色字體部分)
# listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = orcl)
) )
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\Administrator
3. 重新啟動 OracleServiceORCL 和 OracleOraDb11g_home1TNSListener 服務。最后試一試,連接成功!
附:
PL/SQL DEVELOPER 和 SQLPLUS 采用 service_name 進行連接
而應用程序是按照 sid_name 進行連接,所以出現 PL/SQL DEVELOPER和SQLPLUS 能夠連接而應用程序卻無法連接的問題。
使用 SELECT INSTANCE_NAME FROM V$INSTANCE 語句,就可以查看當前數據庫實例的sid_name了。
2. 添加SID信息(紅色字體部分)