与Oracle Wallet的Logstash连接

gev0vcfq  于 2022-12-03  发布在  Oracle
关注(0)|答案(2)|浏览(160)

我在使用Oracle Wallet连接Logstash时遇到问题。我得到的登录名/口令无效,即使我尝试通过Wallet连接,但未使用所述登录名/口令。

[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
所以我已经无计可施了(尽管时间很短)。如果有人能指出我错过了什么,我将不胜感激!

8yparm6h

8yparm6h1#

因此,我缺少的是java属性wallet_location,在我的例子中,它被附加为与TNS_ADMIN相同的路径。
它需要在启动Logstash时由启动JRE的脚本加载,如下所示:
-Doracle.net.钱包位置=${钱包路径}

yhxst69z

yhxst69z2#

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

相关问题