今回はシェルを利用してOracleデータベースへ接続する方法を紹介します。
現在進行形で勉強中でもあるため,作業記録としての投稿でもあります。
SQL*PlusでOracleへ接続したうえで,ALTERによる設定変更等を自動化する際にはとても有用かと思います。
ぜひとも参考にしていただけたら幸甚です!
前提知識
Solaris

サン・マイクロシステムズ社が開発した,現存する最古のOSでもあるUNIXの一種です。
他に有名なOSとしてはLinux等があります。

厳密にいうと,LinuxはUNIXではなくUNIX系(UNIXと互換性がある)OSだよ!
サン・マイクロシステムズ社はOracle社に買収されており,現在はOracle社が開発・販売をしています。
Shell Script


UNIX(UNIX系含む)において,OSコマンド等の実行コマンドをまとめたファイルです。
WindowsでいうところのBATやPowerShellと考えて相違ありません。
シェルを実行することで,ファイル内に記載のあるコマンドを実行してくれます。
手入力で実行していたコマンドを自動化できるため,生産性向上および品質確保において習熟して損のない機能と言えるでしょう。
接続方法
シェル作成
結論から述べると,以下のようなシェルを作成して実行することで,SQL*Plusへ接続してSQL*Plus内でスクリプトを実行できます。
なお,環境変数の設定等必要となるOracleの環境設定が完了していることを前提とします。
1 2 3 4 5 6 7 8 9 |
#!/bin/csh sqlplus -s / as sysdba <<EOF show user select instance_name from v\$instance; quit EOF exit |
実行例を以下に示します。
1 2 3 4 5 |
ユーザーは"SYS"です。 INSTANCE_NAME ---------------------------------------- ORCL |
解説
1 |
#!/bin/csh |
- 実行するシェルの種類を宣言しています。
よく分からなかったらおまじない程度に考えておきましょう。



シェルの細かな違いは勉強中です(汗)
3 4 5 6 7 |
sqlplus -s / as sysdba <<EOF show user select instance_name from v\$instance; quit EOF |
- 3行目にてSQL*PLUSでOracleデータベースへ接続しています。また「-s」オプションを付けることで,プロンプト(「SQL>」)を非表示としています。
- 3行目から7行目にかけて,「<<EOF~EOF」で括って「ヒアドキュメント1」機能を利用しています。今回はユーザ名とインスタンスを出力しています。
- 5行目で「v\$instance;」とすることで,「$」をエスケープしています。(変数名として扱われるのを防いでいる。)
- 6行目の「quit」はSQL*PLUSからログアウトするコマンドです。
9 |
exit |
- シェルを終了します。
SQL*Plusでの接続維持
先の例では,「quit」や「exit」がなくても,処理を一通り実行した後でSQL*PLusからログアウトする仕様となっているようです。
ヒアドキュメント機能を利用すると,何であろうとログアウトするのかもしれません。
SQL*Plusにてログインするだけであれば以下のようにします。
1 2 3 4 5 |
#!/bin/csh sqlplus / as sysdba exit |
3行目にてユーザ名とパスワードを指定することで,特定ユーザでのログインが可能となります。
プログラミングの知識が少しでもあれば,1つのシェルで好きなユーザを選択(入力)してログイン可能な仕様とすることもできるでしょう。
まとめ
今回はシェルを利用してOracleデータベースへ接続する方法を紹介しました。
単発的な作業であれば手入力でも良いかもしれませんが,何度か実施する可能性があればシェルを利用する価値も大いにあるでしょう。
何かと手間の掛かる作業を少しでも効率化して,自動化による品質も確保していけるよう取り組んでみてください!
- 複数行に渡るコマンドや文字列を簡潔に記述できる機能 ↩︎