本文介绍
Oracle 数据连接
中一些报错及解决方案。
注1:所有以 ORA 开头的报错都是 Oracle 数据库报错,可以通过在网络上对报错信息进行搜索,排查报错。
注2:BI 平台 Oracle 连接池在一段时间没有使用会自动释放,之所以查看连接池有之前的连接,是因为后面用户连接时又重新启用,所以不会因为连接一直得不到释放而造成问题。
注3:在 Oracle 9i 版本中,精度为 0 的字段值会被识别成文本而不是数值「该字段值用 column.getSize() 计算得到的是 38 ,所以会被识别成文本属性」;其他版本的 Oracle 未有此现象出现。
问题描述:
通常,单个数据连接对应一个 Oracle 数据库,但是有时可能因为网络或者其他原因,数据库连接不上或不能工作了,则整个项目就不能运行了。
解决方案:
将两台 Oracle 数据库中,配置相同的数据库以及数据库登录的用户名和密码,然后通过配置url让这个数据连接能连接两台机器,即使用一个数据连接连多个数据库。
URL格式:
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =IP1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST =IP2)(PORT = 1521))(LOAD_BALANCE=yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = 数据库名)))
示例1:在 192.168.100.168 和 192.168.100.170 机器上都拥有数据库名为 orcl10g,那么数据连接的 URL 就改成:
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.100.168)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.100.170)(PORT = 1521))(LOAD_BALANCE=yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl10g)))
示例2:在 env.finedevelop.com对应55602 端口拥有一个数据库 initfantlam,同时对应 55502 端口也拥有一个数据库 initfantlam,那么数据库连接的就改成:
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =env.finedevelop.com)(PORT = 55602))(ADDRESS = (PROTOCOL = TCP)(HOST =env.finedevelop.com)(PORT = 55502))(LOAD_BALANCE=yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = initfantlam)))
问题描述:
Oracle11无法取 DB 表,日志报错如下图所示:
解决方案:
点击下载:
orai18n.jar
,把orai18n.jar放到工程的
webapps\webroot\WEB-INF\lib
下,并重启工程。
问题描述:
Oracel 连接报错:
ORA-28040: No matching authentication protocol;
原因分析:
驱动版本不适配。
解决方案:
点击下载:
ojdbc7.jar
,把 ojdbc7.jar 放到工程的
webapps\webroot\WEB-INF\lib
下,并重启工程。