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