Доступ к sqlplus и доступ к электронной почте с использованием сценария оболочки - PullRequest
1 голос
/ 29 ноября 2008

Я довольно новичок в написании сценариев оболочки, ниже приведены подробности.

Я ищу лучший способ запуска SQL-запросов и выполнения некоторой логики на основе этих данных. Я использовал следующий фрагмент ..

shellvariable = sqlplus $user/$passwd <<END select count(1) from table1; end EOF

если [$ shellvariable -ne 0], то <> фи

Есть ли лучший способ сделать то же самое ..

Ответы [ 2 ]

4 голосов
/ 30 ноября 2008

вы на правильном пути. sqlplus - это лучший способ взаимодействия с базой данных при создании сценариев оболочки, но следует обратить внимание на две вещи:

  1. используйте параметр "-S" для остановки sqlplus от печати всех своих информация о приложении
  2. для чтения данных непосредственно в переменную, вы будете нужна среда sqlplus настройки, чтобы сократить вывод на именно то, что вы хотите

Для тех администраторов баз данных, которые изучают сценарии оболочки, чтобы помочь им управлять и автоматизировать администрирование базы данных Oracle, я настоятельно рекомендую книгу Джона Эммонса Oracle Shell Scripting . Он преподает отличный вводный курс по сценариям оболочки, но в контексте задач, которые действительно полезны и интересны для администраторов баз данных.

Последнее замечание: если вы делаете что-то большее, чем простое задание DBA, я бы рекомендовал не использовать сценарии оболочки, а использовать язык сценариев, который имеет надлежащую поддержку базы данных. Perl - хороший вариант для Oracle, поскольку он устанавливается вместе с базой данных.

Вот пример скрипта для Oracle, выполненного как на bash, так и на perl. От версии оболочки, вот как она читает определенное значение в переменной оболочки:

alertlog=$(sqlplus -S \/ as sysdba 2> /dev/null <<EOF
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 80
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SELECT value 
FROM   v\$parameter 
WHERE  name = 'background_dump_dest';
EOF
)
0 голосов
/ 31 августа 2009
...