4.4 Oracle RACのパフォーマンスの問題の事前検出と診断

Oracle Cluster Health Advisorでは、システム管理者およびデータベース管理者に、Oracle RACデータベースおよびクラスタ・ノードに関する保留中のパフォーマンス問題と根本原因、および修正処理について早期に警告します。Oracle Cluster Health Advisorを使用して、可用性とパフォーマンス管理を向上させます。

Oracle Cluster Health Advisorは、デフォルト・モデルに基づいて、観測した入力の予測値を推定します。デフォルト・モデルは、ターゲット・システムの通常操作期間に基づいてトレーニングされた調整モデルです。次にOracle Cluster Health Advisorは、観測された値と予測された値の差異に基づいて、各入力に関する異常検出を実行します。Oracle Cluster Health Advisorは、特定の問題に関連付けられている入力の異常が十分な量になると、警告を発行し、対象を絞った診断および修正処理がただちに生成されます。

また、Oracle Cluster Health Advisorは、Oracle Clusterwareイベント通知プロトコルを使用して、警告メッセージをEnterprise Manager Cloud Controlに送信します。

Oracle Exadataシステムのパフォーマンスと可用性の問題を検出するOracle Cluster Health Advisorの機能が、このリリースで改善されました。

Oracle Solaris向けのOracle Cluster Health Advisorサポートによって、Oracle RACデータベース・デプロイメントでパフォーマンスと可用性の問題を早期に検出および予防できるようになりました。

グリッド・インフラストラクチャ管理リポジトリのインストールの詳細は、Oracle® Grid Infrastructure Grid Infrastructureインストレーションおよびアップグレード・ガイド20c for Linuxを参照してください。

4.4.1 Oracle Cluster Health Advisorのアーキテクチャ

Oracle Cluster Health Advisorは、クラスタ内の各ノードで高可用性クラスタ・リソースochadとして実行されます。

各Oracle Cluster Health Advisorデーモン(ochad)は、クラスタ・ノード上のオペレーティング・システムを監視し、オプションでノード上の各Oracle Real Application Clusters (Oracle RAC)データベース・インスタンスを監視します。

ochadデーモンは、クラスタ状態モニターからオペレーティング・システムのメトリック・データを受信し、メモリー・マップ済ファイルからOracle RACデータベース・インスタンスのメトリックを取得します。デーモンには、各データベース・インスタンスへの接続は必要ありません。このデータは、選択したモデルとともに、Oracle Cluster Health Advisorの状態予測エンジンでノードとそれぞれの監視対象データベース・インスタンスの両方に対して使用され、その状態が1分間に複数回分析されます。

4.4.2 グリッド・インフラストラクチャ管理リポジトリの削除

Oracle Database 23cでは、GIMRはサポートされなくなりました。GIMRが既存のOracle Grid Infrastructureインストールで構成されている場合は、GIMRを削除します。

  1. gridユーザーとして、任意のクラスタ・ノードにログインし、gridが所有する新しいディレクトリを作成して、GIMR削除スクリプトを格納します。
    mkdir -p $ORACLE_HOME/gimrdel
    chown grid:oinstall $ORACLE_HOME/gimrdel
  2. My Oracle Supportノート2972418.1からscriptgimr.zip$ORACLE_HOME/gimrdelディレクトリにダウンロードします。
  3. scriptgimr.zipからreposScript.shスクリプトを抽出し、gridユーザーにreposScript.shスクリプトに対する読取りおよび実行権限があることを確認します。
    unzip -q $ORACLE_HOME/gimrdel/scriptgimr.zip
  4. CHAユーザー・モデルを問い合せてエクスポートします。
    Grid_home/bin/chactl query model
    Grid_home/bin/chactl export model -name model_name -file model_name.svm
  5. /gimrdelディレクトリから、削除モードでreposScript.shスクリプトを実行します。
    $ORACLE_HOME/gimrdel/reposScript.sh -mode="Delete"

4.4.3 Oracle Cluster Health AdvisorによるOracle Real Application Clusters (Oracle RAC)環境の監視

