Rainbow Planet

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ShellScript

シェルスクリプトでOracleデータベースに接続する手順+サンプルプログラム

投稿日:2020年10月20日 更新日:

<目次>
(1) シェルスクリプトでOracleDBに接続する手順
 (1-1) 処理の概要
 (1-2) 前半:sqlファイルの作成
 (1-3) 後半:シェルスクリプトの作成
 (1-4) プログラム実行結果
(2) エラー対処
 (2-1) エラー対処1:SP2-0750 You may need to set ORACLE_HOME

(1) シェルスクリプトでOracleDBに接続する手順

(1-1) 処理の概要

流れとしては、まずシェルスクリプトから「.sql」ファイルを実行します。「.sql」ファイルの中ではDB接続、SQL発行の処理等を行います。

(図111)

目次にもどる

(1-2) 前半:sqlファイルの作成

viエディタ等を用いて次のコードを「.sql」ファイルに記述します。
(参考)
https://rainbow-engine.com/linux-intro-4/

(サンプルプログラム)

--### CONNECTコマンドを使い、DBのユーザー名/パスワードで接続
CONNECT [DbUser]/[DbPassword]
--### SPOOLコマンドで、スプールファイルの生成パス/ファイル名を設定
SPOOL /[SpoolPath]/[SpoolName].lst
SET LINESIZE 100
SET PAGESIZE 50
--### 実行するSQLを指定
[Write SQL]
--### 処理終了後にSPOOLをOFFにする
SPOOL OFF
EXIT;

(例)

CONNECT TENNISDBUSR/[Password]
SPOOL /shellscripts/tmp_rainbow.lst
SET LINESIZE 100
SET PAGESIZE 50
SELECT * FROM ACCESS_COUNTER;
SPOOL OFF
EXIT;

(図121)

目次にもどる

(1-3) 後半:シェルスクリプトの作成

viエディタ等を用いて次のコードを「.sql」ファイルに記述します。
(参考)
https://rainbow-engine.com/linux-intro-4/

(サンプルプログラム)

#!/bin/sh
export ORACLE_HOME=/[Your ORACLE_HOME path]
export ORACLE_SID=[Your SID]
/[SQL*Plus Path]/sqlplus /nolog @/[SqlFile Path]/[SqlFile Name].sql

(例)

#!/bin/sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
/u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus /nolog @/shellscripts/execute_oracle.sql

(図131)

もし実行権限が付与されていない場合はchmod等で権限付与します。

chmod 755 [Shell Script File].sh

(図132)

目次にもどる

(1-4) プログラム実行結果

(図141)

目次にもどる

(2) シェルスクリプトでOracleDBに接続する手順

基本的に上記手順に則って進めれば下記エラーは起きませんが、参考として掲載します。

(2-1) エラー対処1:SP2-0750 You may need to set ORACLE_HOME

(状況・原因)
シェルスクリプトを実行したら、実行途中でエラーとなりました。原因としてはエラーメッセージにもある通り、環境変数「ORACLE_HOME」が設定されていないためです。

(エラーメッセージ)

Hello World
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

(図151)

(対処)
シェルスクリプト内で次のように環境変数をセットするコマンドを序盤に入れる事で、設定漏れを防ぎます。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-ShellScript

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Linux – シェルスクリプト入門(Hello World/引数・変数/条件分岐/繰り返し処理)

シェルスクリプトの作成方法について ■目次 (1)シェルスクリプトでHello World (2)シェルスクリプトで変数/引数を使う (3)シェルスクリプトで条件分岐を記述 (4)シェルスクリプトで繰 …

シェルスクリプトからPL/SQLのプロシージャを実行する方法

<目次> (1) シェルスクリプトからPL/SQLのプロシージャを実行する方法  (1-1) 処理の概要  (1-2) サンプルプログラム   (1-2-1) 呼び出し元:シェルスクリプト側   (1 …

  • English (United States)
  • 日本語
Top