当前位置: 首页 > 知识库问答 >
问题:

配置Pentaho数据集成以连接到Oracle DB

钮兴安
2023-03-14

我已经用DB、user配置了Oracle VirtualBox,并填充了一个小DB。在同一台机器上,我安装了Pentaho Data Integration(Spoon),JDBC驱动程序,我正试图创建到Oracle DB的连接,但没有成功。这是我键入凭据/数据的地方:

主机名:localhost

数据库名称:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))

端口号:1521

用户名:SYSTEM

密码:oracle

Error connecting to database [oraConn12c] : org.pentaho.di.core.exception.KettleDatabaseException: 
Error occurred while trying to connect to the database

Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
IO Error: NL Exception was generated TNS-04605: Invalid syntax error: Unexpected char or LITERAL "(" before or at  ( DESCRIPTION =


org.pentaho.di.core.exception.KettleDatabaseException: 
Error occurred while trying to connect to the database

Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
IO Error: NL Exception was generated TNS-04605: Invalid syntax error: Unexpected char or LITERAL "(" before or at  ( DESCRIPTION =


    at org.pentaho.di.core.database.Database.normalConnect(Database.java:459)
    at org.pentaho.di.core.database.Database.connect(Database.java:357)
    at org.pentaho.di.core.database.Database.connect(Database.java:328)
    at org.pentaho.di.core.database.Database.connect(Database.java:318)
    at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:80)
    at 
.......
... more  .....
Caused by: java.sql.SQLRecoverableException: IO Error: NL Exception was generated TNS-04605: Invalid syntax error: Unexpected char or LITERAL "(" before or at  ( DESCRIPTION =
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:569)
    ... 52 more
Caused by: oracle.net.ns.NetException: NL Exception was generated TNS-04605: Invalid syntax error: Unexpected char or LITERAL "(" before or at  ( DESCRIPTION =
    at oracle.net.resolver.AddrResolution.resolveAddrTree(AddrResolution.java:733)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:493)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496)
    ... 58 more

Hostname       : localhost
Port           : 1521
Database name  : (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)))

如何配置它以将Pentaho/Spoon连接到Oracle DB?oracle DB似乎运行良好,我也尝试过我创建的其他用户/html" target="_blank">数据库,但结果是一样的。

共有3个答案

席兴平
2023-03-14

正在添加

(FAILOVER_MODE=(type=select)(method=basic)(retries=20)(delay=3))))

最后,我们终于解决了这个问题。

凤伟泽
2023-03-14

我有一个类似的问题。可以为客户端工具解决这个问题,但不能为点菜服务器解决。

我用JNDI连接修复了它。

把这个放到你的pdi\simple-jdni\jdbc.properties

mydb/type=javax.sql.DataSource
mydb/driver=oracle.jdbc.driver.OracleDriver
mydb/url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS(PROTOCOL=TCP)(HOST=myhost)(PORT=myport)))(CONNECT_DATA=(SERVICE_NAME=myservicename)))
mydb/user=myuser
mydb/password=mypassword

您repositories.xml中的连接:

<connection>
<name>JNDI</name>
<server>myserver</server>
<type>ORACLE</type>
<access>JNDI</access>
<database>mydb</database>
<port>myport</port>
<username>myuser</username>
<password>mypassword</password>
<servername/>
<data_tablespace/>
<index_tablespace/>
<attributes>
  <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  <attribute><code>PORT_NUMBER</code><attribute>myport</attribute></attribute>
  <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
彭鸿文
2023-03-14

我能够通过从连接窗口中删除“主机名”和“端口号”详细信息来解决同样的问题。只留下“DB名称”字符串。

 类似资料:
  • 问题内容: 大家好,我使用Hibernate + Struts2 + Tomcat6 + Mysql作为我的J2EE框架。我一直在使用hibernate的内置连接池机制,但事实证明,在8小时后mysql关闭其连接的地方,这是一个问题。无论如何,我在Google上搜索了一下,发现我应该通过JNDI数据源获得连接,但是我无法获得关于此的完整的教程。我应该采取什么步骤呢?请提供足够的详细信息,对此我有点

  •   //默认Mysql数据库 'default_mysql_config' => 'mysql', //Mysql数据库配置 'mysql' => array( 'host'  => 'localhost', 'port' => '3306', 'username' => 'root', 'password' => '', 'db_name' => 'g-framework', 'db_prefi

  • 由于基于HTTP协议的Web程序是无状态的,因此,在应用程序中使用JDBC时,每次处理客户端请求时都会重新建立数据库连接。如果客户端的请求非常频繁,服务端在处理数据库时将会消耗非常多的资源。因此,在Tomcat中提供了数据库连接池技术。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个数据库连接。在使用完一个数据库连接后,将其归还数据库连接池

  • 我一整天都在不断收到这个日志信息。 2016-10-12 21:32:05,696(conf-file-poller-0)[DEBUG-org . Apache . FLUME . node . pollingpropertiesfileconfigurationprovider $ filewatcherrunnable . run(pollingpropertiesfileconfigurat

  • 我有一个Spring Boot 5应用程序,我也在一台IBM MQ服务器上运行它。 现在我们希望它连接到三个或更多 MQ 服务器。我现在的目的是将 XY 连接信息添加到环境中,然后我得到 XY MQConnectionFactory bean 和处理所需的所有其他 bean。 目前这是我所拥有的: 但这是相当静态的。有没有一种优雅的方式来做到这一点? 我偶然发现了集成流。这可能是一个有效的解决方案

  • 我有一个基于Spring框架的项目,它只基于Java配置进行初始化。这意味着不需要使用web.xml文件。 您可以在下面的图像中看到项目的结构: Java 7 Spring framework 4.2.1.发布 HibernateORM 5.0.4.final Spring Tool Suite IDE 3.6.2 Maven3 Tomcat 7 数据源 而SystemSettings保存数据库的