在FineReport報表中,連接Oracle數據庫時,有時會出現Cannot create PoolableConnectionFactory的報錯,該錯誤原因是無法創建連接池工廠對象。這時可能是服務器端口地址、端口、數據庫名或者數據庫實例名等信息錯誤。下面詳細介紹java報表工具中如何解決該問題。
1. 可能sid_name出錯,需要修改sid_name
該錯誤常見日志的報錯信息為:
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
該錯誤中slsdb不是正確的sid_name,可能是server_name,因此只要修改sid_name就行。重啟后報表工具就能正常運行。
2. 配置連接池時出錯
該錯誤常見報錯日志為:
TNS-12505:TNS:listener could not resolve SID given in connect descriptor
解決1:看看端口后面的sid是否寫錯。
解決2:在oracle里面用tnsping,檢查一下listener啟動了沒有,再看看listener config file里面有沒有寫上你的SID。
解決3:到服務器上看一下,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服務器$sqlplus/as sysdba SQL>SELECT * FROM V$instance;查看本機上sid的名字。
3. 監聽器不能解析SERVICE_NAME
報錯日志為:
ORA-12514:TNS:監聽進程不能解析在連接描述符中給出的SERVICE_NAME
解決方法:SID_NAME跟安裝oracle時的ORACLE_SID相同,SERVICE_NAME=DBNAME.DB_DOMAIN
DBNAME即是數據庫名,它是oracle數據庫的內部標識,安裝以后輕易不要修改
文章轉載:
了解Java報表工具就從這里開始
posted on 2011-09-05 10:29
season 閱讀(641)
評論(0) 編輯 收藏 所屬分類:
Java報表—問題解析