1

私はシェルスクリプトの初心者レベルで、詳細は次のとおりです..

SQL クエリを起動し、そのデータに基づいてロジックを実行する最良の方法を探しています。次のスニペットを使用しました..

シェル変数=sqlplus $user/$passwd <<END select count(1) from table1; end EOF

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

同じことを実行するより良い方法はありますか..

4

2 に答える 2

4

あなたは正しい方向に進んでいます。シェルスクリプトを使用している場合、sqlplusはデータベースと対話するための最良の方法ですが、次の2つの点に注意してください。

  1. 「-S」パラメータを使用して、sqlplusがすべてのアプリケーション情報を出力しないようにします
  2. データを変数に直接読み込むには、出力を必要なものにプルーニングするためのsqlplus環境設定が必要になります。

Oracleデータベース管理の管理と自動化を支援するシェルスクリプトを学習しているDBAには、JonEmmonsの著書であるOracleShellScriptingを強くお勧めします。優れたシェルスクリプトのイントロコースを教えていますが、DBAにとって本当に便利で興味深いタスクのコンテキストで。

最後に、単純なDBAタスク以外のことを行う場合は、シェルスクリプトを使用せずに、適切なデータベースをサポートするスクリプト言語を使用することをお勧めします。Perlはデータベースとともにインストールされるため、Oracleに適したオプションです。

これは、bashとperlの両方で実行されるOracleのスクリプトの例です。シェルバージョンから、シェル変数に特定の値を読み取る方法は次のとおりです。

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

シェルスクリプトによるデータベースへのアクセス

于 2009-08-31T08:11:07.257 に答える