2.11 Oracle ORAchkおよびOracle EXAchkのトラブルシューティング

Oracle ORAchkおよびOracle EXAchkの問題をトラブルシューティングおよび修正するには、この項で説明されている手順に従います。

トピック:

2.11.1 Oracle ORAchkおよびOracle EXAchkの問題をトラブルシューティングする方法

Oracle ORAchkおよびOracle EXAchkの問題をトラブルシューティングするには、この項で説明されている手順に従います。

Oracle ORAchkおよびOracle EXAchkをトラブルシューティングするには:

  1. 正しいツールを使用していることを確認します。

    Oracle EXAchkは、Oracle Database Applianceを除くOracle Engineered Systemsに対して使用します。その他すべてのシステムにはOracle ORAchkを使用します。

  2. Oracle ORAchkおよびOracle EXAchkの最新バージョンを使用していることを確認します。
    1. –vオプションを使用して、バージョンをチェックします。
      $ ./orachk –v
      $ ./exachk –v
    2. 次の場所で入手可能な最新バージョンとご使用のバージョンを比較します。
      • Oracle ORAchkの場合は、My Oracle Supportノート1268927.2を参照してください。

      • Oracle EXAchkの場合は、My Oracle Supportノート1070954.1を参照してください。

  3. My Oracle Supportノート1070954.1で、FAQをチェックして同様の問題がないかどうかを調べます。
  4. logディレクトリ内のファイルを確認します。
    • 該当するerror.logファイルをチェックして、関連するエラーを調べます。

      error.logファイルには、実行時に取得されたstderr出力が格納されています。

      • output_dir/log/orachk _error.log

      • output_dir/log/exachk _error.log

    • 該当するログをチェックして、その他の関連情報を調べます。

      • output_dir/log/orachk.log

      • output_dir/log/exachk.log

  5. 同様の問題に関するMy Oracle Supportノートを確認します。
  6. Oracle ORAchkの問題については、My Oracle Supportコミュニティ(MOSC)のORAchk (MOSC)をチェックします。
  7. 必要な場合は、デバッグ出力を取得した後、SRを登録し、生成されたzipファイルを添付します。

2.11.2 デバッグ出力を取得する方法

デバッグ情報を取得するには、次の手順に従います。

デバッグ出力を取得するには:

  1. デバッグを有効にする前に、実行する処理を最小限に抑えて問題を再現します。

    デバッグで多くの情報を取得すると、生成されるzipファイルが大きくなることがあるため、問題の再現に必要な処理の範囲を絞り込んでください。

    チェックの範囲を限定するには、コマンドライン・オプションを使用します。

  2. デバッグを有効にします。
    オンデマンド・モードでツールを実行している場合は、–debugオプションを使用します。
    $ ./orachk –debug
    $ ./exachk –debug
    次に例を示します。
    $ ./orachk -debug
    + PS4='$(date "+ $LINENO: + ")'
     36276: + [[ -z 1 ]]
     36302: + sed 's/[\.\/]//g'
     36302: + basename /global/u01/app/oracle/arch03/ORACLE_CHECK/ORACLE_SR/orachk
     36302: + echo orachk
     36302: + program_name=orachk
     36303: + which bash
     36303: + echo 0
     36303: + bash_found=0
     36304: + SSH_PASS_STATUS=0
     36307: + set +u
     36309: + '[' 0 -ne 0 ']'
     36315: + raccheck_deprecate_msg='RACcheck has been deprecated.  ORAchk provides the same functionality.  
     Please switch to using ORAchk from same directory.\n\nRACcheck will not be available after this (12.1.0.2.3) release.
     See MOS Note "RACcheck Configuration Audit Tool Statement of Direction - name change to ORAchk (Doc ID 1591208.1)".\n'
     36316: + '[' orachk = raccheck ']'
     36325: + export LC_ALL=C
     36325: + LC_ALL=C
     36326: + NO_WRITE_PASS=0
     36327: + ECHO=:
     36328: + DEBUG=:
     36329: + AUDITTAB=db_audit
     36379: + supported_modules='PREUPGR              
     . . . . . . 
     . . . . . . 
    
    

    デバッグを有効にすると、Oracle ORAchkおよびOracle EXAchkは次の場所に新しいデバッグ・ログ・ファイルを作成します。

    • output_dir/log/orachk _debug_date_stamp_time_stamp.log

    • output_dir/log/exachk _debug_date_stamp_time_stamp.log

    デバッグ出力ファイルの内容は次のとおりです。

    • ローカル・ノード上のプログラムのbash -x

    • すべてのリモート・ノード上のプログラムのbash -x

    • 動的に生成されてコールされたすべてのスクリプトのbash -x

      • output_dirディレクトリには、状態チェック時に使用されたその他の様々な一時ファイルが保持されます。

      • デーモンを使用して状態チェックを実行した場合は、–d start_debugオプションを使用してデーモンを再起動します。

        –d start_debugオプションを使用してデーモンを実行すると、デーモンについて両方のデバッグが生成され、すべてのクライアント実行にデバッグが含まれます。
        $ ./orachk –d start_debug
        $ ./exachk –d start_debug
      デーモンでデバッグを実行すると、Oracle ORAchkおよびOracle EXAchkは、デーモンが起動されたディレクトリ内にデーモン・デバッグ・ログ・ファイルを作成します。
      orachk_daemon_debug.log
      exachk_daemon_debug.log
  3. 生成された出力zipファイルおよびデーモン・デバッグ・ログ・ファイル(該当する場合)を収集します。

