我在 shell 脚本方面相当初级,以下是详细信息..
我正在寻找触发 sql 查询并基于该数据执行一些逻辑的最佳方法。我使用了以下代码段..
壳变量=sqlplus $user/$passwd <<END
select count(1) from table1;
end
EOF
if[$shellvariable -ne 0] then <> fi
有没有更好的方法来执行相同的..
你在正确的轨道上。sqlplus 是在编写 shell 脚本时与数据库交互的最佳方式,但需要注意两点:
对于任何正在学习 shell 脚本以帮助他们管理和自动化 Oracle 数据库管理的 DBA,我强烈推荐 Jon Emmons 的书Oracle Shell Scripting。它教授了一个很棒的 shell 脚本介绍课程,但是在对 DBA 真正有用和有趣的任务的上下文中。
最后一点:如果您要做的不仅仅是简单的 DBA 任务,我建议您不要使用 shell 脚本,而是使用具有适当数据库支持的脚本语言。Perl 对于 Oracle 来说是一个不错的选择,因为它是随数据库一起安装的。
这是一个用 bash 和 perl 完成的 Oracle 脚本示例。在 shell 版本中,它是如何将特定值读取到 shell 变量的:
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
)