Разработки / Как прописать ODI в автозапуск Solaris 10 on 06 September 2007 10:58
Для начала нужно создать скрипт для запуска сервиса:
#!/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
Author: Макс

Tags: ODI, services, Solaris, autorun, SMF, Oracle Data Integrator

Add comment
Rating: 3.01 / Rate 1 2 3 4 5

    Search: 
    Hello, Guest. ( Login / Create account )