2.11.3 リモート・ログインの問題

Oracle ORAChkおよびOracle EXAchkのツールでSSHまたはSCPの特定と実行に問題がある場合、それらのツールではリモート・チェックを実行できません。

また、次の場合は、root特権コマンドが機能しません。

  • パスワードなしのリモートrootログインがSSHで許可されていない場合

  • Expectユーティリティがrootパスワードを渡すことができない場合

  1. SSHおよびSCPコマンドを検出できることを確認します。
    • 予期した場所にSSHがない場合、SSHコマンドはエラー-bash: /usr/bin/ssh -q: No such file or directoryを戻します。

      SSHの場所を指すRAT_SSHELL環境変数を設定します。

      $ export RAT_SSHELL=path to ssh
    • 予期した場所にSCPがない場合、SCPコマンドはエラー/usr/bin/scp -q: No such file or directoryを戻します。

      SCPの場所を指すRAT_SCOPY環境変数を設定します。
      $ export RAT_SCOPY=path to scp
  2. 実行に使用しているユーザーが、エラーが発生しているリモート・ノードに対してOracle ORAchkおよびOracle EXAchkを実行している場所から次のコマンドを手動で実行できることを確認します。
    $ ssh root@remotehostname "id"
    root@remotehostname's password:
    uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
    • コマンドの実行時に問題が発生する場合は、システム管理者に連絡して、ツールを実行するために一時的に修正します。

    • Oracle ORAchkおよびOracle EXAchkは、リモート・ユーザー・プロファイル内でプロンプトまたはトラップを検索します。リモート・プロファイル内にプロンプトがある場合は、少なくとも一時的にそれらをコメント・アウトし、再度テスト実行します。

    • パスワードなしのリモートrootログインを構成できる場合は、次のように/etc/ssh/sshd_configファイルを編集します。
      n to yes
      ここで、クラスタのすべてのノードで次のコマンドをrootとして実行します。
      hd restart
  3. Expectデバッグを有効にします。
    • Oracle ORAchkは、Expectユーティリティを使用して(使用可能な場合)パスワード・プロンプトに応答し、パスワード検証のためにリモート・ノードに接続します。さらに、デフォルトでは、実際の接続プロセスをログに記録せずにroot収集を実行します。

    • リモート・ターゲットの接続の問題をデバッグできるように環境変数を設定します。

      • RAT_EXPECT_DEBUG: この変数が-dに設定されている場合、Expectコマンドのトレースはアクティブ化されています。トレース情報は標準出力に書き込まれます。

        次に例を示します。
        export RAT_EXPECT_DEBUG=-d
      • RAT_EXPECT_STRACE_DEBUG: この変数がstraceに設定されている場合、straceによってExpectコマンドがコールされます。トレース情報は標準出力に書き込まれます。

        次に例を示します。
        export RAT_EXPECT_STRACE_DEBUG=strace
    • この2つの変数の組合せを変更することにより、3つのレベルのExpect接続トレース情報を取得できます。

注意:

RAT_EXPECT_DEBUGおよびRAT_EXPECT_STRACE_DEBUG変数は、Oracleサポートまたは開発の指示があった場合にのみ設定してください。RAT_EXPECT_DEBUGおよびRAT_EXPECT_STRACE_DEBUG変数を他の変数やユーザー・インタフェース・オプションと使用すると、トレース時に収集されるデータの量を制限できます。標準出力を取得するには、scriptコマンドを使用します。

リモートの問題を解決する際の一時的な回避策として、各ノードでローカルにレポートを実行し、それらを後でマージします。

各ノードで次を実行します。
./orachk -local
./exachk -local
次に、収集をマージして1つのレポートを取得します。
./orachk –merge zipfile 1  zip file 2 > zip file 3 > zip file ...
./exachk –merge zipfile 1  zip file 2 > zip file 3 > zip file ...

2.11.4 権限の問題

