2017-01-03 2 views
0

나는 db2 명령 (활성 데이터베이스 나열)을 실행하고 출력을 파일로 재지 정하는 bash 스크립트를 가지고 있으며 다른 스크립트에서이 파일을 사용합니다.db2의 Bash 스크립트

스크립트 :

/DB2RM1/db2rm1/sqllib/bin/db2 list active databases > /home/occddma/scripts/data 

참고 : 나는 crontab을에서 실행할 수있게하기 위해 DB2 명령 앞에 DB2의 바이너리 위치를 뒀다.

그런 다음 스크립트를 crontab 작업에 넣으면 아래와 같이 datadb 파일이 매분마다 업데이트됩니다. 내가 명령 줄 형태의 스크립트를 실행하면

* * * * * /DB2RM1/db2rm1/mon_db2.sh 

는 그것을 잘 작동하지만이 crotab 작업에서 실행할 때 그것은 datadb 파일에 아래의 오류를 리디렉션합니다.

SQL10007N Message "-1390" could not be retrieved. Reason code: "3". 
+0

CLI를 통해이 명령을 어떻게 실행하고 있습니까? 그리고 cron은 어떤 계정으로 설정되어 있습니까? – ryekayo

+0

./script_name으로 스크립트를 실행합니다. cronjob이 db2inst1에 추가되는 동안 잘 작동하고 datadb 파일을 업데이트합니다. 사용자의 crontab은 홈 디렉토리에있는 스크립트를 가지고 있습니다. –

답변

0

대부분의 경우 스크립트에 bash 프로필을로드해야합니다. 마찬가지로 :

source /etc/profile 

또는

source ~/.bash_profile 
1

당신은 db2profile에 비용을 청구하지 않았습니다. 이 파일은 인스턴스의 홈 디렉토리의 sqllib 디렉토리에 있습니다. 과 같이 db2profile가로드

. ~db2inst1/sqllib/db2profile 

후에는 DB2INSTANCE 환경 변수의 값을 볼 수 있습니다

은의이 인스턴스가 db2inst1 인이다 가정하자, 당신은 호출해야합니다.

환경이 올바르게로드되었는지 확인하는 한 가지 방법은 DB2INSTANCE가 설정되어 있는지 확인하는 것입니다.

SQL1390C이 환경 변수 DB2INSTANCE가 정의되지 않았거나 유효하지 입니다 :

if [[ -z ${DB2INSTANCE} ]] ; then 
    echo "ERROR" 
    exit 1 
fi 

BTW는 1390이 오류입니다.

+0

저에게 맞는 감사합니다. –