2008-11-29 129 views
1

我在shell脚本相当初级水平,以下是详细..sqlplus的访问和使用电子邮件访问shell脚本

正在寻找火SQL查询和,并基于该数据进行一些逻辑的最佳方式。我用下面的代码片段..

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

如果[$ shellvariable -ne 0], <> 网络

有没有更好的方式来进行同样的..

回答

4

你在正确的轨道上。 sqlplus的是,当你shell脚本与数据库进行交互的最佳方式,但两件事情需要注意:

  1. 使用“-S”参数从打印所有 应用信息
  2. 停止 的sqlplus直接读取数据到一个变量,你会 需要一些sqlplus的环境 设置修剪后面的输出 你想要的东西,

对于任何DBA的谁正在学习shell脚本,帮助他们管理和奥波吃了Oracle数据库管理,我强烈推荐Jon Emmons的书Oracle Shell Scripting。它讲授了一个很棒的shell脚本介绍课程,但是在DBA真正有用和有趣的任务环境中。最后一点需要注意的是:如果您做的不仅仅是一个简单的DBA任务,我会建议您不要使用shell脚本,而是使用具有适当数据库支持的脚本语言。 Perl是Oracle的一个很好的选择,因为它随数据库一起安装。

Here's an example Oracle在bash和perl中完成的脚本。从外壳版本,这里是它的读取特定值的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 
)