0

元の問題を分解していて、元の質問もひねる必要があるため、元の投稿を編集します。現在入会されている方へ。Oracle EL6 で複数の Oracle インスタンス/リスナーを自動的に起動するように構成しているときに問題が発生しました。次のスクリプトを使用して、スタートアップを処理しています。

#!/bin/sh
# chkconfig 345 99 10

export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
export ORACLE_OWNER=oracle

if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
    echo "Oracle startup: cannot start"
    exit
fi

case "$1" in
    'start')
        # Start the Oracle databases:
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" &
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start TEST.LOCALHOST" &
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start CAPEX" &
        touch /var/lock/subsys/dbora
        ;;
    'stop')
        # Stop the Oracle databases:
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop TEST.LOCAHOST"
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop CAPEX"
        rm -f /var/lock/subsys/dbora
        ;;
esac

このファイルは /etc/init.d/ フォルダーの下にあります。ファイル自体は dbora と呼ばれます。また、chkconfig --add を使用してスタートアップに追加しました。そのステータス別名 chkconfig --list の出力は次のとおりです。

[root@localhost ~]# chkconfig --list
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
abrt-ccpp       0:off   1:off   2:off   3:on    4:off   5:on    6:off
abrt-oops       0:off   1:off   2:off   3:on    4:off   5:on    6:off
abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
blk-availability    0:off   1:on    2:on    3:on    4:on    5:on    6:off
bluetooth       0:off   1:off   2:off   3:on    4:on    5:on    6:off
certmonger      0:off   1:off   2:off   3:on    4:on    5:on    6:off
cgconfig        0:off   1:off   2:off   3:off   4:off   5:off   6:off
cgred           0:off   1:off   2:off   3:off   4:off   5:off   6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off
dbora           0:off   1:off   2:off   3:on    4:on    5:on    6:off
dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off
firstboot       0:off   1:off   2:off   3:off   4:off   5:off   6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
htcacheclean    0:off   1:off   2:off   3:off   4:off   5:off   6:off
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
kdump           0:off   1:off   2:off   3:off   4:off   5:off   6:off
lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
mcelogd         0:off   1:off   2:off   3:on    4:off   5:off   6:off
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ntpdate         0:off   1:off   2:off   3:off   4:off   5:off   6:off
numad           0:off   1:off   2:off   3:off   4:off   5:off   6:off
oddjobd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
portreserve     0:off   1:off   2:on    3:on    4:on    5:on    6:off
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
quota_nld       0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
restorecond     0:off   1:off   2:off   3:off   4:off   5:off   6:off
rhnsd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
rngd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off
rpcsvcgssd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
smartd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
spice-vdagentd  0:off   1:off   2:off   3:off   4:off   5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sssd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
svnserve        0:off   1:off   2:off   3:off   4:off   5:off   6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
vmware-tools    0:off   1:off   2:on    3:on    4:on    5:on    6:off
vmware-tools-thinprint  0:off   1:off   2:on    3:on    4:on    5:on    6:off
wdaemon         0:off   1:off   2:off   3:off   4:off   5:off   6:off
winbind         0:off   1:off   2:off   3:off   4:off   5:off   6:off
wpa_supplicant  0:off   1:off   2:off   3:off   4:off   5:off   6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
ypbind          0:off   1:off   2:off   3:off   4:off   5:off   6:off

xinetd based services:
    chargen-dgram:  off
    chargen-stream: off
    daytime-dgram:  off
    daytime-stream: off
    discard-dgram:  off
    discard-stream: off
    echo-dgram:     off
    echo-stream:    off
    rsync:          off
    tcpmux-server:  off
    time-dgram:     off
    time-stream:    off

システムを再起動した後、次のエントリが含まれている 2 つのリスナーのログ ファイルを確認しました。

For CAPEX listener:
<msg time='2013-12-17T14:16:44.440+01:00' org_id='oracle' comp_id='tnslsnr'
 type='UNKNOWN' level='16' host_id='localhost.localdomain'
 host_addr='::1'>
    <txt>17-DEC-2013 14:16:44 * service_update * CAPEX * 0</txt>
</msg>

For TEST.LOCALOHOST listener:
<msg time='2013-12-17T14:16:46.880+01:00' org_id='oracle' comp_id='tnslsnr'
 type='UNKNOWN' level='16' host_id='localhost.localdomain'
 host_addr='::1'>
    <txt>17-DEC-2013 14:16:46 * service_update * TEST * 0</txt>
</msg>

また、次のコマンドを実行して、リスナーが実行されているかどうかを確認しようとしました(実際にはどちらも実行されていないことがわかったため)。

[root@localhost ~]# ps -ef | grep tnslsnr | grep -v grep
[root@localhost ~]#

また、実際のデータベース インスタンスが実行されているかどうかを確認しようとしたときに、実行されていないことを意味するアイドル状態にあることもわかりました。多分今、何が起こっているのか、私が何を台無しにしているのか、ある程度わかっているでしょう。

ありがとう、ジョー

4

1 に答える 1

2

ORACLE_HOMEsu環境に設定されていません。が呼び出される前に展開されてlsnrctlいるため、バイナリへのフルパスが提供されているため、実際には次のことを行っています。$ORACLE_HOMEsu

su oracle -c "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start CAPEX" &

手動で実行するORACLE_HOMEと設定されているので、動作します。実行するsuとそうではありませんが、完全なパスがあるため、バイナリを見つけます。エントリを処理するときにエントリからdbstartリセットされるため、機能します。「メッセージ ファイルがありません」というエラーは、通常、設定されていないインジケータであり、コードが参照するアクセス許可エラーは、おそらくルート ディレクトリの下で、間違った場所を探していることを示唆しています。ORACLE_HOMEoratabORACLE_HOMElistener.ora

スクリプトに値を表示させることで、これを実証できます。

su $ORACLE_OWNER -c "ORACLE_HOME is: \$ORACLE_HOME`"

ORACLE_HOME次のように、実行しているコマンドで を設定できますsu

su $ORACLE_OWNER -c "ORACLE_HOME=$ORACLE_HOME;$ORACLE_HOME/bin/lsnrctl start CAPEX" &

exportしかし、スクリプト内の変数の方が簡単です。これにより、変数が次のように表示されsuます。

export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
export ORACLE_OWNER=oracle

また

ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
ORACLE_OWNER=oracle
export ORACLE_HOME ORACLE_OWNER

...シェルに応じて。

于 2013-12-16T11:56:54.267 に答える