Mondrian无法将Oracle TNS名称用作JDBC数据源

时间:2018-08-08 14:41:55

标签: oracle pentaho olap mondrian tns

有人可以帮助解决以下问题:

我在Pentaho BA Server中创建了2个JDBC数据源:

  1. Oracle Connection,具有提供的用户凭据,主机,端口和SID作为数据库名称。
  2. 使用提供的用户凭证和TNS名称作为数据库名称的Oracle Connections,因为如果有SERVICE NAME,那么我应该使用TNS名称。

以上两个连接均能ping通。

当我将#1选项用作我的Cube模式的JDBC数据源时,一切正常。

但是,当我使用#2选项时,无法加载多维数据集,并且日志文件中发生以下异常:

C:\Users\lh131\AppData\Local\Programs\MiKTeX 2.9

所以,问题是,是否可以使用#2选项,因为我只有服务名才能连接数据库。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

该问题背后的原因是连接名称。 基本名称中PSW和BA服务器的连接名称应相同。

答案 1 :(得分:1)

我找到了一种解决方法,但是由于我正在搜索可与TNSName一起使用的解决方案,因此不会将其标记为答案。

在下一页http://www.orafaq.com/wiki/JDBC中,我发现了JDBC URL的3种有效方式:

  1. 通过SID
    jdbc:oracle:thin:[<user>/<password>]@<host>[:<port>]:<SID>

例如:jdbc:oracle:thin:@myhost:1521:orcl

  1. 通过服务名称
    jdbc:oracle:thin:[<user>/<password>]@//<host>[:<port>]/<service>

例如:jdbc:oracle:thin:@//myhost:1521/orcl

  1. 通过TNSName
    jdbc:oracle:thin:[<user>/<password>]@<TNSName>

例如:jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service>)))

这是我在问题中描述的案例的屏幕截图:
对于#1选项:
使用提供的用户凭证,主机,端口和SID作为数据库名称的Oracle Connection enter image description here

对于#2选项:
使用提供的用户凭证和TNS名称作为数据库名称的Oracle Connections,因为如果有SERVICE NAME,那么我应该使用TNS名称。 enter image description here

最后,适用于我当前情况的解决方案(请注意,服务名称以斜杠提供): enter image description here