변수의 SQLPLUS 값 - crontab에서 작동하지 않음

변수의 SQLPLUS 값 - crontab에서 작동하지 않음

Linux에서 sqlplus 값을 변수에 저장하려고 합니다.

수동으로 실행하면 스크립트가 제대로 작동합니다. 그러나 crontab에서 스크립트를 호출하면 변수의 값이 저장되지 않습니다.

암호:

#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"

답변1

sqlpluscrontab 항목에서 실행하면 실망스러울 수 있습니다. 분기 되는 셸이 crond"rc" 파일을 읽지 않기 때문에 매우 희박한 PATH 변수를 얻게 됩니다.

".profile" 파일에서 ORACLE_HOME을 설정합니까? PATH에 $ORACLE_HOME/bin을 포함하고 ORACLE_HOME 및 PATH를 내보내나요? 먼저 확인해 보세요. 또한 귀하의 코드에 ksh문제의실행~ 아니다소싱파일 ~/.profile. 스크립트는 해당 파일을 "소스"해야 합니다. 나는 또한 다음과 같이 TNS_ADMIN을 설정하고 내보내는 것에 대해 미신을 갖고 있는 것 같습니다.

export TNS_ADMIN=$ORACLE_HOME/network/admin

다음을 실행하는 사람에게 해당 세부 정보가 표시되지 않도록 하는 /nolog옵션을 사용하여 "여기 문서"에 데이터베이스 사용자 ID와 비밀번호를 포함할 수 있습니다 .sqlplusps

sqlplus -s /nolog 2>&1 << END_ZERO_ROW_CHECK
connect $USER_NAME/$PASSWORD@$SID_INSTANCE
whenever oserror exit failure
whenever sqlerror exit failure
...
END_ZERO_ROW_CHECK

관련 정보