如何从oracle源与streamsets连接

时间:2017-08-22 11:19:14

标签: oracle ojdbc streamsets

我想从oracle创建一个源代码。所以我选择原点oracle cdc。然后我配置了每个参数:

  • 架构名称
  • 用户名
  • 密码
  • JDBC连接字符串

    但是当我运行这个过程时,我会在我的日志中找到:

    2017-08-22 11:07:22,447 test / testb156f588-dbd7-4e4c-8896-caf658d14d77连接数据库时出错ERROR

    com.streamsets.pipeline.api.StageException:JDBC_06 - 无法初始化连接池:java.lang.RuntimeException:无法获取jdbcUrl = jdbc的驱动程序实例:oracle:thin:@(DESCRIPTION = (ENABLE = BROKEN) (ADDRESS =(PROTOCOL = TCP)(HOST = myhost)(PORT = myport)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.WORLD)))     在com.streamsets.pipeline.lib.jdbc.JdbcUtil.createDataSourceForRead(JdbcUtil.java:638)     在com.streamsets.pipeline.stage.origin.jdbc.cdc.oracle.OracleCDCSource.init(OracleCDCSource.java:643)     在com.streamsets.pipeline.api.base.BaseStage.init(BaseStage.java:52)     在com.streamsets.pipeline.configurablestage.DStage.init(DStage.java:40)     在com.streamsets.datacollector.runner.StageRuntime.init(StageRuntime.java:156)     在com.streamsets.datacollector.runner.StagePipe.init(StagePipe.java:105)     在com.streamsets.datacollector.runner.StagePipe.init(StagePipe.java:53)     在com.streamsets.datacollector.runner.Pipeline.initPipe(Pipeline.java:299)     在com.streamsets.datacollector.runner.Pipeline.init(Pipeline.java:214)     在com.streamsets.datacollector.execution.runner.common.ProductionPipeline.run(ProductionPipeline.java:96)     在com.streamsets.datacollector.execution.runner.common.ProductionPipelineRunnable.run(ProductionPipelineRunnable.java:79)     在com.streamsets.datacollector.execution.runner.standalone.StandaloneRunner.start(StandaloneRunner.java:646)     在com.streamsets.datacollector.execution.runner.common.AsyncRunner.lambda $ start $ 3(AsyncRunner.java:143)     at com.streamsets.pipeline.lib.executor.SafeScheduledExecutorService $ SafeCallable.call(SafeScheduledExecutorService.java:233)     at java.util.concurrent.FutureTask.run(FutureTask.java:266)     at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)     at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)     在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745) 引起:java.lang.RuntimeException:无法获取jdbcUrl = jdbc的驱动程序实例:oracle:thin:@(DESCRIPTION = (ENABLE = BROKEN) (ADDRESS =(PROTOCOL = TCP)(HOST = myhost)(PORT = myport)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.WORLD)))     在com.zaxxer.hikari.util.DriverDataSource。(DriverDataSource.java:88)     在com.zaxxer.hikari.pool.PoolElf.initializeDataSource(PoolElf.java:157)     在com.zaxxer.hikari.pool.HikariPool。(HikariPool.java:113)     在com.zaxxer.hikari.HikariDataSource。(HikariDataSource.java:73)     在com.streamsets.pipeline.lib.jdbc.JdbcUtil.createDataSourceForRead(JdbcUtil.java:630)     ......还有19个 引起:java.sql.SQLException:没有合适的驱动程序     在java.sql.DriverManager.getDriver(DriverManager.java:315)     在com.zaxxer.hikari.util.DriverDataSource。(DriverDataSource.java:81)     ......还有23个

你有什么想法吗?

3 个答案:

答案 0 :(得分:1)

似乎没有设置环境变量 STREAMSETS_LIBRARIES_EXTRA_DIR ,这是安装外部库安装过程的一部分。

根据Data Collector的初始化样式,有三种安装类型:

  • 手动 开始
  • 使用 SysV Init (由 CentOS 6,Oracle Linux 6,Red Hat支持 Enterprise Linux 6 Ubuntu 14.04 LTS
  • 使用 Systemd Init (受 CentOS 7,Oracle Linux 7,Red Hat支持 Enterprise Linux 7 Ubuntu 16.04 LTS

如果要安装 SDC

  • 手动 开始,然后变量 STREAMSETS_LIBRARIES_EXTRA_DIR 应该由

    从命令行设置
    export STREAMSETS_LIBRARIES_EXTRA_DIR="/opt/streamsets-data-collector/streamsets-data-collector-3.15.0/streamsets-libs-extras/"
    
  • 服务 开始,则该参数已经存在 在 $ SDC_DIST / libexec / _sdc 文件中,作为

    STREAMSETS_LIBRARIES_EXTRA_DIR="${STREAMSETS_LIBRARIES_EXTRA_DIR:=${SDC_DIST}/streamsets-libs-extras}" 
    

其中 $ SDC_DIST 变量是SDC安装文件( tarball RPM )的提取目录。 / p>

,并且应该将相同的路径添加到文件 $ SDC_CONF / sdc-security.policy

grant codebase "file:///opt/streamsets-data-collector/streamsets-data-collector-3.15.0/streamsets-libs-extras/-" {
  permission java.security.AllPermission;
};

其中 $ SDC_CONF 的变量通常由路径 / etc / sdc

定义

现在,我们准备登录Data Collector Console,以便按照以下步骤添加 JDBC外部库

  1. 在Data Collector的右上角工具栏中,单击 Package 经理图标: enter image description here

  2. 在导航面板中,单击外部库

enter image description here

Data Collector列出了所有当前安装的外部库。

  1. 立即在右上方工具栏下,单击安装 外部库图标:

enter image description here

  1. 安装外部库对话框中,选择阶段 文件系统中的库 JDBC (假设您已经注册并下载了 streamsets-datacollector-jdbc-lib );

enter image description here

并选择 .jar 文件,例如 ojdbc8.jar ,该文件可以从JDBC and UCP Downloads page下载(在我的情况下,我选择了名为我的远程数据库版本是 Oracle Database 12c第2版(12.2.0.1)驱动程序

  1. 最后一步,请不要忘记单击 Install External Libraries 窗口中的 Cancel ,然后运行以下命令:

    service sdc restart ( for SysV Init)
    

    systemctl restart sdc ( for Systemd Init )
    

如果您是从命令行手动启动Data Collector的,则可以在 Install External Libraries 窗口中单击 Restart Data Collector

答案 1 :(得分:0)

旧版配置标签下,尝试将 JDBC驱动程序类名称指定为 oracle.jdbc.driver.OracleDriver

答案 2 :(得分:0)

我必须在存储库

下添加ojdbc jar
/opt/streamsets-extra/streamsets-datacollector-jdbc-lib/lib