Oracle Real Application Clusters (Oracle RAC)またはOracle RAC One Nodeデータベースの場合、Oracle Grid Infrastructureがインストールされると、デフォルトで各ノードにOracle Cluster Health Advisorが自動的にプロビジョニングされます。

Oracle Cluster Health Advisorに追加の構成は必要ありません。

Oracle Cluster Health AdvisorでOracle Real Application Clusters (Oracle RAC)またはOracle RAC One Nodeデータベース・インスタンスが実行中であることが検出されると、Oracle Cluster Health Advisorはクラスタ・ノードの監視を自律的に開始します。Gridユーザーとしてログインしている場合は、CHACTLを使用してデータベースの監視をオンにします。

Oracle Real Application Clusters (Oracle RAC)環境を監視するには:

  1. データベースを監視するには、次のコマンドを実行します:
    $ chactl monitor database –db db_unique_name

    Oracle Cluster Health Advisorは、デフォルトのモデルを使用して、Oracle Real Application Clusters (Oracle RAC)またはOracle RAC One Nodeデータベースのすべてのインスタンスを監視します。Oracle Cluster Health Advisorでは、単一インスタンスのOracleデータベースがOracle Real Application Clusters (Oracle RAC)データベースと同じクラスタを共有している場合でも、その単一インスタンスのOracleデータベースを監視できません。

    各データベース・インスタンスは、Oracle Real Application Clusters (Oracle RAC)データベース・ノード全体、および単一ノードで複数のデータベースが実行されたときの両方で、独立して監視されます。

  2. データベースの監視を停止するには、次のコマンドを実行します:
    $ chactl unmonitor database –db db_unique_name

    Oracle Cluster Health Advisorは、指定されたデータベースのすべてのインスタンスの監視を停止します。ただし、Oracle Cluster Health Advisorでは、保存期間を超えてエージ・アウトされるまで、データまたは問題が削除されません。

  3. すべてのクラスタ・ノードおよびデータベースの監視ステータスを確認するには、次のコマンドを実行します:
    $ chactl status

    –verboseオプションを使用して、ノードおよび各データベースに使用されているモデルの詳細を表示します。

4.4.4 状態診断でのCluster Health Advisorの使用

Oracle Cluster Health Advisorは問題を自律的に提起し、それをクリアします。

Oracle Grid InfrastructureユーザーはCHACTLを使用して、格納されている情報を問い合せることができます。

診断データを問い合せするには:

  1. 現在未解決の問題を問い合せるには、次のコマンドを実行します:
    chactl query diagnosis -db db_unique_name -start time -end time

    この構文例では、db_unique_nameはデータベース・インスタンスの名前です。データを取得する開始日時と終了日時も指定します。日時をYYYY-MM-DD HH24:MI:SSの形式で指定します。

  2. -htmlfile file_nameオプションを使用して、出力をHTML形式で保存します。

例4-5 テキストおよびHTML形式のCluster Health Advisorの出力例

次の例は、oltpacbdという名前のデータベースに対するchactl query diagnosisコマンドのデフォルトのテキスト出力を示しています。
$ chactl query diagnosis -db oltpacdb -start "2016-02-01 02:52:50" -end "2016-02-01 03:19:15"
2016-02-01 01:47:10.0  Database oltpacdb  DB Control File IO Performance (oltpacdb_1) [detected]
2016-02-01 01:47:10.0  Database oltpacdb  DB Control File IO Performance (oltpacdb_2) [detected]
2016-02-01 02:52:15.0  Database oltpacdb  DB CPU Utilization (oltpacdb_2) [detected]
2016-02-01 02:52:50.0  Database oltpacdb  DB CPU Utilization (oltpacdb_1) [detected]
2016-02-01 02:59:35.0  Database oltpacdb  DB Log File Switch (oltpacdb_1) [detected]
2016-02-01 02:59:45.0  Database oltpacdb  DB Log File Switch (oltpacdb_2) [detected]

