12505錯誤的出現原因是「service_name」和sid不一致。解決方法:1、使用「select INSTANCE_NAME from v$instance」取得資料庫中目前的sid;2、將取得的sid填入資料庫程式的連結串中即可。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
出現12505提示已經很明確了,找不到sid對應的實例庫,也就是Oracle的「service_name」和sid不一致。
解決步驟
1、執行這條語句:
select INSTANCE_NAME from v$instance;
得到實例庫的sid
2、然後再用該sid登入系統即可
#ORA-12505:
之前用PL/SQL DEVELOPER和SQLPLUS 登入資料庫都沒有問題,就是應用程式透過JDBC連接Oracle時無法成功連接,出現ORA-12505錯誤listener does not currently know of SID given in connect descriptor......。
經過查找,發現Oracle的service_name 和sid_name不一致,而PL/SQL DEVELOPER和SQLPLUS 採用service_name進行連接,而應用程式是按照sid_name進行連接,所以出現PL/SQL DEVELOPER和SQLPLUS 能夠連接而應用程式卻無法連線的問題。
問題描述:
今天使用jdbc連接oracle 10.2.0.1.0 資料庫的時候出現了下列錯誤:
Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
而直接透過plsql可以正常連接資料庫,或者可以透過sqlplus 連接資料庫
經過debug和尋找相關的資料發現問題原因如下:
jdbc連接資料庫的時候,需要使用資料庫的sid_name,而不是資料庫的services_name
而使用plsql連接資料庫的時候,只需要資料庫的services_name即可,所以修改連接字串中的services_name 為sid_name
推薦教學:《Oracle影片教學》
以上是Oracle的12505錯誤怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!