Logstash连接Oracle钱包



我使用Oracle钱包连接Logstash有问题。我得到一个无效的登录名/密码,即使我试图通过钱包连接,没有使用该登录名/密码。


[ERROR][logstash.inputs.jdbc ] Unable to connect to database. Tried 2 times {:error_message=>"Java::JavaSql::SQLException: ORA-01017 Invalid Username/Password"}

我的Logstash jdbc输入文件:

input {
jdbc {
jdbc_driver_library => "${ORACLE_HOME}/dmu/jlib/ojdbc10.jar,${ORACLE_HOME}/ucp/lib/ucp.jar,${ORACLE_HOME}/jlib/oraclepki.jar,${ORACLE_HOME}/jlib/osdt_cert.jar,${ORACLE_HOME}/jlib/osdt_core.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:/@name_high?TNS_ADMIN=${ORACLE_HOME}/network/admin/wallet"
jdbc_user => ""
schedule => "* * * * * *"
statement => "SELECT * from table"
connection_retry_attempts => 2
connection_retry_attempts_wait_time => 5
jdbc_pool_timeout => 20
jdbc_validation_timeout => 600
}
}

所以我使用以下驱动程序:

  • ojdbc10.jar

  • ucp.jar

  • oraclepki.jar

  • osdt_cert.jar

  • osdt_core.jar

  • 我确保每个环境变量路径都是正确的,每个访问权限都正确设置。

  • 我相信连接字符串语法是正确的,因为它确实找到了tnsnames。Ora,并尝试连接到正确的主机、端口、sid。

  • 我省略了jdbc输入中的字段jdbc_password,因为它不是必需的,我不希望jdbc认为我想使用它。我留下了jdbc_user字段,但空的,因为它显然是必需的,即使我试图不使用它。

  • 我可以使用sqlplus连接到数据库,如下所示:

    sqlplus /@name_high

所以我缺少的是java属性wallet_location,它在我的情况下附加到与TNS_ADMIN相同的路径。

当启动Logstash时,它需要由启动JRE的脚本加载:

-Doracle.net.wallet_location = $ {WALLET_PATH}

您可以参考博客了解不同版本驱动程序的步骤。此外,您可以参考博客了解设置连接属性的不同方法。

相关内容

  • 没有找到相关文章

最新更新