#logstashでOracleのデータを取得する
logstash-input-jdbcのドキュメントには、MySQLの例でOracleの例がないので、その備忘録です。
大事な注意点を3つ書きます。
試した環境
- logstash 2.2.1
- Oracle12c
- Windows7Pro 64bit
- JDK8
#設定ファイル
完成品サンプル。
input {
jdbc {
jdbc_driver_library => "ojdbc7.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@オラクルのホスト:1521/SID"
jdbc_user => "接続ユーザ"
jdbc_password => "パスワード"
schedule => "*/15 * * * *"
statement => "select * from hogehoge"
last_run_metadata_path => "./barbar.dat"
type => "piyopiyo"
}
}
注意点1 JDBCドライバの配置場所
jdbc_driver_libraryとして、ojdbc7.jarと書いていますが、この場合は、logstash/bin においてあることが前提です。
注意点2 JDBCドライバクラス名
JDBCドライバのクラス名として oracle.jdbc.driver.OracleDriverと書くとエラーになります。
Javaで慣れ親しんだ人ほど注意が必要。
こんなエラーに出くわします。
Error: oracle.jdbc.driver.OracleDriver not loaded. Are you sure you've included
the correct jdbc driver in :jdbc_driver_library?
configtestで確認しろよ、と出てきますが、configtestは何の問題もなく正常終了するので注意。
正しくはJava::oracle.jdbc.driver.OracleDriverと。
Java::oracle.jdbc.driver.OracleDriver
こう書くこと。 javaが小文字でもダメらしい。
参考) [Logstash and Oracle – JDBC input settings] http://dbtricks.com/?p=308
<引用>
Running the query with the ‘–configtest’ flag did not help much but eventually, it turned out to be a simple typo. The oracle driver was not loaded only because the call was
” java::oracle.jdbc.driver.OracleDriver ” instead of ” Java::oracle.jdbc.driver.OracleDriver “.
(this one was really annoying but I hope this will save you time I spent on it ).
引用>
注意点3 statementはセミコロンなしで!
終端にセミコロンをつけると、エラーになるよ。ORA-00933: SQLコマンドが正しく終了されていません。
気をつけよう。