변수의 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

/nologsqlplus다음 명령을 실행하는 사람에게 이러한 세부 정보가 표시되지 않도록 다음 옵션을 사용하여 여기에 문서에 데이터베이스 사용자 ID 및 비밀번호를 포함할 수 있습니다 ps.

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

관련 정보