دیروز به درخواست یکی از مشتری‌ها باید این تسک رو انجام میدادم که منجبر به این اسکریپت و دستورالعمل زیر شد.

این اسکرپت بر روی 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"