Problem: DB Control File IO Performance
Description: CHA has detected that reads or writes to the control files are slower than expected.
Cause: The Cluster Health Advisor (CHA) detected that reads or writes to the control files were slow
because of an increase in disk IO. 
The slow control file reads and writes may have an impact on checkpoint and Log Writer (LGWR) performance.
Action: Separate the control files from other database files and move them to faster disks or Solid State Devices.

Problem: DB CPU Utilization
Description: CHA detected larger than expected CPU utilization for this database.
Cause: The Cluster Health Advisor (CHA) detected an increase in database CPU utilization 
because of an increase in the database workload.
Action: Identify the CPU intensive queries by using the Automatic Diagnostic and Defect Manager (ADDM) and 
follow the recommendations given there. Limit the number of CPU intensive queries or 
relocate sessions to less busy machines. Add CPUs if the CPU capacity is insufficent to support 
the load without a performance degradation or effects on other databases.

Problem: DB Log File Switch
Description: CHA detected that database sessions are waiting longer than expected for log switch completions.
Cause: The Cluster Health Advisor (CHA) detected high contention during log switches 
because the redo log files were small and the redo logs switched frequently.
Action: Increase the size of the redo logs.

タイムスタンプには、特定のホストまたはデータベースで問題が検出された日時が表示されます。

ノート:

同じ問題が別のホストや別の日時にも発生することがありますが、診断には、問題およびその潜在的な影響の完全な詳細が表示されます。問題ごとに、ターゲットを絞った修正または予防措置も表示されます。

次に、HTML形式の出力の例を示します。
$ chactl query diagnosis -start "2016-07-03 20:50:00" -end "2016-07-04 03:50:00" -htmlfile ~/chaprob.html

図4-5 Cluster Health Advisor診断のHTML出力

図4-5の説明が続きます。
「図4-5 Cluster Health Advisor診断のHTML出力」の説明

4.4.5 クラスタ・デプロイメントのためのOracle Cluster Health Advisorモデルの調整

ノードおよびデータベースのデフォルトのモデルに付属しているOracle Cluster Health Advisorは、誤った警告通知を生成しないように設計されています。

chactl calibrateコマンドを使用して、特定のワークロードについて、Oracle Cluster Health Advisorモデルの感度および精度を高めることができます。

Oracleでは、6時間以上のデータを使用可能にし、クラスタとデータベースの両方が同じ時間範囲を使用して調整を行うことをお薦めします。

chactl calibrateコマンドは、正常に稼働しているすべてのワークロード・フェーズを含むユーザー指定の時間間隔を分析します。このデータは、Oracle Cluster Health Advisorが調整対象のクラスタおよびすべてのデータベースの監視中に収集されます。

  1. 十分なデータが使用可能かどうかを確認するには、query calibrationコマンドを実行します。

    720以上のレコードが使用可能であれば、Oracle Cluster Health Advisorは調整を正常に実行します。調整機能では、使用されているワークロード・プロファイルに対して一部のデータ・レコードが正常に発生しているとみなされない場合があります。この場合、query calibrationコマンドとcalibrateコマンドの両方でKPISETパラメータを使用してデータをフィルタします。

    たとえば:
    $ chactl query calibration -db oltpacdb -timeranges 
    'start=2016-07-26 01:00:00,end=2016-07-26 02:00:00,start=2016-07-26 03:00:00,end=2016-07-26 04:00:00' 
    -kpiset 'name=CPUPERCENT min=20 max=40, name=IOTHROUGHPUT min=500 max=9000' -interval 2
  2. 指定された日時の範囲についてモデルの調整を開始し、それをユーザー指定の名前で格納します。
    たとえば:
    $ chactl calibrate cluster –model weekday –timeranges ‘start=2016-07-03 20:50:00,end=2016-07-04 15:00:00’
  3. 次のように新しいモデルを使用してクラスタを監視します:
    たとえば:
    $ chactl monitor cluster –model weekday

例4-6 chactl query calibrateコマンドの出力

Database name : oltpacdb
Start time : 2016-07-26 01:03:10
End time : 2016-07-26 01:57:25
Total Samples : 120
Percentage of filtered data : 8.32%
The number of data samples may not be sufficient for calibration.

