Application Server専用ページへもどる
■AS基盤調査関連

●OC4Jインスタンスの再起動監視シェル
cron等で定期的に実行し、OC4Jの状態をチェックすることが可能
(例:特定OC4JのPIDを調べpsコマンドで詳細を表示するシェル)
----------------------------------------------------------------------
#!/bin/csh

set TIME = `date "+%Y/%m/%d %H:%M"`
set LOG_FILE = oc4j_`date "+%Y%m%d"`
set PID = `opmnctl status | grep home | awk '{print $5}'`
set PSCHECK = `ps -e -o 'user pid ppid s pcpu vsz rss pmem time args' | grep $PID | grep -v grep`


echo "$TIME     $PSCHECK" >> $LOG_FILE
----------------------------------------------------------------------

●coreが発生したときのログ取得例
  1. adbでレジスター情報をとる。
   # adb core
    core file = core -- program ``/opt/oracle/product/9.2.0/bin/sqlplus'' on platform 
                SUNW,Ultra-250SIGQUIT: Quit
   ...
   スタックトレース取得
   $c
   libc.so.1`_read+0xc(ffffffff7dcbf588, ffffffff7dcb6f48, ffffffff7fff81f8, 1001ad7e0, 1dc00, 1dd10)
   ...
   レジスタ・ダンプ取得
   $r
   %g0 = 0x0000000000000000                 %l0 = 0xffffffff7dcbf5b0 libc.so.1`_iob+0x28
   ...
   終了
   $q

 2. fileでその他情報を見る
   # file core
   core:           ELF 64-ビット MSB コアファイル SPARCV9 バージョン 1[ファイル名 sqlplus]

※adb等はOS提供のコマンドです。
これらのコマンドに関しての詳細については、OSベンダ様にお問合せください。

●ASCについて
  ASのManagement Agent (ASC)の実体は、以下の2つのプロセスです。

  1. emagent プロセス (emagent)
  2. emagent を監視するプロセス (emwd)
     (perl より $ORACLE_HOME/bin/emwd.plが実行され監視されています。)

     $ ps -ef | grep emwd で確認できる。

  ASCの起動時には、emctlというコマンドを使用します。
  このコマンドはemctl.plという中間コマンドを起動し、更に起動用にemwd.plというコマンドを起動します。
  このemwd.plが、起動時に一定時間応答が無かったプロセスに対して再起動を行うという処理を行います。
  このとき、em.nohupにメッセージが出力されます。
  以下ログ位置です。
  
  $ORACLE_HOME/sysman/log
     em.nohup                  Agent起動時のログ
     emagent.log               emagent のログ
     emagent.trc               emagent のトレース


■■■10gR3用コマンドTips

■OC4Jインスタンス 追加
$ createinstance

Usage:
createinstance {arguments}

where arguments are:
  -instanceName {name} :Name of new instance to be created.
  -port {http port}    :(optional)User specified HTTP port.
                        Required in J2EE Server and Process Management
                        install type only.
  -startASControl      :(optional)Start the Application Server Control
                        when starting this new instance.
  -ASControlIsRoutable :(optional)Make the Application Server Control
                        routable when started.

例:
$ createinstance -instanceName sample
Creating OC4J instance "sample"...
Set OC4J administrator's password for "sample" (password text will not be displayed as it is entered)
Enter password: oc4jadmin
Confirm password: oc4jadmin
The password for OC4J administrator "oc4jadmin" has been set.
New OC4J instance "sample" has been created.

■opmn.xml 変更後のopmnへ反映方法
$ opmnctl

usage: /opt/oracle/product/10.1.3.0/opmn/bin/opmnctl [verbose] [{scope}] {command} [{options}]

verbose: print detailed execution message if available

Permitted {scope}/{command}/{options} combinations are:

 scope    command     options
-------  ---------   ---------
          start                         - Start opmn
          startall                      - Start opmn & all managed processes
          stopall                       - Stop opmn & all managed processes
          shutdown                      - Shutdown opmn & all managed processes
