دیروز به درخواست یکی از مشتریها باید این تسک رو انجام میدادم که منجبر به این اسکریپت و دستورالعمل زیر شد.
این اسکرپت بر روی ODI ورژن 11.1.1.3.0 تا 11.1.1.9.99 تست و ساپورت شده (Release 11gR1) و قابل استفاده در اکثر توزیعها هستش
اسکریپت زیر رو در مسیر /etc/init.d/ قرار بدید و مالک فایل حتماً کاربر root باشه.
#!/bin/bash
# chkconfig: 2345 98 2
# description: Start or stop the Oracle Process Manager and Notification
export ORACLE_HOME=
export ORACLE_OWNER=
export OPMNCTL="$ORACLE_HOME/instances//bin/opmnctl"
su -c "$OPMNCTL status &> /dev/null" $ORACLE_OWNER
RETVAL=$?
if [ "$RETVAL" = 0 ]; then
export INSTANCE_NAME=`$ORACLE_HOME/instances//bin/opmnctl status | grep Processes.in.Instance | awk '{print $4}'`
fi
case "$1" in
'start')
# Starting the opmn managed processes for $INSTANCE_NAME
su -c "$OPMNCTL startall" $ORACLE_OWNER
RETVAL=$?
if [ ! "$RETVAL" = 0 ]; then
echo -e "Errors while starting instance " $INSTANCE_NAME " please check $\ORACLE_HOME/opmn/logs for more information"
exit $RETVAL
else
touch /var/lock/subsys/ODIAgentinfra
fi
# Comment the following line if you do not want to autostart AS Control
;;
'stop')
su -c "$OPMNCTL stopall" $ORACLE_OWNER
RETVAL=$?
if [ "$RETVAL" = 0 ]; then
rm -f /var/lock/subsys/ODIAgentinfra
fi
;;
'status')
if [ ! "$INSTANCE_NAME" = "" ]; then
echo -e "=============================================="
echo -e "OPMN managed processes status for " $INSTANCE_NAME
echo -e "=============================================="
su -c "$OPMNCTL status" $ORACLE_OWNER
else
echo -e "=============================================="
echo -e "OPMN managed processes status for " $INSTANCE_NAME
echo -e "=============================================="
echo -e "The opmn daemon is not running"
fi
echo -e ""
echo -e "========================================="
echo -e "Enterprise manager status for " $INSTANCE_NAME
echo -e "========================================="
su -c "$EMCTL status iasconsole" $ORACLE_OWNER
RETVAL=0
;;
'restart')
$0 stop ; $0 start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
RETVAL=1
;;
esac
exit $RETVAL
دریافت فایل
حجم: 2.36 کیلوبایت
حالا پرمیشن فایل رو به rwxr-wr-w - 755 تغییر بدید
و با دستور زیر این سرویس رو به لیست سرویسهای استارت اضافه کنید:
# chkconfig --add ODIAgentautostart
نکات مهم:
- اگه مالک فایل کاربر root نبود با دستور زیر این تغییر رو انجام بدید:
# chown root:root ODIAgentautostart
- اگه خواستید اولویت اجرای اسکریپت رو در استارت سیستم در مقابل باقی اسکریپتها بالاتر ببرید کافیه خط دوم رو ویرایش کنید و عددهای پایینتری نسبت به اسکریپت مذکور بذارید تا اسکریپتتون اولویت بالاتری داشته باشه:
# chkconfig: 2345 98 2
مثال:
# chkconfig: 2345 95 2
- ۲ متغیر اولی که در اسکریپت تعریف شده باید به درستی مفداردهی بشوند تا اسکریپت بتونه به درستی agent رو استاپ و استارت کنه
- ORACLE_HOME
- ORACLE_OWNER
برای مثال:
- export ORACLE_HOME="/home/oracle/oramt"
- export ORACLE_OWNER="oracle"