御時間ありがとうございます!
ruby oci8を使用してOracleデータベースに接続し、AWRレポートを生成したいと思います。
コマンドラインからこれを行うと、コードは次のようになります。
sqlplus sys/a@10.69.152.97/load as sysdba
SQL> define num_days = ''
SQL> define report_type = "html"
SQL> define begin_snap = 100
SQL> define end_snap = 101
SQL> define report_name = C:\tttt.html
SQL> @?\rdbms\admin\awrrpt.sql
Rubyを使用してジョブを自動化したいだけです。私はそれをグーグルで検索し、oci8が役立つかもしれないと思います。だから私は次のようにコードを作成します:
require 'oci8'
onn = OCI8.new('sys/a@10.69.152.97/load as sysdba')
conn.exec("define num_days = '';")
conn.exec('define report_type="html"')
onn.exec('define begin_snap = 100')
conn.exec('define end_snap = 101')
conn.exec('define report_name = C:\tttt.html')
conn.exec('@?\rdbms\admin\awrrpt.sql') { |r| puts r}
cmdで実行すると、失敗しました。
失敗したメッセージは次のとおりです。
Warning: NLS_LANG is not set. fallback to US7ASCII.
stmt.c:253:in oci8lib_191.so: ORA-00900: invalid SQL statement (OCIError)
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby-oci8-2.1.2-x86-mingw32/lib/oci8/oci8.rb:474:in `exec'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby-oci8-2.1.2-x86-mingw32/lib/oci8/oci8.rb:282:in `exec_internal'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby-oci8-2.1.2-x86-mingw32/lib/oci8/oci8.rb:275:in `exec'
from automate_awr.rb:4:in `<main>'
さらに、oracleに正常にログインし、oci8を使用してselectステートメントを実行できます。
私はどこが間違っていますか?
前もって感謝します!