2008-11-29 105 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 
)