Разработки / Как прописать ODI в автозапуск Solaris 10 on 06 September 2007 10:58
Для начала нужно создать скрипт для запуска сервиса:
Затем надо проверить правильность манифеста командой.
Author: Макс #!/sbin/sh
# odi
#
. /lib/svc/share/smf_include.sh
# путь к директории инсталляции ODI
ODI_HOME=/opt/odi/oracle/oracledi/oracledi
# путь к java для ODI
ODI_JAVA_HOME=/usr/jdk/jdk1.5.0_12
# параметры для соединения репозиторием
ORACLE_SID=odiDB
ORACLE_BASE=/opt/oracle
ORACLE_HOME=${ORACLE_BASE}/product/10.2.0/db_1
ORACLE_ADMIN=${ORACLE_BASE}/admin
TNS_ADMIN=${ORACLE_HOME}/network/admin
LD_LIBRARY_PATH=${ORACLE_HOME}/lib
PATH={ORACLE_HOME}/bin:{ORACLE_HOME}/OPatch:/usr/ccs/bin/:/usr/bin:/etc:/usr/openwin/bin:/usr/local/bin:${PATH}:.
export ODI_HOME ODI_JAVA_HOME ORACLE_SID ORACLE_BASE ORACLE_HOME ORACLE_ADMIN TNX_ADMIN LD_LIBRARY_PATH PATH
case "$1" in
start)
cd $ODI_HOME/bin
./agentscheduler.sh -NAME=MAIN -PORT=20910 -V=1>/dev/null &
;;
stop)
cd $ODI_HOME/bin
./agentstop.sh 20910 > /dev/null 2>&1 &
;;
'restart')
cd $ODI_HOME/bin
./agentstop.sh 20910>/dev/null 2>&1&
while pgrep -f "classpath \/opt\/odi\/oracle\/oracl" > /dev/null
do
sleep 1
done
./agentscheduler.sh -NAME=MAIN -PORT=20910 -V=1>/dev/null &
;;
*)
echo "Usage: `basename $0` {start | stop | restart}"
exit 64
;;
esac
Назовём этот скрипт svc-odi и дадим ему права:
chown root:bin svc-odi chmod 555 svc-odi
Затем сделаем manifeset в директории /var/svc/manifest/application:
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='odi:odi'>
<service
name='application/odi'
type='service'
version='1'>
<create_default_instance enabled='false' />
<single_instance />
<dependency name='fs'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<dependency name='net'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/network/loopback' />
</dependency>
<exec_method
type='method'
name='start'
exec='/opt/odi/svc-odi start'
timeout_seconds='60'>
<method_context>
<method_credential user='odi' group='other' />
</method_context>
</exec_method>
<exec_method
type='method'
name='stop'
exec='/opt/odi/svc-odi stop'
timeout_seconds='60'>
<method_context>
<method_credential user='odi' group='other' />
</method_context>
</exec_method>
</service>
</service_bundle>
Незабудьте правильно указать путь до скрипта запуска сервиса. У меня он /opt/odi/svc-odi.Затем надо проверить правильность манифеста командой.
svccfg validate /var/svc/manifest/application/odi.xml && echo OKИ импортируем его в SMF.
svccfg import /var/svc/manifest/application/odi.xmlЗатем сервис можно запустить следующей командой командой.
svcadm enable odi
Tags: ODI, services, Solaris, autorun, SMF, Oracle Data Integrator