Spring Web初学者遇ORA-12505错误:SQLDeveloper无法找到SID求助
解决ORA-12505错误的实用步骤
嘿,作为Web编程初学者遇到这个问题确实挺闹心的,别着急!ORA-12505本质上是Oracle监听没法识别你请求的SID,结合你贴的配置文件,我帮你梳理几个肯定能解决问题的步骤:
1. 修复listener.ora里的重复SID配置问题
看你提供的listener.ora,有个SID_DESC块里居然写了两个SID_NAME,这绝对会让监听混乱:
(SID_DESC = (SID_NAME = CLRExtProc) (GLOBAL_DBNAME = XE) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) (SID_NAME = XE) )
把XE的配置单独拆成一个独立的SID_DESC,修改后的SID_LIST_LISTENER应该是这样:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = XE) (GLOBAL_DBNAME = XE) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) ) )
2. 对齐tnsnames.ora和listener.ora的HOST地址
你listener.ora里的HOST是DESKTOP******(打码了),但tnsnames.ora里是DESKTOP-8E8LG2B,这俩必须完全一致!如果你的电脑主机名就是DESKTOP-8E8LG2B,那把listener.ora里的HOST改成这个,不然监听绑定错了地址,自然连不上。
修改后的LISTENER段:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-8E8LG2B)(PORT = 1521)) ) )
3. 重启监听服务让配置生效
改完配置文件必须重启监听,不然白搭:
- 开个管理员权限的CMD
- 先执行
lsnrctl stop停掉监听 - 再执行
lsnrctl start启动监听 - 最后跑一遍
lsnrctl services,看看输出里有没有XE服务的条目,确认监听已经认到了你的XE实例
4. 先验证SQL Developer的连接
先把SQL Developer的连接搞定,再去管Spring的配置:
- 用SID模式连接,SID填
XE,主机名DESKTOP-8E8LG2B,端口1521 - 能连上的话,再去配Spring的JDBC URL,比如用SID的话是
jdbc:oracle:thin:@DESKTOP-8E8LG2B:1521:XE,用service name的话是jdbc:oracle:thin:@//DESKTOP-8E8LG2B:1521/XE
5. 确认Oracle实例是启动状态
万一实例没起来,监听再好也没用:
- 开CMD执行
sqlplus / as sysdba - 如果没启动,输入
startup启动实例 - 再查
select status from v$instance;,确保状态是OPEN
按这些步骤走下来,应该就能解决ORA-12505的问题,继续你的Spring Web学习啦!要是还有问题,把lsnrctl services的完整输出贴出来,我再帮你瞅瞅。
内容的提问来源于stack exchange,提问作者Angel Choi
相关产品推荐
相关产品推荐

