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

目录:

1. 概述编辑

ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

本章我们将介绍如何在 FineBI 中连接 Oracle 数据库。

注:数据连接各设置项详细介绍请参见:配置数据连接

2. 配置信息编辑

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

Oracle 9.2.X

Oracle 10.2.0

Oracle 11.2.0

Oracle 12.1.0

FineBI 已内置 ojdbc14.jar 驱动包,无需下载

Oracle 19c

ojdbc8.jar

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

3. 操作步骤编辑

3.1 新建数据连接

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

22.png

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

23.png

3.2 配置数据连接

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

24.png

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

 驱动 Database Name  URL

oracle.jdbc.driver

.OracleDriver   

sid_name
注:Oracle10g 之后已经不再支持 sid 写法
jdbc:oracle:thin:@ip:port:sid_name
service_namejdbc:oracle:thin:@//ip:port/service_name

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

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

3.3 测试连接

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

25.png

注:连接成功后,模式会自动选择默认值。

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

3.4 效果查看

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

26.png

4. 注意事项编辑

  •  在 Oracle 9i 版本中,精度为 0 的字段值会被识别成文本而不是数值「该字段值用 column.getSize() 计算得到的是 38 ,所以会被识别成文本属性」;其他版本的 Oracle 未有此现象出现。

  • BI 平台 Oracle 连接池在一段时间没有使用会自动释放,之所以查看连接池有之前的连接,是因为后面用户连接时又重新启用,所以不会因为连接一直得不到释放而造成问题。

4.1 报错相关

  • 在 2019-01-15 之前的版本中,若为 Spider 引擎开启实时数据,直连 Oracle 数据库的话,超过 22 位的字段需要使用 SQL 语句转义添加到 FineBI 中。原因是 FineBI 直连会在字段前加 8 位字符,而 Oracle 超过 30 位标识符在将表添加到 FineBI 中时就会报错 ORA-000972

    注:在 2019-01-15 之后的 FineBI5.1 版本已经修复该问题,可开启实时数据,直接添加最多 30 位的字段/表名至 FineBI 中。

    SQL 转义语句可使用:select “超过22位字段名的字段” as 转义名 from 表,如下图所示:

    image.png

  • 所有以 ORA 开头的报错都是 Oracle 数据库报错,可以通过在网络上对报错信息进行搜索,排查报错。如下图所示:

    image.png

4.2 ONS configuration failed

问题描述:

Oracle19c 数据连接报错:create connection error java.lang.IllegalArgumentException: ONS configuration failed

如下图所示:

image.png

解决方案:

Linux/Unix 修改 startWebLogic.sh 文件,搜索「setDomainENV.sh」,然后在「.${DOMAIN_HOME}」这句的上一行插入「JAVA_OPTIONS="-Doracle.jdbc.fanEnabled = false"」,如下图所示:

1600675821247567.png

4.3 表名/表头乱码

问题描述:

Oracle 数据连接,添加 DB 表,表名/表头乱码。

解决方案:

将 Oracle 数据库的编码改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK

4.4 Oracle 11 无法读取 DB 表

问题描述:

Oracle11无法取 DB 表,日志报错如下图所示:

3.png

解决方案:

点击下载:orai18n.jar,把orai18n.jar放到工程的webapps\webroot\WEB-INF\lib下,并重启工程。

4.5 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;

4.6 数据连接成功后无法选择模式

问题描述:

Oracle 版本 9.2.0.4 ,使用 2020-01-15 的 JAR ,连接成功后无法选择模式,也不显示数值。

原因分析:

驱动版本不适配。

解决方案:

根据实际情况换成支持的驱动,驱动下载链接:驱动下载官方链接

示例:换成 ojdbc6 驱动才可以正常显示数据和选择模式。