Data Guard
手順 4 サービス、モジュールおよびアクション監視の有効化 サービス、モジュールおよびアクション監視の有効化 サービス、モジュールおよびアクション監視の有効化 サービス、モジュールおよびアクション監視の有効化
各サービス内の重要なモジュールおよびアクションのパフォーマンス・データを有効にして 追跡することができます。パフォーマンス統計は、V$SERV_MOD_ACT_STATS ビューで参 照できます。次に、SQL*Plusセッションで実行されるコマンドとアクションを示します。
1. ERPサービスで、モジュールpayroll内のexceptions payアクションを監視します。
2. ERPサービスで、モジュールpayroll内のすべてのアクションを監視します。
3. HOT_BATCHサービスで、モジュールposting内のすべてのアクションを監視します。
4. DBA_ENABLED_AGGREGATIONSに対する問合せによって構成を確認します。
execute DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(SERVICE_NAME => 'ERP', MODULE_NAME=>
'PAYROLL', ACTION_NAME => 'EXCEPTIONS PAY');
execute DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(SERVICE_NAME => 'ERP', MODULE_NAME =>
'PAYROLL', ACTION_NAME => null);
execute DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(SERVICE_NAME => 'HOT_BATCH', MODULE_NAME =>'POSTING', ACTION_NAME => null);
REM Verify the enabled service, module, action configuration col AGGREGATION_TYPE format a20 trunc heading 'AGGREGATION' col PRIMARY_ID format a20 trunc heading 'SERVICE'
col QUALIFIER_ID1 format a20 trunc heading 'MODULE' col QUALIFIER_ID2 format a20 trunc heading 'ACTION' select * from DBA_ENABLED_AGGREGATIONS ;
問合せの出力は次のようになります。
AGGREGATION SERVICE MODULE ACTION
ジョブ・スケジューラでのサービスの使用方法 ジョブ・スケジューラでのサービスの使用方法 ジョブ・スケジューラでのサービスの使用方法 ジョブ・スケジューラでのサービスの使用方法
DBMS_SCHEDULER.CREATE_JOBプロシージャを使用して、ジョブ・クラス下で実行する ジョブを定義します。この例では、手順2で定義されたジョブ・クラスの割当てにより、
MY_NAME.MY_PROCプロシージャはHOT_BATCHサービスで実行されます。
execute DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'my_report_job', JOB_TYPE => 'stored_procedure', JOB_ACTION => 'my_name.my_proc();', NUMBER_OF_ARGUMENTS => 4,START_DATE => SYSDATE+1, REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30, JOB_CLASS => 'HOT_BATCH', ENABLED => TRUE, AUTO_DROP => false, COMMENTS => 'my report on daily status');
高速アプリケーション通知機能のためのコールアウトの使用 高速アプリケーション通知機能のためのコールアウトの使用 高速アプリケーション通知機能のためのコールアウトの使用 高速アプリケーション通知機能のためのコールアウトの使用 方法
方法 方法 方法
カスタム作成されたアプリケーション・コールアウトは、プログラムまたはシェル・スクリ プト・ラッパーで、クラスタ上のアプリケーション、クラスタ上にないアプリケーション、
または中間層で管理される接続プールを起動および停止するために使用できます。コールア ウトは、サービスまたはサービスの一部の起動時、停止時または障害が発生して自動的に再 起動するときに、RACによってただちに実行されます。コールアウトとしてエンコードで きる他のアクションには(アプリケーションの再起動の他に)不良チケットの記録、管理者 への電子メール送信またはページング、サード・パーティのイベント・システムまたはクラ スタウェア・コンポーネントの起動などがあります。
コールアウトはRAC-HAをCRSに配置するための要件ではありませんが、コールアウトを 使用した通知メカニズムを作成することをお薦めします。CRSのホーム・ディレクトリが ネットワーク全体で共有されていない場合、各新規コールアウトは、各RACノード上の /private/oracle/crs/racg/usrcoディレクトリに配置する必要があります。
次の例(Bourneシェル・スクリプト)に、HAイベントが発生すると必ず起動するいくつか
のコールアウト・オプションを示します。これらのコールアウトは、すべてのDOWN条件 に対して、ログへのアップタイム・ステータス・レコードの書込みと不良チケットの記録
(ITトラブル・チケット・アプリケーションを使用)の2つのアクションを実行します。
#!/usr/bin/sh
#
# Description: Example wrapper script to enable RAC event logging and notification
# to generic third-party systems. The script showcases two possible
# methods to enable local or remote logging/notification of
RAC-# detected events.
#
# Note: Unless your CRS home directory is on an NFS-mounted device, you should
# copy this script to the racg/usrco directories in your CRS home
高速アプリケーション通知機能のためのコールアウトの使用方法
# directory, for all RAC nodes protected by Oracle Integrated Clusterware. # This is a one-time setup.
#
# For additional details on callouts and what name=value pairs are passed by RAC,
# please review /private/oracle/crs/racg/usrco/README.
# Global variables:
#
AWK=/usr/bin/awk
MY_CRS_HOME=/private/oracle/crs
# Scan and parse arglist:
#
for ARGS in $*; do
PROPERTY=`echo $ARGS | $AWK -F"=" '{print $1}'`
VALUE=`echo $ARGS | $AWK -F"=" '{print $2}'`
#> map EVTTYPE to EVENT_TYP, NODE to HOST:
case $PROPERTY in
#> note: EVENT_TYP is one of: NODE, DATABASE, INSTANCE, SERVICE, SERVICEMEMBER EVENT_TYP | event_typ) NOTIFY_EVENT_TYP=$VALUE ;;
VERSION | version) NOTIFY_VERSION=$VALUE ;;
SERVICE | service) NOTIFY_SERVICE=$VALUE ;;
DATABASE | database) NOTIFY_DBNAME=$VALUE ;;
INSTANCE | instance) NOTIFY_INSTANCE=$VALUE ;;
HOST | host) NOTIFY_HOST=$VALUE ;;
STATUS | status) NOTIFY_STATUS=$VALUE ;;
TIMESTAMP | timestamp) NOTIFY_SVRLOGDATE=$VALUE ;;
esac done
# ###################################################
# [1] Notification Method 1: On-cluster file logging
# ###################################################
# This section simply writes one-line entries for each event published by RAC,
# and the log is written to standard RAC log directory. It will blindly record
# all RAC events, regardless of state (UP, DOWN or NOT_RESTARTING):
RACEVT_LOGFILE=$MY_CRS_HOME/racg/log/rac_${NOTIFY_SERVICE}_uptime.log
echo RAC\(v$NOTIFY_VERSION\): $NOTIFY_STATUS event, type "$NOTIFY_EVENT_TYP", \ `if [ -n "$NOTIFY_SERVICE" ]; then \
echo "for service $NOTIFY_SERVICE"
fi` \
\[`if [ -n "$NOTIFY_INSTANCE" ]; then \ echo "inst: $NOTIFY_INSTANCE"
fi` \
`if [ -n "$NOTIFY_DATABASE" ]; then \ echo "db: $NOTIFY_DATABASE"
fi` \
`if [ -n "$NOTIFY_HOST" ]; then \ echo "db: $NOTIFY_HOST"
fi` \
\] received on $NOTIFY_SVRLOGDATE >> $RACEVT_LOGFILE
# ########################################################
# [2] Notification Method 2: On-cluster program execution
# ########################################################
# Let's assume you have a custom client program in /tmp (say logTicket) to which
# you can pass certain arguments. This program connects to a customer-service
# application that processes incident tickets for your IT department:
# % /tmp/logTicket {serverside_timestamp} \
# {databasename} {servicename} \
# {instancename} {hostname}
#
# Let us also assume that a ticket would be logged only for NOT_RESTARTING events,
# as they are the ones that exceeded RAC-monitored timeouts and seriously need
# human intervention for full resolution.
#
#
---# ONE SOLUTION TO [2]:
#
---if [ $NOTIFY_STATUS = "NOT_RESTARTING" -o $NOTIFY_STATUS = "not_restarting" ]; then /tmp/logTicket $NOTIFY_SVRLOGDATE $NOTIFY_DBNAME \
$NOTIFY_SERVICE \
$NOTIFY_INSTANCE $NOTIFY_HOST >> $RACEVT_LOGFILE fi
JDBC高速アプリケーション通知の構成
JDBC 高速アプリケーション通知の構成 高速アプリケーション通知の構成 高速アプリケーション通知の構成 高速アプリケーション通知の構成
高速アプリケーション通知を使用するには、アプリケーションでJDBC暗黙接続キャッシュ を使用する必要があります。JDBC接続プールは、コールアウト・メカニズムと統合され、
次の利点を提供します。
■ サービスをサポートする最初のRACインスタンスに、接続プール用に定義されている 最小限のセッションを送るかわりに、サービスの初回起動時にRAC全体で接続を均等 に分散させます。
■ 追加のRACインスタンスを消費すると同時に、サービスが追加のインスタンスでUPと して登録されます。
■ 終了した接続を消去すると同時に、サービスがすべてのインスタンスでDOWNとして宣 言され、そのノードも同時にDOWNとして宣言されます。
■ エラーをクライアントにレポートすると同時に、サービスが再起動を繰り返し試行する 間クライアントを待機させるかわりにNOT RESTARTINGステータスが検出されます。
■ サービスをサポートするRACインスタンス全体に、実行時にクライアントの作業要求 を分散します。
JDBC クライアント・サイドの構成 クライアント・サイドの構成 クライアント・サイドの構成 クライアント・サイドの構成
JDBC暗黙接続キャッシュおよびOracle Notification Service(ONS)の構成方法は、『JDBC ユーザーズ・ガイドおよびリファレンス』を参照してください。ONSが正しく構成されな い場合は、暗黙接続キャッシュの作成に失敗し、最初のgetConnection()requestで該 当する例外が発生します。
データソースに対して最初のgetConnection()要求を行う前に、
ConnectionFailoverEnabledプロパティを設定します。高速接続フェイルオーバーが有 効な場合、フェイルオーバーは、接続キャッシュ内の各接続に対して適用されます。
Connection Cache Managerを使用してアプリケーションで明示的に接続キャッシュを作成
する場合は、ConnectionFailoverEnabledを設定する必要があります。
RAC の高可用性サーバー・サイドの構成 の高可用性サーバー・サイドの構成 の高可用性サーバー・サイドの構成 の高可用性サーバー・サイドの構成
中間層のONSクライアントが状態変化を受信し対応するために、RACのイベント・システ ムはすべてのONSにHAイベントを転送するように構成する必要があります。