1) Disk read (ASM) (Mbyte/sec)

MEAN      MEDIAN    STDDEV    MIN       MAX     
4.96      0.20      8.98      0.06      25.68   

<25       <50       <75       <100      >=100    
97.50%    2.50%     0.00%     0.00%     0.00%    

2) Disk write (ASM) (Mbyte/sec)

MEAN      MEDIAN    STDDEV    MIN       MAX     
27.73     9.72      31.75     4.16      109.39  

<50       <100      <150      <200      >=200    
73.33%    22.50%    4.17%     0.00%     0.00%    

3) Disk throughput (ASM) (IO/sec)

MEAN      MEDIAN    STDDEV    MIN       MAX     
2407.50   1500.00   1978.55   700.00    7800.00 

<5000     <10000    <15000    <20000    >=20000  
83.33%    16.67%    0.00%     0.00%     0.00%    

4) CPU utilization (total) (%)

MEAN      MEDIAN    STDDEV    MIN       MAX     
21.99     21.75     1.36      20.00     26.80   

<20       <40       <60       <80       >=80     
0.00%     100.00%   0.00%     0.00%     0.00%    

5) Database time per user call (usec/call)

MEAN      MEDIAN    STDDEV    MIN       MAX     
267.39    264.87    32.05     205.80    484.57  

<10000000  <20000000  <30000000  <40000000  <50000000  <60000000  <70000000  >=70000000
100.00%   0.00%     0.00%     0.00%     0.00%     0.00%     0.00%     0.00%

Database name : oltpacdb
Start time : 2016-07-26 03:00:00
End time : 2016-07-26 03:53:30
Total Samples : 342
Percentage of filtered data : 23.72%
The number of data samples may not be sufficient for calibration.

1) Disk read (ASM) (Mbyte/sec)

MEAN      MEDIAN    STDDEV    MIN       MAX     
12.18     0.28      16.07     0.05      60.98   

<25       <50       <75       <100      >=100    
64.33%    34.50%    1.17%     0.00%     0.00%    

2) Disk write (ASM) (Mbyte/sec)

MEAN      MEDIAN    STDDEV    MIN       MAX     
57.57     51.14     34.12     16.10     135.29  

<50       <100      <150      <200      >=200    
49.12%    38.30%    12.57%    0.00%     0.00%    

3) Disk throughput (ASM) (IO/sec)

MEAN      MEDIAN    STDDEV    MIN       MAX     
5048.83   4300.00   1730.17   2700.00   9000.00 

<5000     <10000    <15000    <20000    >=20000  
63.74%    36.26%    0.00%     0.00%     0.00%    

4) CPU utilization (total) (%)

MEAN      MEDIAN    STDDEV    MIN       MAX     
23.10     22.80     1.88      20.00     31.40   

<20       <40       <60       <80       >=80     
0.00%     100.00%   0.00%     0.00%     0.00%    

5) Database time per user call (usec/call)

MEAN      MEDIAN    STDDEV    MIN       MAX     
744.39    256.47    2892.71   211.45    45438.35

<10000000  <20000000  <30000000  <40000000  <50000000  <60000000  <70000000  >=70000000
100.00%   0.00%     0.00%     0.00%     0.00%     0.00%     0.00%     0.00%

4.4.6 Oracle Cluster Health Advisorモデルの詳細の表示

chactl query modelコマンドを使用して、モデルの詳細を表示します。

  1. chactl query modelコマンドを使用すると、Oracle Cluster Health Advisorモデルの詳細をいつでも確認できます。
    たとえば:
    $ chactl query model –name weekday
    Model: weekday
    Target Type: CLUSTERWARE
    Version: OS12.2_V14_0.9.8
    OS Calibrated on: Linux amd64
    Calibration Target Name: MYCLUSTER
    Calibration Date: 2016-07-05 01:13:49
    Calibration Time Ranges: start=2016-07-03 20:50:00,end=2016-07-04 15:00:00
    Calibration KPIs: not specified
    

    モデルの名前変更、インポート、エクスポートおよび削除も可能です。

