在FineReport報(bào)表中,連接Oracle數(shù)據(jù)庫(kù)時(shí),有時(shí)會(huì)出現(xiàn)Cannot create PoolableConnectionFactory的報(bào)錯(cuò),該錯(cuò)誤原因是無(wú)法創(chuàng)建連接池工廠對(duì)象。這時(shí)可能是服務(wù)器端口地址、端口、數(shù)據(jù)庫(kù)名或者數(shù)據(jù)庫(kù)實(shí)例名等信息錯(cuò)誤。下面詳細(xì)介紹java報(bào)表工具中如何解決該問(wèn)題。
1. 可能sid_name出錯(cuò),需要修改sid_name
該錯(cuò)誤常見(jiàn)日志的報(bào)錯(cuò)信息為:
ORA-12505:TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
172.30.10.15:1521:slsdb
該錯(cuò)誤中slsdb不是正確的sid_name,可能是server_name,因此只要修改sid_name就行。重啟后報(bào)表工具就能正常運(yùn)行。
2. 配置連接池時(shí)出錯(cuò)
該錯(cuò)誤常見(jiàn)報(bào)錯(cuò)日志為:
TNS-12505:TNS:listener could not resolve SID given in connect descriptor
解決1:看看端口后面的sid是否寫(xiě)錯(cuò)。
解決2:在oracle里面用tnsping,檢查一下listener啟動(dòng)了沒(méi)有,再看看listener config file里面有沒(méi)有寫(xiě)上你的SID。
解決3:到服務(wù)器上看一下,listener.ora
SID_LIST_LISTENER=
(SID_DESC=
(GLOBAL_DBNAME=oracle9i)
(ORACLE_HOME=/opt/oracle9i/product/9.2.0)
(SID_NAME=ORCL)
)
你的url里面可能用的是上面的GLOBAL_DBNAME的值,就是用的SERVICE_NAME,替換成SID_NAME,也可以登錄sqlplus服務(wù)器$sqlplus/as sysdba SQL>SELECT * FROM V$instance;查看本機(jī)上sid的名字。
3. 監(jiān)聽(tīng)器不能解析SERVICE_NAME
報(bào)錯(cuò)日志為:
ORA-12514:TNS:監(jiān)聽(tīng)進(jìn)程不能解析在連接描述符中給出的SERVICE_NAME
解決方法:SID_NAME跟安裝oracle時(shí)的ORACLE_SID相同,SERVICE_NAME=DBNAME.DB_DOMAIN
DBNAME即是數(shù)據(jù)庫(kù)名,它是oracle數(shù)據(jù)庫(kù)的內(nèi)部標(biāo)識(shí),安裝以后輕易不要修改
posted on 2011-09-05 10:29
season 閱讀(641)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
Java報(bào)表—問(wèn)題解析