历史版本16 :[平台]Oracle数据连接 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。

本文介绍 Oracle 数据连接的步骤。

注:平台数据连接各设置项详细介绍请参考 [平台]数据连接 

2. 配置信息编辑

支持数据库版本驱动下载链接

Oracle 9i  

Oracle_9.2            

Oracle10.2.0

Oracle 11g   

Oracle_11g2         

Oracle_11.2.0.3

Oracle_11.2.0.4

Oracle 10g AIX

FineReport 内置 ojdbc14.jar 驱动包,无需下载
Oracle 19c

ojdbc8.jar

注:将该驱动文件放到工程的 webapps\webroot\WEB-INF\lib 路径下,同时删除 ojdbc14.jar,重启工程


需要注意以下两点:

  • 若使用 Oracle12c 版本数据库,那么需要把 Oracle7 中jdbc/lib目录下的「ojdbc7.jar」放进所在工程的 webapps\webroot\WEB-INF\lib中,同时删除 ojdbc14.jar ,重启工程。Oracle ojdbc 最新下载地址 oracle 官网 

  • 若 FineReport 没有内置 JDBC 数据连接使用的驱动,需要用户自己将对应驱动放进所在工程的webapps\webroot\WEB-INF\lib文件夹下,重启工程。若放入驱动之后还是连接不上,可检查驱动版本是否需要辅助 JAR 包。

3. 操作步骤编辑

3.1 新建数据连接

1)以管理员身份登录数据决策系统,点击「管理系统>数据连接>数据连接管理」,点击「新建数据连接」如下图所示:

注:如果非管理员用户想要配置数据连接,需要管理员给其分配管理系统下数据连接节点的权限,具体操作请查看 数据连接控制 

12.png

2)在「常用」选项下选择「Oracle」,如下图所示:

13.png

3.2 配置数据连接

根据实际情况输入对应的数据连接信息,如下图所示:

14.png
驱动、数据库名称、URL 的介绍如下表所示:

  驱动DatabaseName
URL

oracle.jdbc.driver.

OracleDriver 

sid_name

注:Oracle10g 之后已经不再支持 sid 写法

jdbc:oracle:thin:@ip:port:sid_name

service_name

jdbc:oracle:thin:@//ip:port/service_name 

TNSName

注:需要本地安装 Oracle 客户端并添加 tnsnames.ora 文件

jdbc:oracle:thin:@TNSName

其他设置项介绍如下表所示:

设置项说明
数据连接名称用户可自定义,不可为空
数据库名称/主机/端口所连接的 Oracle 数据库名称、主机、端口号,根据实际情况填写
用户名/密码所连接的 Oracle 数据库的用户名和密码
编码根据实际情况选择编码

3.3 测试连接

点击「测试连接」,或者在「模式」下点击「点击连接数据库」,若弹出连接成功提示框,则表示成功连接上数据库,如下图所示:

15.png

连接成功后,模式会自动选择默认值,如下图所示:

16.png

注1:模式建立的初衷是为了其他功能更容易读取数据库里的数据,选择「默认值」即可。

注2:连接多模式的数据库时使用 SQL 语句需要带上模式名前缀进行搜索,例如 SELECT * FROM "ABBY"."FR_S_UEP"

3)点击右上角「保存」按钮。 

3.4 效果查看

1)Oracle 数据库连接成功后,可在平台对其进行编辑、重命名、复制、删除等操作,如下图所示:

17.png

2)同时,FineReport 设计器中自动生成已配置成功的数据连接,如下图所示:

1586485127738715.png

4. 注意事项编辑

4.1 取消勾选显示Oracle所有表选项

设计器菜单栏「文件>选项>高级」下默认勾选「显示Oracle所有表」,在连接 Oracle 时容易出现性能问题,建议用户取消勾选后再连接。

1599616834384523.png

4.2 Got minus one from a read call

问题描述:

数据连接失败,报错:Got minus one from a read call

1603179045829725.png

原因分析:

当连接数据库时,是通过连接池的机制进行连接的,数据库参数:max-session决定连接池的大小,而应用同样也有一个参数,这个参数表示它连接数据库连接池所占用的最少资源。

例如:总共有 10 个应用需要连接数据库,如果每个应用连接数据库的最小连接数为 10 ,那么10个应用总共会有 100 个连接,这样就要求数据库连接池的 max-session 必须大于100,否则就会报Got minus one from a read call的错误。

解决方案:

1)查看 processes 和 sessions 参数

SQL 语句分别为:

show parameter processes
show parameter sessions

2)修改 processes 和 sessions 值

SQL 语句分别为:

alter system set processes=300 scope=spfile;
alter system set sessions=335 scope=spfile;

3)重启 Oracle

SQL 语句为:

shutdown immediate;
startup;