вы на правильном пути. sqlplus - это лучший способ взаимодействия с базой данных при создании сценариев оболочки, но следует обратить внимание на две вещи:
- используйте параметр "-S" для остановки
sqlplus от печати всех своих
информация о приложении
- для чтения данных непосредственно в переменную, вы будете
нужна среда 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
)