Oracle ORAchkおよびOracle EXAchkを実行するのに十分なディレクトリ権限が必要です。

  1. ツールのスクリプトorachkおよびexachkに対する権限が755 (-rwxr-xr-x)に設定されていることを確認します。
    権限が設定されていない場合は、次のように権限を設定します。
    $ chmod 755 orachk
    $ chmod 755 exachk
  2. Oracle ORAchkおよびOracle EXAchkをrootとしてインストールし、ツールを別のユーザーとして実行した場合、必要なディレクトリ権限がないことがあります。
    [root@randomdb01 exachk]# ls -la
    total 14072
    drwxr-xr-x  3 root root    4096 Jun  7 08:25 .
    drwxrwxrwt 12 root root    4096 Jun  7 09:27 ..
    drwxrwxr-x  2 root root    4096 May 24 16:50 .cgrep
    -rw-rw-r--  1 root root 9099005 May 24 16:50 collections.dat
    -rwxr-xr-x  1 root root  807865 May 24 16:50 exachk
    -rw-r--r--  1 root root 1646483 Jun  7 08:24 exachk.zip
    -rw-r--r--  1 root root    2591 May 24 16:50 readme.txt
    -rw-rw-r--  1 root root 2799973 May 24 16:50 rules.dat
    -rw-r--r--  1 root root     297 May 24 16:50 UserGuide.txt

いずれにしても、rootとして実行するか、Oracleソフトウェアのインストール・ユーザーとして再度解凍する必要があります。

2.11.5 パフォーマンスの低下、チェックのスキップおよびタイムアウト

パフォーマンスの低下やその他の問題を修正するには、次の手順に従います。

Oracle ORAchkおよびOracle EXAchkでコマンドが実行されると、コマンドを実行するために子プロセスが生成され、ウォッチドッグ・デーモンが子プロセスを監視します。子プロセスに時間がかかる場合や子プロセスがハングした場合、ウォッチドッグは子プロセスを停止し、チェックはスキップ済として登録されます。

図2-27 スキップされたチェック

図2-27の説明が続きます
「図2-27 スキップされたチェック」の説明

watchdog.logファイルには、killing stuck commandのようなエントリも格納されます。

問題の原因によっては、スキップされたチェックが表示されないこともあります。

  1. 問題が発生するパターンがあるかどうかを確認します。
    • たとえば、EBSチェックは、存在するデータの量に依存し、デフォルトのタイムアウトより長くかかることがあります。

    • リモート・プロファイル内にプロンプトがある場合、リモート・チェックはタイムアウトして停止し、スキップされることがあります。Oracle ORAchkおよびOracle EXAchkは、リモート・ユーザー・プロファイル内でプロンプトまたはトラップを検索します。リモート・プロファイル内にプロンプトがある場合は、少なくとも一時的にそれらをコメント・アウトし、再度テスト実行します。

  2. デフォルトのタイムアウトを長くします。
    • 環境変数を設定して、デフォルトのタイムアウトをオーバーライドします。

      表2-5 タイムアウトの制御

      タイムアウトの制御 デフォルト値(秒) 環境変数

      rootによって実行されないチェック(ほとんど)。

      90

      RAT_TIMEOUT

      すべてのrootチェックの収集。

      300

      RAT_ROOT_TIMEOUT

      SSHログインのDNSハンドシェイク。

      1

      RAT_PASSWORDCHECK_TIMEOUT

    • デフォルトのタイムアウトは、ほとんどの場合に十分な長さに指定されています。タイムアウトの長さが十分でない場合、システム・パフォーマンスの問題が発生している可能性があります。タイムアウトが多い場合は、環境におけるOracle ORAchkおよびOracle EXAchk以外の問題を示している可能性があります。

  3. いずれの処理も失敗しない程度までタイムアウトを長くすることが受け入れられない場合は、問題があるチェックを除外し、十分なタイムアウトを指定して別々に実行した後、レポートをマージしてみます。
  4. 問題がチェックの遅延やスキップの結果ではないと思われ、クラスタが大規模である場合は、データベースのパラレル実行に使用されるスレーブ・プロセスの数を増やしてみます。
    • データベース収集はパラレルで実行されます。データベースのパラレル実行に使用されるスレーブ・プロセスのデフォルト数は自動的に計算されます。デフォルト数を変更するには、オプション-dbparallel slave processesまたは–dbparallelmaxを使用します。

    注意:

    並列度が高いほど、多くのリソースが消費されます。ただし、経過時間は短くなります。

    パラレル・スレーブの数をデフォルト値より増やすか、減らします。

    メンテナンス後にシステム全体が起動した後、ユーザーがシステムで許可される前に、より多くのパラレル・スレーブを使用して、できるだけ迅速に実行を終了します。

    ビジー状態の本番システムでは、デフォルト値より少なく、シリアル・モードでの実行より多い数を使用して、稼働中のシステムにあまり影響を与えずに、より迅速に実行します。

    データベースのパラレル実行をオフにするには、-dbserialオプションを使用します。