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専用ページへもどる