12505錯(cuò)誤的出現(xiàn)原因是“service_name”和sid不一致。解決方法:1、使用“select INSTANCE_NAME from v$instance”獲取數(shù)據(jù)庫中當(dāng)前的sid;2、將獲取到的sid填入數(shù)據(jù)庫程序的連接串中即可。
本教程操作環(huán)境:Windows10系統(tǒng)、oracle 11g版、Dell G3電腦。
Oracle的12505錯(cuò)誤怎么解決
出現(xiàn)12505提示已經(jīng)很明確了,找不到sid對應(yīng)的實(shí)例庫,即Oracle的“service_name”和sid不一致。
解決步驟
1、 執(zhí)行這條語句:
select?INSTANCE_NAME?from?v$instance;
得到實(shí)例庫的sid
2、然后再用該sid登錄系統(tǒng)即可
ORA-12505:
之前用PL/SQL DEVELOPER和SQLPLUS 登錄數(shù)據(jù)庫都沒有問題,就是應(yīng)用程序通過JDBC連接Oracle時(shí)無法成功連接,出現(xiàn)ORA-12505錯(cuò)誤listener does not currently know of SID given in connect descriptor……。
經(jīng)過查找,發(fā)現(xiàn)Oracle的service_name 和sid_name不一致,而PL/SQL DEVELOPER和SQLPLUS 采用service_name進(jìn)行連接,而應(yīng)用程序是按照sid_name進(jìn)行連接,所以出現(xiàn)PL/SQL DEVELOPER和SQLPLUS 能夠連接而應(yīng)用程序卻無法連接的問題。
問題描述:
今天使用jdbc連接oracle 10.2.0.1.0 數(shù)據(jù)庫的時(shí)候出現(xiàn)了下列錯(cuò)誤:
Connection?refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
而直接通過plsql可以正常連接數(shù)據(jù)庫,或者可以通過sqlplus 連接數(shù)據(jù)庫
經(jīng)過debug和查找相關(guān)的資料發(fā)現(xiàn)問題原因如下:
jdbc連接數(shù)據(jù)庫的時(shí)候,需要使用數(shù)據(jù)庫的sid_name,而不是數(shù)據(jù)庫的services_name
而使用plsql連接數(shù)據(jù)庫的時(shí)候,只需要數(shù)據(jù)庫的services_name即可,所以修改連接字符串中的services_name 為sid_name
推薦教程:《Oracle視頻教程》