4.4.7 Oracle Cluster Health Advisorリポジトリの管理

Oracle Cluster Health Advisorリポジトリには、クラスタ・ホストの問題、データベースの問題、および関連するメトリックの兆候の履歴レコードがモデルとともに格納されます。

Oracle Cluster Health Advisorリポジトリは、定期的な問題の診断およびトリアージに使用されます。デフォルトでは、リポジトリは16のターゲット(ノードおよびデータベース・インスタンス)のデータを72時間保存できるサイズに設定されています。ターゲットの数が増加すると、保存時間が自動的に減少します。Oracle Cluster Health Advisorでは、保存時間が72時間を下回ると警告メッセージが生成され、保存時間が24時間を下回ると監視が停止し、重大なアラートが生成されます。

CHACTLコマンドを使用してリポジトリを管理し、最大保存時間を設定します。

  1. リポジトリの詳細を取得するには、次のコマンドを使用します:

    $ chactl query repository
    たとえば、前述のコマンドを実行すると、次の出力が表示されます:
    specified max retention time(hrs) : 72
    available retention time(hrs)     : 212
    available number of entities      : 2
    allocated number of entities      : 0
    total repository size(gb)         : 2.00
    allocated repository size(gb)     : 0.07
  2. 現在の監視対象のターゲット数に基づいて最大保存時間を時間数で設定するには、次のコマンドを使用します:

    $ chactl set maxretention -time number_of_hours
    たとえば:
    $ chactl set maxretention -time 80
    max retention successfully set to 80 hours
    

    ノート:

    maxretention設定により、リポジトリに保存される古いデータの期間が制限されますが、監視対象のターゲット数が増えてもこれが保持されるとはかぎりません。この場合、監視対象のターゲットと時間数の組合せが十分でなければ、Oracle Cluster Health Advisorリポジトリのサイズを増やします。

  3. Oracle Cluster Health Advisorリポジトリのサイズを増やすには、chactl resize repositoryコマンドを使用します。

    たとえば、現在設定されている最大保存時間を使用して32個のターゲットをサポートするようにリポジトリのサイズを変更するには、次のコマンドを使用します:

    $ chactl resize repository –entities 32
    repository successfully resized for 32 targets
    

4.4.8 Cluster Health Advisorのステータスの表示

SRVCTLコマンドは、可用性の高いサービスとしてのOracle Cluster Health Advisorのライフ・サイクル管理に対する総合的な制御を提供するツールです。

SRVCTLコマンドを使用して、Oracle RACクラスタのアクティブなハブまたはリーフ・ノードにおけるOracle Cluster Health Advisorサービスのステータスおよび構成をチェックします。

ノート:

ターゲットは、それが実行中であり、Oracle Cluster Health Advisorサービスもそのターゲットが存在するホスト・ノード上にある場合のみ監視対象になります。

  1. Oracle RACクラスタ内のすべてのノードにおけるOracle Cluster Health Advisorのステータスをチェックするには、次のようにします:
    srvctl status cha [-help]
    たとえば:
    # srvctl status cha
    Cluster Health Advisor is running on nodes racNode1, racNode2.
    Cluster Health Advisor is not running on nodes racNode3, racNode4.
  2. Oracle RACクラスタ内のすべてのノードでOracle Cluster Health Advisorサービスが有効化または無効化されているかどうかをチェックするには、次のようにします:
    srvctl config cha [-help]
    たとえば:
    # srvctl config cha
    Cluster Health Advisor is enabled on nodes racNode1, racNode2.
    Cluster Health Advisor is not enabled on nodes racNode3, racNode4.

4.4.9 Oracle Pluggable DatabasesのCluster Health Advisorのサポートの拡張

Cluster Health Advisor(CHA)診断機能は、Oracle Database 23cの256から4KのPDBをサポートするように拡張されました。

これは今後、Oracle Autonomous Databaseのデプロイメントに不可欠になります。CHAの問題検出および根本原因分析は、再構成などのDBイベントを考慮して改善されます。これにより、インスタンスの除去など、問題の検出、分析およびターゲットを絞った予防措置が改善されます。