Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日志存储Oracle驱动程序问题_Java_Oracle_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch,logstash,Java,Oracle,elasticsearch,Logstash" /> elasticsearch,logstash,Java,Oracle,elasticsearch,Logstash" />

Java 日志存储Oracle驱动程序问题

Java 日志存储Oracle驱动程序问题,java,oracle,elasticsearch,logstash,Java,Oracle,elasticsearch,Logstash,我正在尝试使用连接到Oracle DB的JDBC输入插件来设置简单的Logstash 7.6.0管道 无论我在尝试什么,我总是会遇到同样的错误: 2052 LogStash::PluginLoadingError 2052 oracle.jdbc.OracleDriver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library? 2052

我正在尝试使用连接到Oracle DB的JDBC输入插件来设置简单的Logstash 7.6.0管道

无论我在尝试什么,我总是会遇到同样的错误:

  2052     LogStash::PluginLoadingError
  2052     oracle.jdbc.OracleDriver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library?
  2052       C:/Apps/logstash/logstash-7.6.0/vendor/bundle/jruby/2.5.0/gems/logstash-integration-jdbc-5.0.0/lib/logstash/plugin_mixins/jdbc/jdbc.rb:179:in `open_jdbc_connection'
  2052       C:/Apps/logstash/logstash-7.6.0/vendor/bundle/jruby/2.5.0/gems/logstash-integration-jdbc-5.0.0/lib/logstash/plugin_mixins/jdbc/jdbc.rb:242:in `execute_statement'
这似乎只影响Oracle驱动程序。我尝试过使用H2(详情如下),PostgreSQL。它起作用了

我在Docker映像中运行logstash,所以我在本地进行了尝试,得到了完全相同的结果

  • 我重新下载了驱动程序jar(参见下面的url)
  • 我检查了连接字符串(使用一个简单的java程序,见下文)
  • 我试着使用H2,并且工作正常(参见下面的配置)
  • 我尝试添加日志(见下文)
  • 我试过“oracle.jdbc.OracleDriver”和“oracle.jdbc.driver.OracleDriver”
  • 我在“jdbc_驱动程序_库”中使用错误的文件名进行了测试,得到了不同的错误
  • 我看了看驱动程序罐里面,类就在那里。(见下文)
我别无选择了

一些细节:

这是我的Oracle配置

input {
  jdbc {

    schedule => "*/5 * * * * *"

    jdbc_connection_string => "jdbc:oracle:thin:@host:1521/service_name"
    jdbc_driver_library => "C:/Apps/ORACLE_DRIVER/ojdbc7.jar"
    jdbc_driver_class => "oracle.jdbc.OracleDriver"
    statement => "SELECT p.* FROM  person p "
    jdbc_user => "x"
    jdbc_password => "y"

  }
}

output {
  stdout {
    codec => rubydebug
  }

}
最初,我从本地maven“.m2”存储库获得了驱动程序,为了确保我从以下位置重新下载了驱动程序:

如果我错拼了“jdbc_驱动程序_库”,我会得到另一个错误,因此我知道我的路径是正确的

我看了一下罐子里面,我看到了司机:

我创建了这个简单的java类来测试驱动程序/连接字符串,它工作得很好:

package oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

public class TestConnection {
    public static void main(String[] args) {

        try {
            Class.forName("oracle.jdbc.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:1521/service_name", "x", "y");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT p.* FROM person p");
            while (rs.next()) {                
                System.out.println(rs.getString(1) + " : " + rs.getString(2));
            }
            System.out.println(new Date());
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
所以我继续,尝试了一个示例H2数据库,它在第一次尝试中完美地工作了,下面是可以工作的配置(运行H2 tcp服务器)。与Oracle配置几乎相同

input {
  jdbc {

    schedule => "*/5 * * * * *"

    jdbc_connection_string => "jdbc:h2:tcp://localhost/~/test"
    jdbc_driver_library => "C:/Apps/h2/h2.jar"
    jdbc_driver_class => "org.h2.Driver"
    statement => "SELECT p.* FROM public.person p"
    jdbc_user => "sa"
    jdbc_password => ""

  }
}

output {
  stdout {
    codec => rubydebug
  }

}
我尝试在“logstash/config/log4j2.properties”中添加日志

但我什么都没有了

我灵感不足

有什么想法吗


谢谢

我终于在这里找到了答案:

需要:

jdbc_driver_class => "Java::oracle.jdbc.OracleDriver
为什么要添加这个Java::前缀?为什么在没有它的情况下,它可以与其他驱动程序一起工作?我不明白

jdbc_driver_class => "oracle.jdbc.OracleDriver"
jdbc_driver_class => "Java::oracle.jdbc.OracleDriver