私はシェルスクリプトの初心者レベルで、詳細は次のとおりです..
SQL クエリを起動し、そのデータに基づいてロジックを実行する最良の方法を探しています。次のスニペットを使用しました..
シェル変数=sqlplus $user/$passwd <<END
select count(1) from table1;
end
EOF
if[$shellvariable -ne 0] then <> fi
同じことを実行するより良い方法はありますか..
あなたは正しい方向に進んでいます。シェルスクリプトを使用している場合、sqlplusはデータベースと対話するための最良の方法ですが、次の2つの点に注意してください。
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
)