Спасибо за ваше время!ruby oci8 generate oracle AWR report
Я хочу использовать ruby oci8 для подключения к базе данных оракула для создания отчета AWR.
Когда я делаю это через командную строку, код выглядит так:
sqlplus sys/[email protected]/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. Я google это и найти oci8 может помочь. Поэтому я просто формирую свои коды:
require 'oci8'
onn = OCI8.new('sys/[email protected]/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>'
Кроме того, я могу успешно войти в оракула и выполнить оператор выбора с помощью oci8.
Где я ошибаюсь?
Заранее благодарен!
Спасибо большое! Я понимаю, где я сейчас неправ. Сначала я буду исследовать popen3 и дам сообщение о задаче, когда я это сделаю. – mCY