[{scope}] startproc   [{attr}={val} ..] - Start opmn managed processes
[{scope}] restartproc [{attr}={val} ..] - Restart opmn managed processes
[{scope}] stopproc    [{attr}={val} ..] - Stop opmn managed processes
[{scope}] reload                        - Trigger opmn to reread opmn.xml
[{scope}] status      [{options}]       - Get managed process status
[{scope}] dmsdump     [{attr}={val} ..] - Get DMS stats
[{scope}] set         [{attr}={val} ..] - Set opmn log parameters
[{scope}] query       [{attr}={val}]    - Query opmn log parameters
          ping        [{max_retry}]     - Ping local opmn
          validate    [{filename}]      - Validate the given opmn xml file
          config      [{options}]       - Modify the default opmn xml file
          help                          - Print brief usage description
          usage       [{command}]       - Print detailed usage description

●反映
$ opmnctl reload
opmnctl: reconfiguring opmn...
opmnctl: opmn reloaded successfully...

●OC4J再起動
$ opmnctl status

Processes in Instance: server.aaa.localdomain
-------------------+--------------------+---------+---------
ias-component      | process-type       |     pid | status
-------------------+--------------------+---------+---------
OC4J               | sample             |   16466 | Alive
OC4J               | home               |   21186 | Alive
HTTP_Server        | HTTP_Server        |   20987 | Alive
ASG                | ASG                |     N/A | Down

●OC4J停止
$ opmnctl stopproc process-type=sample
opmnctl: stopping opmn managed processes...
$
●OC4J起動
$ opmnctl startproc process-type=sample
opmnctl: starting opmn managed processes...
$


■OC4Jインスタンス 削除
cd $ORACLE_HOME/bin

$ removeinstance

Usage:
removeinstance -instanceName {instance name}

例:
$ removeinstance -instanceName sample
Removing OC4J instance "sample"...
OC4J instance "sample" is removed.
$

■インストール時OSチェックを無視するオプション
・OUI 起動時に -ignoreSysPreReqs オプションを指定する

     % ./runInstaller -ignoreSysPrereqs

■10gR3のASCはデフォルトでhomeインスタンスにある。接続Port番号はhttpd.confのPortディレクティブを参照のこと。
例:Port 7777


■■■10gR3用 Jdeveloper Tips

■サーバ接続設定でopmnポートを指定する箇所の設定値(default:6003)
接続できないときは、$ORACLE_HOME/opmn/conf/opmn.xmlの先頭辺りのrequest Portを確認すること。

{?xml version = '1.0' encoding = 'UTF-8'?}
{opmn xmlns="http://www.oracle.com/ias-instance"}
   {log path="$ORACLE_HOME/opmn/logs/opmn.log" comp="internal;ons;pm" rotation-size="1500000"/}
   {debug path="$ORACLE_HOME/opmn/logs/opmn.dbg" comp="" rotation-size="1500000"/}
   {notification-server interface="ipv4"}
      {port local="6101" remote="6201" request="6004"/}←★これ
      {ssl enabled="true" wallet-file="$ORACLE_HOME/opmn/conf/ssl.wlt/default"/}
   {/notification-server}
...

■起動されたOC4Jのjavaオプションを確認する方法
/usr/ucb/ps -auxwwwl | grep {OC4Jインスタンス名} で設定内容の確認

■10.1.3.1のデータソースについて資料

  Oracle Containers for J2EE サービス・ガイド 10g(10.1.3.1.0)
  B31858-015「マネージド・データソース」 

  otndnld.oracle.co.jp/document/products/as10g/101310/doc_cd/web.1013/B31858-01/datasrc.htm#467151

■AS10.1.3.1 OC4Jのサーバ・プロパティを変更する(コマンドプロンプト)
・opmn.xml ファイルを手動で変更する
 手動で変更した場合、以下で反映することを忘れないこと。

 1. $ORACLE_HOME/opmn/conf/opmn.xml を手動で変更
 2. $ORACLE_HOME/opmn/bin/opmnctl reload
 3. $ORACLE_HOME/opmn/bin/opmnctl restartproc process-type={OC4J}

■opmn ping の間隔(interval)を 3600 sec(= 1h)に設定する方法
  1.opmn.xml を編集
                 :
               
             ★
                 :
  2.opmnctl reload を実行
  3.dcmctl updateconfig を実行
  4.dmstool で connection.completed を表示

