sqlplusコマンドがバッチから実行すると失敗します。
846656Mar 11 2011 — edited Mar 13 2011環境はCentos5.5 Oracle11gRACです。
DB上でバッチを実行しています。
以下のようにいわれます。
SQL*Plus: Release 11.1.0.7.0 - Production on 金 3月 11 18:57:05 2011
Copyright (c) 1982, 2008, Oracle. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
プロセスID: 0
セッションID: 0、シリアル番号: 0
ユーザー名を入力してください: SP2-0306: オプションが無効です。
使用方法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}]
ただし<logon> ::= <username>[<password>][@<connect_identifier>] [edition=value] | /
ユーザー名を入力してください: SP2-0306: オプションが無効です。
使用方法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}]
ただし<logon> ::= <username>[<password>][@<connect_identifier>] [edition=value] | /
SP2-0157: 3回試行しましたがOracleに接続できませんでした。SQL*Plusを終了します。
2011/03/11_18:57:05 JOB ifora01 ABEND STEP ifora0101
バッチの中身は以下です。
開発環境ではちゃんと動いていて正常終了しますが、本番では上記のようにエラーになります。
IDとパスワードは開発、本番共通であっていますし、sqlplus system/password で本番サーバにはいれることも確認しました。
どのようにデバッグすればよいでしょうか?
アドバイスをください。お願いします。m(_ _)m
#!/bin/csh
setenv JCL_DATE `date '+%Y%m%d%H%M%S'`
setenv JOB_NAME ifora01
setenv JOB_HOME /unyou/toukei
setenv JOB_LOG $JOB_HOME/log/$JOB_NAME.log.$JCL_DATE
## Oracle
#source ${JOB_HOME}/env/oracle.env
# Oracle11g
setenv ORACLE_BASE /opt/oracle
setenv ORACLE_HOME $ORACLE_BASE/product/11.1.0/db
setenv ORACLE_SID ORAORA
setenv NLS_LANG Japanese_Japan.AL32UTF8
setenv ORA_NL33 $ORACLE_HOME/ocommon/nls/admin/data
setenv PATH $ORACLE_HOME/bin:$PATH
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
#setenv LD_LIBRARY_PATH
#setenv NLS_LANG Japanese_Japan.JA16SJISTILDE
setenv CBL_PARAM_ORAUID system
setenv CBL_PARAM_ORAPWD password
cp /dev/null $JOB_LOG
date "+%Y/%m/%d_%H:%M:%S JOB $JOB_NAME START" >>& $JOB_LOG
ifora0101:
setenv JOB_STEP ifora0101
date "+%H:%M:%S $JOB_STEP start" >>& $JOB_LOG
sqlplus $CBL_PARAM_ORAUID/$CBL_PARAM_ORAPWD <<EOF >> $JOB_LOG
whenever oserror exit 101
whenever sqlerror exit 102
BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;
/
exit
EOF
set rc = $status
if ( $rc != 0 ) then
goto abend_jcl
endif
date "+%H:%M:%S $JOB_STEP END" >> $JOB_LOG
normal_jcl:
date "+%Y/%m/%d_%H:%M:%S JOB $JOB_NAME END" >>& $JOB_LOG
exit $rc
abend_jcl:
date "+%Y/%m/%d_%H:%M:%S JOB $JOB_NAME ABEND STEP $JOB_STEP" >>& $JOB_LOG
#echo $JOB_NAME $JOB_STEP $rc | sjANM_sendmsg -cMSG1000 -n$JOB_NAME -lE
exit $rc
Edited by: user3903465 on 2011/03/11 2:11