1

我在 shell 脚本方面相当初级,以下是详细信息..

我正在寻找触发 sql 查询并基于该数据执行一些逻辑的最佳方法。我使用了以下代码段..

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

if[$shellvariable -ne 0] then <> fi

有没有更好的方法来执行相同的..

4

2 回答 2

4

你在正确的轨道上。sqlplus 是在编写 shell 脚本时与数据库交互的最佳方式,但需要注意两点:

  1. 使用“-S”参数阻止 sqlplus 打印其所有应用程序信息
  2. 要将数据直接读取到变量中,您将需要一些 sqlplus 环境设置来将输出修剪为您想要的

对于任何正在学习 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
)
于 2008-11-30T07:57:18.420 回答
0

通过 shell 脚本访问数据库

于 2009-08-31T08:11:07.257 回答