■dcmctlユーティリティのresetFileTransactionについて
■DCMリポジトリ情報の整合性が取れなくなったら以下を行う。

dcmctl resetFileTransaction

▼以下で確認。
dcmctl resyncInstance -v

    Component               Type          Up Status     In Sync Status
================================================================================
1   home                    OC4J          Up            True
2   HTTP_Server             HTTP_Server   Up            True
3   sample                  OC4J          Down          True

dcmctl updateConfig -v
何も出なければOK

■DCMデーモンを明示的に起動
dcm-daemonは以下のコマンドで起動する。

% opmnctl startproc ias-component=dcm-daemon    (DCMデーモンを明示的に起動)


■ポートを使用しているプロセスの確認方法
▼solarisの場合。
#!/bin/sh
for pid in `ps -aeo pid | grep -v PID`; do
/usr/ucb/ps auxwww | egrep " ${pid} " | egrep -v egrep
pfiles ${pid} | egrep "^${pid}:|sockname:"
done

#!/bin/sh
for pid in `ps -aeo pid | grep -v PID`; do
pfiles ${pid} | egrep "^${pid}:|sockname:"
done


▼windowsの場合
winの場合、netstatのオプションで確認できるようです。

netstat -ano

■OHS ping timuout値、実行間隔の変更方法 

1. opmn.xmlを設定する。ping の設定は「process-type」、「process-set」に設定。
   {ping timeout="60" interval="60"/}

※【注】10.1.3では {process-set id="HTTP_Server" numprocs="1"/}の前に入れること

▼9.0.4の例
-------------------------------------------------------------
{ias-component id="HTTP_Server"}
   {process-type id="HTTP_Server" module-id="OHS"}
      {module-data}
         {category id="start-parameters"}
            {data id="start-mode" value="ssl-enabled"/}
         {/category}
      {/module-data}
      {process-set id="HTTP_Server" numprocs="1"/}
      {ping timeout="60" interval="60"/}   ←★追記部分

   {/process-type}
{/ias-component}
-------------------------------------------------------------

▼10.1.3の例
-------------------------------------------------------------
{/ias-component>
{ias-component id="HTTP_Server"}
   {process-type id="HTTP_Server" module-id="OHS"}
      {module-data}
         {category id="start-parameters"}
            {data id="start-mode" value="ssl-enabled"/}
         {/category}
      {/module-data}
      {process-set id="HTTP_Server" numprocs="1"}
         {event-scripts}
            {pre-stop path="$ORACLE_HOME/opmn/bin/eventscript.sh"/}
         {/event-scripts}
      {ping timeout="60" interval="60"/}   ←★追記部分
     {/process-set}
   {/process-type}
{/ias-component}
-------------------------------------------------------------

2. 設定値をOPMNプロセスに反映
% opmnctl reload

3. OHSのHANGついてはpsで確認したOHSのプロセスを全て
% kill -STOP <全OHSインスタンスのPID>
※OHSがOPMNからのHTTPリクエストに応答しない状況にする。

4. opmn.logの内容から2分おきにPINGタイムアウトが発生を確認

■javaヒープサイズ変更(10.1.3の場合)

・opmn.xml にサイズ(-Xmx32m)を指定。
{/ias-component}
  {ias-component id="OC4J">
    {process-type id="home" module-id="OC4J" status="enabled"}
      {module-data}
        {category id="start-parameters"}
           {data id="java-options" value="-server -Xmx32m -XX:+UsePerfData
-Djava.security.policy=$ORACLE_HOME/j2ee/home/config/java2.policy
-Djava.awt.headless=true -Dhttp.webdir.enable=false"/}
        {/category}

・opmnctl reload
・opmnctl stopproc process-type=home
・opmnctl startproc process-type=home
・ASC にて動作を確認(インスタンスの停止・起動等)

■javaヒープサイズ変更(9.0.4の場合)
・opmn.xml にサイズ(-Xmx32m)を指定。
  --上記参考のこと--
・opmnctl stopproc process-type=home
・opmnctl startproc process-type=home
・ASC にて動作を確認(インスタンスの停止・起動等)






Application Server専用ページへもどる