16 Oracle Net Servicesのトラブルシューティング

Oracle Net Servicesでは、ネットワークの問題を理解し、テストして、解決するための手段が提供されています。Oracle Databaseには、ネットワークの接続と問題をテストおよび診断するための、ユーティリティおよびログ・ファイルとトレース・ファイルが含まれます。TNSPINGおよびTRCROUTEユーティリティは接続をテストします。ログ・ファイルとトレース・ファイルは、エラーが発生すると、ネットワーク・コンポーネント間の対話を追跡し記録します。この情報を評価すると、ネットワーク上の問題点を診断してトラブルシューティングできます。

一般的なテスト手順とネットワーク・エラー、および問題を解決する手順の概要について説明します。また、より複雑なネットワークの問題を診断してトラブルシューティングするために、エラー情報をロギングしてトレースする方法も学習します。

16.1 自動診断リポジトリの理解

自動診断リポジトリ(ADR)は、システム全体のトレースおよびロギング用中央リポジトリです。このリポジトリは、ネットワーク・トレースおよびロギング情報などの診断情報を蓄積するための、ファイルベースの階層データ・ストアです。

ADRホームは、Oracle製品のインスタンスに割り当てられるADRディレクトリのユニットです。各データベース・インスタンスに独自のADRホームが割り当てられます。同様に、各リスナー、Oracle Connection Managerおよびクライアント・インスタンスにも独自のADRホームが割り当てられます。

プロセス障害の場合は、インシデントが生成されます。インシデント・ダンプ・ファイルは、ADR_BASE/ADR_HOME/incident/ディレクトリにあり、ORACLE_BASE変数が設定されている場合、ADR_BASEはデフォルトでORACLE_BASEになります。変数が設定されていない場合、ADR_BASEはORACLE_HOME/logになります。ADR_BASEは任意の場所に設定できます。

インシデント・ダンプ・ファイルの場所は、プロセス・トレース・ファイル内でがわかります。

ADRホームの場所は、ADRの基本ディレクトリから始まる次のパスで指定されます。

diag/product_type/product_id/instance_id

表16-1では、Oracle Net Listenerインスタンスのパス・コンポーネントの値を示します。

表16-1 Oracle Net ListenerインスタンスのADRホームのパス・コンポーネント

パス・コンポーネント Oracle Net Listenerの値

product_type

tnslsnr

product_id

ホスト名

instance_id

リスナーの別名

図16-1では、Oracle Net ListenerインスタンスのADRのディレクトリ階層を示しています。その他のOracle製品またはコンポーネント(Oracle Automatic Storage Management(Oracle ASM)またはOracle Databaseなど)に対するその他のADRホームが、この階層内の同じADRベースの下に存在する場合があります。

図16-1 Oracle Net Listenerインスタンスのディレクトリ構造

図16-1の説明が続きます
「図16-1 Oracle Net Listenerインスタンスのディレクトリ構造」の説明

表16-2では、Oracle Connection Managerインスタンスのパス・コンポーネントの値を示します。

表16-2 Oracle Connection ManagerインスタンスのADRホームのパス・コンポーネント

パス・コンポーネント Oracle Connection Managerの値

product_type

netcman

product_id

ホスト名

instance_id

Oracle Connection Managerインスタンス名

図16-2では、Oracle Connection ManagerインスタンスのADRのディレクトリ階層を示しています。その他のOracle製品またはコンポーネント(Oracle ASMまたはOracle Databaseなど)に対するその他のADRホームが、この階層内の同じADRベースの下に存在する場合があります。

図16-2 Oracle Connection Managerインスタンスのディレクトリ構造

図16-2の説明が続きます
「図16-2 Oracle Connection Managerインスタンスのディレクトリ構造」の説明

ADRホーム・ディレクトリ内のサブディレクトリでは、各インスタンス(データベース、リスナー、Oracle Connection Managerまたはクライアント)により診断データが格納されます。表16-3は、前の図で示したすべてのサブディレクトリと、その内容のリストです。

表16-3 ADRホームのサブディレクトリ

サブディレクトリ名 目次

alert

log.xmlという名前のXML形式のログ。

cdump

コア・ファイル。

incident

複数のサブディレクトリがあり、各サブディレクトリには特定のインシデントの名前が付けられ、そのインシデントのみに関するダンプが含まれます。

trace

バックグラウンド・プロセスとサーバー・プロセスのトレース・ファイル、SQLトレース・ファイル、およびalertディレクトリのlog.xmlファイルのテキスト・バージョン

(others)

ADRホームのその他のサブディレクトリには、インシデント・パッケージ、状態モニター・レポートなどの情報が格納されます。

ADR_BASEディレクトリは、1つ以上のADRホームが置かれる物理的な場所です。概念的には、これはADRのルート・ディレクトリです。

非ADR (つまりDIAG_ADR_ENABLEDパラメータがOFFに設定されている)の診断およびトレースの方法が現在も主流であり適用可能ですが、ADRが有効である場合、このパラメータは無視されます。ADRはデフォルトで有効になります。

診断パラメータは次の構成ファイルにあります。

  • sqlnet.ora (クライアント用)

  • listener.ora (リスナー用)

  • cman.ora (Oracle Connection Manager用)

表16-4では、ADRベースの診断と非ADRベースの診断の両方で使用されるsqlnet.oraファイル内の、診断パラメータの使用について比較しています。

表16-4 sqlnet.oraファイルの診断パラメータの比較

パラメータ DIAG_ADR_ENABLED=ON DIAG_ADR_ENABLED=OFF

ADR_BASE

有効

無効

TRACE_LEVEL_CLIENT

有効

有効

TRACE_LEVEL_SERVER

有効

有効

TRACE_DIRECTORY_CLIENT

無効

有効

TRACE_FILE_CLIENT

無効

有効

TRACE_UNIQUE_CLIENT

無効

有効

LOG_DIRECTORY_CLIENT

無効

有効

LOG_FILE_CLIENT

無効

有効

LOG_DIRECTORY_SERVER

無効

有効

TRACE_DIRECTORY_SERVER

無効

有効

TRACE_FILE_SERVER

無効

有効

表16-5では、ADRベースの診断と非ADRベースの診断の両方で使用されるlistener.oraファイル内の、診断パラメータの使用について比較しています。

表16-5 listener.oraファイルの診断パラメータの比較

パラメータ DIAG_ADR_ENABLED=ON DIAG_ADR_ENABLED=OFF

ADR_BASE_listener_name

有効

無効

LOGGING_listener_name

有効

有効

TRACE_LEVEL_listener_name

有効

有効

TRACE_TIMESTAMP_listener_name

有効

有効

LOG_DIRECTORY_CLIENT_listener_name

無効

有効

LOG_FILE_CLIENT_listener_name

無効

有効

TRACE_DIRECTORY_CLIENT_listener_name

無効

有効

TRACE_FILELEN_listener_name

無効

有効

TRACE_FILENO_listener_name

無効

有効

表16-6では、ADRベースの診断と非ADRベースの診断の両方で使用されるcman.oraファイル内の、診断パラメータの使用について比較しています。

表16-6 cman.oraファイルの診断パラメータの比較

パラメータ DIAG_ADR_ENABLED=ON DIAG_ADR_ENABLED=OFF

ADR_BASE

有効

無効

LOG_LEVEL

有効

有効

TRACE_LEVEL

有効

有効

TRACE_TIMESTAMP

有効

有効

LOG_DIRECTORY

無効

有効

TRACE_DIRECTORY

無効

有効

TRACE_FILELEN

無効

有効

TRACE_FILENO

無効

有効

関連項目:

16.1.1 ADRCI: ADRコマンド・インタプリタ

ADRCIは、故障診断機能インフラストラクチャに使用されるコマンドライン・ツールです。ADRCIでは、次のことができます。

  • ADR内で診断データを表示

  • インシデントおよび問題に関する情報をZIPファイルにパッケージ化し、Oracleサポート・サービスに転送

診断データには、インシデントおよび問題に関する説明、トレース・ファイル、ダンプ、状態監視レポート、アラート・ログ・エントリなどが含まれます。

ADRCIには豊富なコマンド・セットがあり、対話型モードまたはスクリプト内で使用できます。さらに、ADRCIは、SQL*PlusがSQLコマンドおよびPL/SQLコマンドを使用してスクリプトを実行するのと同じ方法で、ADRCIコマンドのスクリプトを実行できます。

ADRCIを使用してトレース・ファイルを表示するには、コマンドラインでADRCIと入力します。次に示すのは、クライアントの確認に使用される共通のADRCIコマンドです。

クライアント側

adrci> SHOW ALERT
adrci> SHOW BASE -product client
adrci> SET BASE -product client
adrci> SHOW TRACEFILE
adrci> SHOW TRACE trace_file.trc
adrci> SHOW SPOOL

前述のコマンドで、SHOW ALERTコマンドはlog.xmlファイルをVIなどのテキスト・エディタで表示します。SHOW BASE -product clientコマンドは、クライアントのADR_BASEディレクトリの値を表示します。表示された値は、SET BASEコマンドのclientに使用します。

次に示すのは、サーバーの確認に使用される共通のADRCIコマンドです。

サーバー側

adrci> SHOW BASE
adrci> SHOW TRACEFILE
adrci> SHOW TRACE trace_file.trc

さらに対象を絞ったOracle Netトレース・ファイル分析を行うには、その他のADRCIコマンド・オプションを使用できます。ヘルプ・ドキュメントにアクセスするには、ADRCIプロンプトでHELPと入力します。

関連項目:

ADRCIの詳細は、『Oracle Databaseユーティリティ』を参照してください。

16.2 Oracle Net Servicesの診断

すべての基礎となるエラーは、重大かどうかに関係なく、エラー番号またはエラー・メッセージでOracle Net Servicesによって報告されます。エラー番号およびエラー・メッセージは問題の診断に役立つ情報を提供しますが、常に実際の問題を指しているわけではありません。

この項は、Oracle Net Servicesの正しく機能している部分を特定するのに役立ちます。また、エラーが次のどのカテゴリに属しているかを判別することもできます。

  • Oracleソフトウェア

  • オペレーティング・システム・レイヤー

  • その他のネットワーク・レイヤー

ほとんどの場合、各種ネットワーク層を順にテストすることで問題を発見できます。

16.2.1 サーバーの問題の診断

サーバーの問題の診断を開始するには、次の項目をチェックします。

  • 他のシステム(ワークステーション、サーバーなど)はOracle Netを使用してサーバーに接続できる。

  • サーバー、データベースまたはリスナーの構成は、しばらくの間変更されていない。

前述の項目に1つでも当てはまる場合は、「クライアントの問題の診断」に進みます。

不明な場合、またはいずれにも当てはまらない場合、この項のタスクを使用して問題を診断します。サーバー上のOracle Net Servicesを診断するには次の作業を行います。

タスク1   データベースの実行状態の検証

データベースが起動していることを確認するため、有効なユーザー名とパスワードを使用してデータベースにログインおよび接続します。たとえば:

SQLPLUS system
Enter password: password

データベースに接続していることを確認するメッセージが表示されます。次のエラーが表示される場合は、データベース管理者に連絡してください。

  • ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

  • ORA-01034: Oracleは使用できません。

タスク2   ループバック・テストの実行

ループバック・テストでは、Oracle Netを使用してデータベース・サーバーからInterprocess Communication(IPC)プロトコルを利用せずにサーバー自体に戻ります。多数のネットワーク・プロトコルが、ネットワーク接続をテストする方法を用意しています。PINGユーティリティは、TCP/IPネットワークで使用できます。ループバックが正常に終了すると、Oracle Netがデータベース・サーバーで機能していることが確認できます。

次の手順では、サーバーからデータベースにループバック・テストを実行する方法について説明します。

  1. listener.oratnsnames.oraおよびsqlnet.oraの各ファイルが、「ローカライズされた管理の使用」で説明しているとおり、正しい場所にあることを確認します。

  2. Oracle Net Managerを起動します。

  3. ナビゲータで、「ディレクトリ」または「ローカル」オプションを展開します。

  4. 「サービス・ネーミング」を展開し、使用可能なネットワーク・サービスとデータベースの名前を表示します。

  5. ネットワーク・サービス名またはデータベース・サービスを選択します。

  6. 「ツール」を選択し、ネット・サービスのテストを選択します。

    このテストでは、リスナーとデータベースが実行されている必要があります。実行されていない場合は、「Oracle Net ListenerとOracle Databaseサーバーの起動」を参照してコンポーネントを起動してください。

    テスト中、ステータスとテスト結果を示す「接続テスト」ダイアログ・ボックスが表示されます。テストが成功すると、次のメッセージが表示されます。

    The connection test was successful.
    

    テストが成功した場合は、ステップ7に進んでください。

    テストが正常終了しなかった場合は、次の処置を行ってください。

    1. データベースとリスナーが実行されていることを確認し、「テスト」をクリックします。

    2. 「ログインの変更」をクリックして、接続に使用するユーザー名とパスワードを変更し、「テスト」をクリックします。

    • ループバック・テストが正常に終了する場合は、「クライアントの問題の診断」に進みます。

    • ループバック・テストでエラーが発生する場合、Oracleサポート・サービスに問い合せてください。

  7. 「閉じる」をクリックして「接続テスト」ダイアログ・ボックスを閉じます。

16.2.2 クライアントの問題の診断

次の文の少なくとも1つを検証します。これはクライアントの問題かどうかを判定するのに役立ちます。

  • 接続が機能していることを示すデータベース・サーバーでのループバック・テストが正常終了した。

  • 他のコンピュータがOracle Net Servicesを使用して同じデータベースに接続している。

  • このコンピュータに変更を加える(新たな製品のインストールやネットワーク構成の変更など)前は、このワークステーションからの接続が機能していた。

次の手順では、クライアントでの診断の実行方法を説明します。

  1. データベース・サーバーにインストールされているのと同じプロトコル・サポートがインストールされていることを確認します。

    UNIXおよびUNIXプラットフォームの場合は、ADAPTERSユーティリティを使用してプロトコル・サポートを確認できます。データベース・サーバーで、ORACLE_HOME/binディレクトリから次のコマンドを実行して、oracle実行可能プログラムにリンクするプロトコル・サポート、ネーミング・メソッドおよびセキュリティ・オプションを表示します。

    adapters ./oracle
    

    次に、adaptersユーティリティによる出力例を示します。

    Installed Oracle Net transport protocols are:
    
        IPC
        BEQ
        TCP/IP
        SSL
        RAW
        SDP/IB
    
    Installed Oracle Net naming methods are:
    
        Local Naming (tnsnames.ora)
        Oracle Directory Naming
        Oracle Host Naming
        NIS Naming
    
    Installed Oracle Advanced Security options are:
    
        RC4 40-bit encryption
        RC4 56-bit encryption
        RC4 128-bit encryption
        RC4 256-bit encryption
        DES40 40-bit encryption
        DES 56-bit encryption
        3DES 112-bit encryption
        3DES 168-bit encryption
        AES 128-bit encryption
        AES 192-bit encryption
        AES 256-bit encryption
        MD5 crypto-checksumming
        SHA crypto-checksumming (for FIPS)
        SHA-1 crypto-checksumming
        Kerberos v5 authentication
        RADIUS authentication
    

    クライアントで、ORACLE_HOME/binディレクトリからadaptersコマンドを実行して、構成されたOracle protocol support、ネーミング・メソッドおよびセキュリティ・オプションを表示します。次に、ADAPTERSユーティリティによる出力例を示します。

    Installed Oracle Net transport protocols are:
    
        IPC
        BEQ
        TCP/IP
        SSL
        RAW
        SDP/IB
        Exadirect
    
    Installed Oracle Net naming methods are:
    
        Local Naming (tnsnames.ora)
        Oracle Directory Naming
        Oracle Host Naming
       
    Installed Oracle Advanced Security options are:
    
        RC4 40-bit encryption
        RC4 56-bit encryption
        RC4 128-bit encryption
        RC4 256-bit encryption
        DES40 40-bit encryption
        DES 56-bit encryption
        3DES 112-bit encryption
        3DES 168-bit encryption
        AES 128-bit encryption
        AES 192-bit encryption
        AES 256-bit encryption
        MD5 crypto-checksumming
        SHA-1 crypto-checksumming
        Kerberos v5 authentication
        RADIUS authentication

    ノート:

    • DESDES403DES 1123DES 168RC4 40RC4 56RC4 128RC4 256およびMD5アルゴリズムは、このリリースでは非推奨です。

      より強力なアルゴリズムを使用するようにOracle Database環境を移行するには、My Oracle Supportノート2118136.2で説明されているパッチをダウンロードしてインストールします。

    • RAWはOracle Netで使用される内部プロトコルです。

    関連項目:

    adaptersユーティリティの詳細は、『Oracle Database管理者リファレンス』を参照してください。

  2. 基底のネットワーク・トランスポートの基本的な接続性をチェックします。Oracle Netテクノロジは、正常な接続のために基底のネットワークに依存しています。

    表16-7 ネットワーク・トランスポートの基本的な接続性の確認

    プロトコル 確認方法

    TCP/IP

    クライアントからデータベース・サーバーに端末エミュレーションまたはファイル転送ユーティリティ(PING、FTP、TELNET)を使用する。

    名前付きパイプ

    • マイクロソフト・ネットワーク上のその他のコンピュータやサーバーを確認する。

    • ネットワーク内のドライブを共有できることを確認する。

  3. Oracle Net Foundationレイヤーおよび適切なOracle protocol supportが存在することを確認するため、すべてのクライアント用Oracle Net Servicesソフトウェアがインストールされていることを確認します。

  4. クライアント・コンピュータの正しい場所に、tnsnames.oraファイルとsqlnet.oraファイルが存在していることを確認します。

    選択したOracle Databaseに接続している他の稼働中のクライアント・コンピュータがある場合は、既存のファイルのバックアップをとって、稼働中のクライアント・コンピュータのtnsnames.oraファイルとsqlnet.oraファイルを稼働していないクライアントにコピーします。これにより、ファイルにエラーが含まれている可能性が排除されます。

  5. Oracle Net Foundationレイヤーをテストします。次のコマンドを使用してSQL*Plusに接続してテストできます。

    SQLPLUS user/password@connect_string

    ノート:

    TNSPINGユーティリティは使用しないでください。TNSPINGユーティリティはTCP/IP pingユーティリティと同様に機能します。これはソケットの作成やオープンは行わず、リスナーとは接続しません。表示されるのは、リスナーがデータベース・サーバー上に存在することのみです。

  6. それでも接続がうまくいかない場合、次の作業を行います。

    1. 「Oracle Net Servicesのエラー情報のトレース」の項の説明に従って、トレースを使用する。

    2. Oracleサポート・サービスのWebサイトで、発生したエラーに関する診断情報を確認する。

    3. Oracleサポート・サービスに問い合せてください。

16.3 Oracle Net Servicesの最も一般的なエラー・メッセージの解決

ネットワーク通信が複雑であるため、様々な理由で各種ソースからネットワーク・エラーが発生する場合があります。エラーが発生した場合、Oracle Net Servicesからのネットワーク・サービスに依存しているSQL*Plusなどのアプリケーションは、通常、エラー・メッセージを生成します。

次のリストは、最も一般的なネットワーク・エラー・メッセージです。

特定のエラー・メッセージの情報に関しては、Oracleエラー・ツールのoerrを使用し、任意のコマンドラインで次のコマンドを入力します。

oerr code error_number

前述のコマンドで、codeはORAやTNSなどのメッセージのタイプ、error_numberはエラー・メッセージに関連付けられている番号です。

関連項目:

エラー・メッセージの完全なリストは、『Oracle Databaseエラー・メッセージ』を参照してください。

16.3.1 ORA-03113: 通信チャネルでend-of-fileが検出されました

このメッセージは、データベース・サーバーでエラーが発生したことを示します。

サーバー上のalert_sid.logファイルをチェックします。通信チャネルで予期しないファイルの終了処理が行われました。通信リンクが少なくとも一時的に停止していることを示しているか、サーバーが停止したことを示している可能性があります。再送カウントを変更する必要があります。

16.3.2 ORA-12154: TNS: 指定された接続識別子を解決できませんでした

このメッセージは、データベースまたは他のサービスへの接続が接続識別子を使用して要求されたが、指定された接続識別子は、構成されているどのネーミング・メソッドを使用しても接続記述子に解決できなかったことを示します。たとえば、使用された接続識別子のタイプがネットワーク・サービス名の場合、そのネットワーク・サービス名がネーミング・メソッド・リポジトリで見つからないか、またはリポジトリが見つからないか、アクセスできません。

次のステップを実行します。

  1. sqlnet.oraファイルのNAMES.DIRECTORY_PATHパラメータにリストされているネーミング・アダプタのタイプを調べます。構成されていない場合は、adaptersコマンドを使用して使用中のアダプタを特定します。adaptersの例を次に示します。

    $ adapters
                 ...
         Installed Oracle Net naming methods are:
     
             Local Naming (tnsnames.ora)
             Oracle Directory Naming
             Oracle Host Naming
             NIS Naming
    

    接続文字列で指定されているネットワーク・サービス名が、少なくとも1つのネーミング・メソッドに定義されている必要があります。

  2. 各アダプタの解決パスで問題の可能性を調べます。たとえば、接続文字列で指定されている名前が正しく完全であることを確認し、必要であればネットワーク・サービスの完全な名前を使用します。

前述のステップに加えて、ネーミング・メソッドに応じて各ステップを実行します。

16.3.2.1 ローカル・ネーミング・メソッドの使用時のORA-12154エラー

ローカル・ネーミング・メソッドを使用する場合は、次のステップを実行します。

  1. tnsnames.oraファイルが正しい場所に存在することを確認します。場所は、ORACLE_HOME/network/adminディレクトリまたはTNS_ADMIN環境変数で指定されているディレクトリです。

  2. tnsnames.oraファイルに接続文字列で指定されている名前のエントリがあることを確認します。名前が単純でsqlnet.oraファイルにNAMES_DEFAULT_DOMAINがない場合、またはネットワーク・サービス名が完全修飾名である場合は、このネットワーク・サービス名がtnsnames.oraファイルの名前と厳密に一致している必要があります。接続文字列のネットワーク・サービス名が単純な場合は、sqlnet.oraファイルのNAMES_DEFAULT_DOMAINパラメータを調べます。その値が、接続文字列で指定されているネットワーク・サービス名に追加されます。この完全修飾名が、tnsnames.oraファイル内のエントリである必要があります。

  3. ログイン・ダイアログ・ボックスから接続する場合は、接続するネットワーク・サービス名の前に記号(@)を付けていないことを確認します。

  4. クライアントのトレースをアクティブにして、操作を繰返します。

16.3.2.2 ディレクトリ・ネーミング・メソッドの使用時のORA-12154エラー

ディレクトリ・ネーミング・メソッドを使用する場合は、次のステップを実行します。

  1. ldap.oraファイルが正しい場所に存在することを確認します。次のディレクトリで、この順番に、ldap.oraファイルが検索されます。見つかったldap.oraが使用されます。

    • 環境変数TNS_ADMINで指定されているディレクトリ。

    • ORACLE_HOME/network/adminディレクトリ。

    • 環境変数LDAP_ADMINで指定されているディレクトリ。

    • ORACLE_HOME/ldap/adminディレクトリ。

  2. 次のように、ldap.oraファイルで定義されているパラメータが正しいことを確認します。

    • DIRECTORY_SERVERSパラメータで、1つ以上の有効なLDAPサーバーの正しいホストとポートが定義されている。

    • DEFAULT_ADMIN_CONTEXTパラメータで、ネットワーク・サービス・エントリを含んでいる必要のある、このディレクトリ内のOracleコンテキストの場所が定義されている。

    ldap.oraファイルが存在しない場合、これらのパラメータは自動検出を使用して解決されます。

  3. LDAPサーバーのホストとポートがDNSで定義されていることを確認します。

  4. ディレクトリでデフォルトのOracleコンテキストが定義されていることを確認します。

  5. ldapsearchユーティリティまたはディレクトリ管理ツールを使用して、DEFAULT_ADMIN_CONTEXTパラメータの値で指定されている場所のOracleコンテキスト内にネットワーク・サービス・オブジェクトが存在することを確認します。

16.3.2.3 簡易接続ネーミング・メソッドの使用時のORA-12154エラー

指定されているホスト名が正しいこと、およびローカル・ホスト・ファイルやDNSなどのローカル・ホスト名解決サービスでホスト名が定義されていることを確認します。

16.3.2.4 外部ネーミング・メソッドの使用時のORA-12154エラー

外部ネーミング・メソッドを使用する場合は、次のステップを実行します。

  1. tnsnamesマップ用のNISファイルが正しく設定されていることを確認します。

  2. 「ローカル・ネーミング・メソッドの使用時のORA-12154エラー」で説明されているように、ネットワーク・サービス名が tnsnamesのエントリと一致することを確認します。

関連項目:

16.3.3 ORA-12170: TNS: 接続タイムアウトが発生しました

このメッセージは、クライアントがsqlnet.oraファイルのSQLNET.INBOUND_CONNECT_TIMEOUTパラメータで指定した時間内で接続の確立と認証の完了に失敗したことを示します。このエラーは、ネットワークまたはシステムの遅延が原因の可能性があります。または、悪質なクライアントがデータベース・サーバーでサービス拒否攻撃しようとしていることを示す可能性もあります。

  • 特定の環境におけるシステムあるいはネットワークの通常の遅延によるエラーである場合は、次のステップを実行します。

    1. トレースをオンにして、タイムアウトしたクライアントを特定します。

    2. sqlnet.oraで、SQLNET.INBOUND_CONNECT_TIMEOUT、SQLNET.SEND_TIMEOUT、SQLNET.RECV_TIMEOUTのいずれかのパラメータをより大きい値に再構成します。

  • 不当なクライアントが疑われる場合は、次のステップを実行します。

    1. そのクライアントへのアクセス制限を行います。sqlnet.oraファイルでアクセス権のパラメータを構成できます。

    2. データベース・サーバー上のsqlnet.logファイルでクライアントのIPアドレスを探索して、ソースを識別します。IPアドレスは偽装できることに注意してください。

      たとえば、次のsqlnet.logの例は、クライアントのIPアドレス192.0.2.35を示しています。

      Fatal NI connect error 12170.
      
      VERSION INFORMATION:
      TNS for Linux: Version 18.0.0.0.0
      Oracle Bequeath NT Protocol Adapter for Linux: Version 18.0.0.0.0
      TCP/IP NT Protocol Adapter for Linux: Version 18.0.0.0.0
        Time: 03-JAN-2018 13:51:12
        Tracing to file: /ora/trace/svr_13279.trc
        Tns error struct:
          nr err code: 0
          ns main err code: 12637
          TNS-12637: Packet receive failed
          ns secondary err code: 12604
          nt main err code: 0
          nt secondary err code: 0
          nt OS err code: 0
        Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.35)(PORT=52996))
      

      データベース・サーバーでIPアドレスを取り出す前にタイム・アウトが発生した場合は、リスナー・トレースを有効にして、要求を送信したクライアントを特定します。

16.3.4 TNS-12500またはORA-12500: TNS: リスナーが専用サーバー・プロセスの起動に失敗しました

これらのメッセージは、リスナーがOracleプログラムの起動に失敗したことを示します。考えられる原因は次のとおりです。

  • 1ユーザーに許可されるプロセスの最大数を超過した

  • リスナーがOracleプログラムの実行権限を持っていない

  • 関連付けられたMicrosoft Windowsサービスが起動されていない

状況によっては、これらのエラーは次のエラーと同じ条件下で発生する可能性があります。

  • TNS-12549またはORA-12549

  • TNS-00519

  • TNS-12540またはORA-12540

  • TNS-00510

  • TNS-12560またはORA-12560

適切な処置を実行します。

  • データベース初期化ファイルのPROCESSESパラメータを現在より大きな値に設定して、プロセス数を増やします。

  • listener.logファイルで詳しいエラー・スタック情報をチェックします。

16.3.5 ORA-12514: TNS: リスナーは現在、接続記述子でリクエストされているサービスを認識していません

このメッセージは、リスナーが、データベースまたは他のサービスとの接続を確立するための要求を受信したことを示します。リスナーが受信した接続記述子には、リスナーに動的に登録されなかったかまたはリスナーに静的に構成されていないサービス(通常はデータベース・サービス)の名前が指定されていました。これはリスナーが起動した後、データベース・インスタンスがリスナーに登録されるまでの間に発生した場合など、一時的な状況と考えられます。

次のステップを実行します。

  1. しばらく待ってから、もう一度接続します。

  2. リスナー制御ユーティリティのSTATUSまたはSERVICESコマンドを実行して、リスナーが現在認識しているサービスを確認します。

  3. 接続記述子のSERVICE_NAMEパラメータに、リスナーが認識しているサービス名が指定されていることを確認します。

  4. listener.logファイル内のイベントを確認します。

16.3.6 ORA-12520: TNS: リスナーは、リクエストしたサーバー・タイプに使用可能なハンドラを検出できませんでした

このメッセージは、クライアントに要求されたサービス・ハンドラのタイプが不適切であるか、要求されたSERVICE_NAME/INSTANCE_NAMEパラメータに登録されていないか、データベース・インスタンスがリスナーに登録されていないことを示します。

問題がサービス・ハンドラのタイプの不正にあると思われる場合は、次のステップを実行します。

  1. 接続記述子に(server=value)が設定されている場合は、データベースに適したタイプのサービス・ハンドラに値が設定されていることを確認します。適切な値は、専用サーバーの場合はdedicated、ディスパッチャの場合はsharedです。リスナー制御ユーティリティのSERVICESコマンドを使用すると、現在リスナーに登録されているサービス・ハンドラを確認できます。

  2. sqlnet.oraファイルでUSE_DEDICATED_SERVERパラメータがONに設定されている場合は、データベースが専用サーバーを使用するように構成されていることを確認します。そのように構成されていない場合は、このパラメータをOFFに設定します。

  3. データベース・インスタンスが稼働中であることを確認します。インスタンスが稼働していない場合は、リスナーに登録できるようにインスタンスを起動します。

関連項目:

サービス・ハンドラの詳細は、「リスナーのサービスの監視」を参照してください

16.3.7 ORA-12521: TNS: リスナーは接続記述子でリクエストされたインスタンスを現在認識していません

このメッセージは、接続記述子のインスタンス名が不適切であるか、データベース・インスタンスがリスナーに登録されていないことを示します。

次のステップを実行します。

  1. 接続記述子で指定されたサービス名が正しいことを確認します。

  2. データベース・インスタンスが稼働中であることを確認します。インスタンスが稼働していない場合は、リスナーに登録できるようにインスタンスを起動します。リスナー制御ユーティリティのSERVICESコマンドを使用すると、現在リスナーに登録されているインスタンスを確認できます。

    関連項目:

    SERVICESコマンドの詳細は、「リスナーのサービスの監視」を参照してください

16.3.8 ORA-12525: TNS: リスナーは、クライアントのリクエストを許容時間内に受信しませんでした

このメッセージは、クライアントがlistener.oraファイルのINBOUND_CONNECT_TIMEOUT_listener_nameパラメータで指定された時間内に接続要求を完了するのに失敗したことを示します。このエラーは、ネットワークまたはシステムの遅延が原因の可能性があります。または、悪質なクライアントがリスナーでサービス拒否攻撃しようとしていることを示す可能性もあります。

  • 特定の環境におけるシステムあるいはネットワークの通常の遅延によるエラーである場合は、listener.oraでINBOUND_CONNECT_TIMEOUT_listener_nameパラメータをより大きい値に再構成します。

  • 不当なクライアントが疑われる場合は、次のステップを実行します。

    1. ソースを識別するために、listener.logファイルでクライアントのIPアドレスを探索します。IPアドレスは偽装できることに注意してください。

      たとえば、次のlistener.logファイルの例は、クライアントのIPアドレス192.0.2.35を示しています。

      03-MAY-2012 16:42:35 * <unknown connect data> *
      (ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.35)(PORT=53208)) * establish *
      <unknown sid> * 12525
      TNS-12525: TNS:listener has not received client's request in time
      allowed
      TNS-12604: TNS: Application timeout occurred
      
    2. そのクライアントへのアクセス制限を行います。sqlnet.oraファイルでアクセス権のパラメータを構成できます。

関連項目:

16.3.9 ORA-12533: TNS: ADDRESSパラメータが不正です

このメッセージは、指定された接続記述子のADDRESSセクションにあるプロトコル固有パラメータが正しくないことを示します。

プロトコル・アドレスを訂正します。

ノート:

このエラーは、tnsnames.oraファイルを手作業で編集したために発生することがよくあります。tnsnames.oraファイルは、Oracle Enterprise Manager Cloud ControlまたはOracle Net Managerを使用してのみ編集してください。

関連項目:

正しいプロトコル構文は、『Oracle Database Net Servicesリファレンス』を参照してください。

16.3.10 TNS-12540またはORA-12540: TNS:内部制限を超えましたおよびTNS-00510: TNS:内部制限を超えました

これらのメッセージは内部制限を超えたことを示します。次の制限が考えられます。

  • Oracle Netが同時に処理できるオープン接続の数

  • 同時に使用できるメモリー・バッファの数

  • 特定のデータベース・インスタンスで許可されるプロセスの数

最初の2つは、ハード上の制限を示しています。3つ目の制限は、データベース初期化ファイルのPROCESSESパラメータを大きな値に設定することで増やすことができる例です。この場合は、TNS-12500またはORA-12500エラーも戻されます。状況によっては、これらのエラーはTNS-12549またはORA-12549、およびTNS-00519のエラーと同じ条件下で発生する可能性があります。

オープン接続がクローズするのを待ち、再試行します。それでもエラーが発生する場合は、sqlnet.logファイルまたはlistener.logファイルで詳しいエラー・スタック情報をチェックします。

16.3.11 TNS-12541またはORA-12541: TNS: リスナーがありません

これらのメッセージは、リスナーが実行されていないため、接続要求が完了できなかったことを示します。

次の手順を実行します。

  • 指定した接続先アドレスが、リスナーで使用されているアドレスの1つと一致していることを確認します。

  • 要求で指定されているアドレスでリスナーが実行していることを確認します。

  • 要求で指定されているホストとポートでリスナーがリスニングしていることを確認します。

  • クライアントがリスナーを指していることを確認します。

16.3.12 TNS-12549またはORA-12549: TNS:オペレーティング・システム・リソース割当て制限を超えましたおよびTNS-00519: TNS:オペレーティング・システム・リソース割当て制限を超えました

これらのメッセージは、オペレーティング・システムで設定されている割当てまたはハード・リミットを超えたことを示します。

考えられる制限には次のものがあります。

  • 1ユーザーに許可されるプロセスの最大数

  • ページング・スペースに起因するオペレーティング・システムの性能低下

適切な処置を実行します。

  • データベース初期化ファイルのPROCESSESパラメータを現在より大きな値に設定して、プロセス数を増やします。

  • sqlnet.logファイルまたはlistener.logファイルで、オペレーティング・システムのエラー・コードなどの詳しいエラー・スタック情報を調べ、超過している割当て制限を特定します。

16.3.13 TNS-12560またはORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました

これらのメッセージは、特定のプロトコルを使用した場合にエラーが発生したことを示します。このエラーは、ADDRESSパラメータの構成が不適切な場合、または基礎となるプロトコルやオペレーティング・システム・インタフェースからエラーが戻された場合などに発生します。

状況によっては、これらのエラーはTNS-00510、TNS-00519、TNS-12540、ORA-12540、TNS-12549またはORA-12549のエラーと同じ条件下で発生する可能性があります。

これらのエラーは、Microsoft Windowsシステムでのみ発生します。次の手順を実行します。

  1. Microsoft Windowsの「スタート」メニューから、「ファイル名を指定して実行」を選択します。

  2. 「名前」フィールドにMSCONFIGと入力します。

  3. 「サービス」タブに移動します。

  4. 無効になっている場合は、OracleServicesidを有効にします。

  5. コンピュータを再起動します。

  6. Oracleサービスが開始したことを確認します。

16.3.14 ディレクトリ・ネーミング・エラー

ディレクトリ・サーバーのデータベース・サービス名またはネットワーク・サービス名のエントリに対する接続性エラーに関連するディレクトリ・ネーミングの問題の解決には、データの分析が必要です。ディレクトリ・サーバーに含まれるデータの分析には、ldifwriteコマンドライン・ツールを使用します。ldifwriteツールはOracle Internet Directoryツールです。

ldifwriteツールを使用して、ディレクトリ・サーバーにある情報のすべてまたは一部をLDIFに変換できます。ldifwriteツールでは、指定した識別名(DN)の下のすべてのエントリを対象にサブツリー検索を実行します(DN自体も対象です)。

ldifwriteツールの構文は次のとおりです。

ldifwrite -c net_service_name/database_service -b base_DN -f ldif_file 

表16-8では、ldifwriteツールの引数とその説明を示しています。

表16-8 ldifwriteの引数

引数 説明

-c net_service_name/database_service

ディレクトリ・サーバーに接続するためのネットワーク・サービス名またはデータベース・サービス名。

-b base_DN

LDIFフォーマットで書き出されるサブツリーのベース。

-f ldif_file

出力ファイル名。

次の例は、dc=us,dc=example,dc=comの下のすべてのディレクトリ・ネーミング・エントリをoutput1.ldiファイルに書き込みます。

ldifwrite -c ldap -b "dc=us,dc=example,dc=com" -f output.ldif

ノート:

ldap.oraファイルをチェックして、base_DN値を確認します。これは、ldap.oraファイルのDEFAULT_ADMIN_CONTEXTエントリと同じです。

16.4 Oracle Net Servicesのトラブルシューティングのヒント

ネットワークの問題を診断するときは、次のことが役に立ちます。

  • 構成時に、サーバー・コンピュータの名前ではなくノードまたはネットワーク・アドレスを使用する。これにより内部ルックアップ問題がなくなり、接続が多少早くなります。

  • TCP/IPアドレスを使用している場合は、ホスト名ではなくIPアドレスを使用する。たとえば、tnsnames.oraファイルの(HOST=server_name)の行を(HOST=192.0.2.5)のようにIPアドレスに変更します。

  • 「タスク2、ループバック・テストの実行」の説明に従って、サーバーでループバック・テストを実行します。テストが正常に終了する場合は、FTPを使用してtnsnames.oraファイルとsqlnet.oraファイルをクライアントに転送します。

  • クライアントとサーバーの間のシステムをチェックする。Wide Area Network(WAN)の場合は、正しく作動していない可能性がある中間システムを識別します。すべてのコンピュータが正常である場合、タイミングに問題がある可能性があります。

  • タイミングに問題があるかどうか検証する。タイミングの問題は、クライアント・ログ・ファイルのORA-12535のエラーに関係しています。

    タイミングの問題を解決するには、名前ではなく正確なアドレスを使用して接続のスピード・アップを図り、listener.oraファイルのINBOUND_CONNECT_TIMEOUT_listener_nameパラメータの値を増やします。このパラメータのデフォルト値は10秒です。

  • 障害が発生しているOracleアプリケーションを判断する。SQL*Plusは作動するが、CASEツールは作動しない場合があります。データ量に問題があることが判明した場合、基本的な接続を使用してサイズの大きい(5MB)ファイルを転送してみます。

16.4.1 Oracle Net Servicesのトラブルシューティングのためのチェック項目

次の質問は、ネットワークの問題の診断に役立ちます。

  • すべてのコンピュータに問題があるのか、1台のコンピュータのみか

    同じソフトウェア(Oracleおよびサード・パーティ製品)をインストールしていても、機能するコンピュータと機能しないコンピュータがある場合、可能であれば、ネットワーク・ケーブルを取り替えて2番目のクライアントで問題が発生するかどうかを確認します。問題が発生した場合、問題はクライアント/サーバー接続に関するもので、クライアントに限定的なものではないことを示しています。

  • クライアントとサーバー間の接続の種類(X.25、ISDNまたは専用回線など)は何か

    SnifferやLANアナライザは、断続的な接続エラーを特定し、タイム・アウトおよび再送パケットの検出を行うのに便利です。どちら側が応答を待っているのかを知ることもできます。

16.5 TNS-12154エラーのトラブルシューティングの例

この項では、TNS-12154エラーのソリューションを提供します。TNS-12154エラーは、SQL*Netがtnsnames.oraファイルまたはその他のネーミング・アダプタの接続に指定された接続識別子を検出できない場合に発生します。

問題を解決する前に、tnsnames.oraファイルとsqlnet.oraファイルを印刷または表示しておくと便利です。両方を参照するため、これらのファイルを同時に参照できるようにすると便利です。

この例では、tnsnames.oraファイルおよびsqlnet.oraファイルは、クライアント・システムのデフォルトのネットワーク管理ディレクトリにあります。

tnsnames.oraファイルおよびsqlnet.oraファイルが次の例のようになっていることを確認します。

例16-1では、tnsnames.oraファイルの例を示します。

例16-1 tnsnames.oraの例

DEV1.WORLD =
     (DESCRIPTION =
           (ADDRESS =
             (PROTOCOL = TCP)
             (HOST = 192.0.2.56)
             (PORT = 1521)
           )
       (CONNECT_DATA = 
         (SERVICE_NAME = sales.example.com)
       )
     )

例16-2では、sqlnet.oraファイルの例を示します。

例16-2 sqlnet.oraの例

TRACE_LEVEL_CLIENT = OFF
SQLNET.AUTHENTICATION_SERVICES = (NONE)
NAMES.DIRECTORY_PATH = (TNSNAMES)
AUTOMATIC_IPC = OFF

例16-1の別名はDEV1.WORLDです。ただし、例16-2にはNAMES.DEFAULT_DOMAIN=WORLDパラメータが存在しません。この問題を解決するには、sqlnet.oraファイルの任意の場所にNAMES.DEFAULT_DOMAIN = WORLDパラメータを追加します。ファイルを保存し、接続を再度試行します。

16.6 Oracle Net Servicesのエラー情報のロギング

Oracle Net Servicesで発生するすべてのエラーは、ネットワーク管理者やデータベース管理者が評価できるように、ログ・ファイルに追加記録されます。ログ・ファイルは、画面に表示されるエラー・メッセージについて、管理者用の追加情報を提供します。ログ・ファイルのエラー・スタックは、各種レイヤーでのソフトウェアの状態を示します。

すべてのエラーが記録されることを保証するためにはクライアントまたはネーム・サーバーに対するロギングを使用禁止にすることはできません。さらに、ログ・ファイルを置換したり消去できるのは管理者のみです。リスナーのログ・ファイルには、すべてのクライアント接続要求に関する監査証跡情報と大半のリスナー制御コマンドが含まれています。

16.6.1 Oracle Netエラー・スタック

ログ・ファイルには、エラー・スタックに含まれている情報があります。エラー・スタックとは、ネットワーク・エラーの結果としてOracle通信スタック内に各レイヤーごとに作成される情報です。

表16-9に、エラー・スタック・コンポーネントの説明を示します。

表16-9 エラー・スタック・コンポーネント

エラー・スタック・コンポーネント 説明

NI

ネットワーク・インタフェース。このレイヤーには、Oracleのクライアントまたはサーバー、外部プロセスがOracle Netの機能にアクセスするための汎用インタフェースがあります。NIレイヤーは、接続のブレーク要求およびリセット要求を処理します。

NS

ネットワーク・セッション(1次および2次層)。これらのレイヤーはNIから要求を受け取り、次のようなコンピュータ・レベルの一般的な接続に関する問題をすべて解決します。

  • サーバーまたは接続先の位置(オープン、クローズの各機能)。

  • 接続時に1つ以上のプロトコルを必要とするかどうか(オープン、クローズの各機能)。

  • クライアントとサーバー間の割込みをそれぞれの機能に基づいて処理する方法(送信、受信の各機能)。

NA

ネットワーク認証。このレイヤーは認証要求および暗号化要求のネゴシエーションを行います。

NT

ネットワーク・トランスポート(1次、2次およびオペレーティング・システム層)。これらのレイヤーは、Oracle Net Foundationレイヤー機能を業界標準プロトコルにマップします。

16.6.1.1 エラー・スタック・メッセージの理解

クライアント・アプリケーションのユーザーがOracle NetとTCP/IPを使用してデータベース・サーバーとの接続を確立しようとする場合は、次のコマンドを入力します。

SQLPLUS scott@example.com
Enter password: password

コマンドを入力すると、次のエラーが表示されます。

ORA-12543: TNS:Unable to connect to destination

このメッセージは、データベースに連絡できなかったために、サーバーへの接続に失敗したことを示します。アプリケーションでは1行のエラー・メッセージしか表示されませんが、ネットワーク層によってログ・ファイルの中に情報量の多いエラー・スタックが記録されます。

クライアント側では、例16-3にあるように、sqlnet.logファイルにORA-12543のエラーに対応するエラー・スタックが含まれています。

例16-3 sqlnet.logファイル

Fatal OSN connect error 12543, connecting to:
 (DESCRIPTION=(CONNECT_DATA=(SID=trace)(CID=(PROGRAM=)
   (HOST=lala)(USER=scott)))(ADDRESS_LIST=(ADDRESS=
   (PROTOCOL=ipc)(KEY=trace))(ADDRESS=(PROTOCOL=tcp)
   (HOST=lala)(PORT=1521))))

VERSION INFORMATION:
TNS for Linux:
Oracle Bequeath NT Protocol Adapter for Linux:
Unix Domain Socket IPC NT Protocol Adaptor for Linux: 
TCP/IP NT Protocol Adapter for Linux:
  Tracing to file: /home/db_tracefiles/trace_admin.trc
  Tns error struct:
    TNS-12543: TNS:unable to connect to destination
    ns main err code: 12541
    TNS-12541: TNS:no listener
    ns secondary err code: 12560
    nt main err code: 511
    TNS-00511: No listener
    nt secondary err code: 61
    nt OS err code: 0

16.6.2 Oracle Net Servicesのログ・ファイル名

Oracle Net Servicesの各コンポーネントは、それぞれ独自のログ・ファイルを生成します。デフォルトのADRを使用するときは、ログ・ファイル名は適切なalertディレクトリにあるlog.xmlです。表16-10は、デフォルトのログ・ファイル名と、ADR/diag/instance_name/traceディレクトリのログ・ファイルを生成するコンポーネントのリストです。

16-10 ADR使用時のログ・ファイル名

コンポーネント ログ・ファイル

リスナー

listener.log

クライアントまたはデータベース・サーバー

sqlnet.log

Oracle Connection Managerリスナー

instance-name_pid.log

Oracle Connection Manager CMGW (Oracle Connection Manager Gateway)プロセス

instance-name_cmgw_pid.log

Oracle Connection Manager CMADMIN(Oracle Connection Manager Administration)プロセス

instance-name_cmadmin_pid.log

Oracle Connection Managerアラート・ログ

instance-name_alert.log

16.6.3 Oracle Networkログ・ファイルのセグメンテーション

Oracle Net Listener、Oracle Connection Manager、グローバル・サービス・マネージャなどのOracleネットワーク・コンポーネントには、テキスト・ログ・ファイルの最大サイズと数を構成できます。

この機能により、特にクラウド環境でログ・ファイルの管理が向上します。これはADRの専用機能で、テキスト・ログ・ファイルとXMLログ・ファイルの両方に適用できます。

16.6.4 ロギング・パラメータについて

ロギングされる情報の種類と量、ファイルが格納されている位置など、ロギングを制御するパラメータは、表16-11に示されるように各ネットワーク・コンポーネントの構成ファイル内に設定されます。

表16-11 ログ・パラメータの位置

ネットワーク・コンポーネント 構成ファイル

Oracle Connection Managerプロセス

cman.ora

リスナー

listener.ora

クライアント

sqlnet.ora

データベース・サーバー

sqlnet.ora

ノート:

ADR_ENABLEDをONに設定すると、すべてのロギング・パラメータはADRによって設定されます。Oracle Net Managerを使用してパラメータを変更することはできません。

この項では、次の項目について説明します。

関連項目:

これらのパラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

16.6.4.1 sqlnet.oraのログ・パラメータ

表16-12では、sqlnet.oraファイルで設定できるログ・パラメータの設定を示します。

表16-12 sqlnet.oraのログ・パラメータ

sqlnet.oraのパラメータ Oracle Net Managerのフィールド 説明

ADR_BASE

このパラメータは手動で設定する必要があります。

ADR_BASEパラメータは、インシデントのトレースおよびロギングが格納される基本ディレクトリを指定します。

DIAG_ADR_ENABLEDがONに設定されている場合、このパラメータを使用します。

DIAG_ADR_ENABLED

このパラメータは手動で設定する必要があります。

DIAG_ADR_ENABLEDパラメータは、ADRトレースが有効かどうかを示します。

DIAG_ADR_ENABLEDパラメータがOFFに設定されている場合は、非ADRファイルのトレースが使用されます。

LOG_DIRECTORY_CLIENT

「クライアント情報: ログ・ディレクトリ」

クライアント・ログ・ファイルの作成先となるディレクトリ。デフォルトのクライアント・ディレクトリは、現行の作業ディレクトリです。このパラメータは、ADR_ENABLEDがONに設定されている場合は無効になります。

LOG_DIRECTORY_SERVER

「サーバー情報: ログ・ディレクトリ」

データベース・サーバー・ログ・ファイルの作成先となるディレクトリ。デフォルトのサーバー・ディレクトリはORACLE_HOME/network/logです。このパラメータは、ADR_ENABLEDがONに設定されている場合は無効になります。

LOG_FILE_CLIENT

「クライアント情報: ログ・ファイル」

クライアントのログ・ファイルの名前。デフォルトのログ・ファイル名はsqlnet.logです。

LOG_FILE_SERVER

このパラメータは手動で設定する必要があります。

データベース・サーバーのログ・ファイルの名前。デフォルトのログ・ファイル名はsqlnet.logです。

16.6.4.2 listener.oraのログ・パラメータ

表16-13では、listener.oraファイルで設定できるログ・パラメータの設定を示します。

表16-13 listener.oraファイルのログ・パラメータ

listener.oraのパラメータ Oracle Net Managerのフィールド 説明

ADR_BASE_listener_name

このパラメータは手動で設定する必要があります。

ADR_BASE_listener_nameパラメータは、インシデントのトレースおよびロギングが格納される基本ディレクトリを指定します。

DIAG_ADR_ENABLED_listener_nameONに設定されている場合、このパラメータを使用します。

DIAG_ADR_ENABLED_listener_name

このパラメータは手動で設定する必要があります。

DIAG_ADR_ENABLED_listener_nameパラメータは、ADRトレースが有効かどうかを示します。

DIAG_ADR_ENABLED_listener_nameOFFに設定されている場合、非ADRファイルのトレースが使用されます。

LOG_DIRECTORY_listener_name

LOG_FILE_listener_name

ログ・ファイル

リスナー・イベントで自動的に生成されるファイルの作成先となるディレクトリとログ・ファイル。デフォルトのディレクトリはORACLE_HOME/network/log、デフォルトのファイル名はlistener.logです。これらのパラメータは、ADR_ENABLEDがONに設定されている場合は無効になります。

16.6.4.3 cman.oraのログ・パラメータ

表16-14では、cman.oraファイルで設定できるログ・パラメータの設定を示します。

表16-14 cman.oraファイルのログ・パラメータ

cman.oraのパラメータ 説明

ADR_BASE

ADR_BASEパラメータは、インシデントのトレースおよびロギングが格納される基本ディレクトリを指定します。

DIAG_ADR_ENABLEDがONに設定されている場合、このパラメータを使用します。

DIAG_ADR_ENABLED

DIAG_ADR_ENABLEDパラメータは、ADRトレースが有効かどうかを示します。

DIAG_ADR_ENABLEDパラメータがOFFに設定されている場合は、非ADRファイルのトレースが使用されます。

EVENT_GROUP

ロギングされるイベント・グループ。複数のイベントを指定するには、カンマ区切りリストを使用します。このパラメータには次の値を使用できます。

  • INIT_AND_TERM: 初期化と終了

  • MEMORY_OPS: メモリー操作

  • CONN_HDLG: 接続処理

  • PROC_MGMT: プロセス管理

  • REG_AND_LOAD: 登録とロード更新

  • WAKE_UP: CMADMIN起動キュー関連のイベント

  • TIMER: ゲートウェイのタイムアウト

  • CMD_PROC: コマンド処理

  • RELAY: 接続制御ブロックに関連付けられたイベント

LOG_DIRECTORY

ログ・ファイルの作成先となるディレクトリ。

デフォルトのディレクトリはORACLE_HOME/network/logです。

このパラメータは、ADR_ENABLEDがONに設定されている場合は無効になります。

LOG_LEVEL

ロギングのレベル。次の4つのレベルがサポートされています。

  • off(デフォルト): ロギングなし

  • user: ユーザー・ログ情報

  • admin: 管理ログ情報

  • support: Oracleサポート・サービス情報

16.6.5 構成ファイルのロギング・パラメータの設定

sqlnet.oraファイルのロギング・パラメータはOracle Net Managerで設定し、listener.oraファイルのロギング・パラメータはOracle Enterprise Manager Cloud ControlまたはOracle Net Managerで設定します。cman.oraファイルのロギング・パラメータは、手動で設定する必要があります。

16.6.5.1 Oracle Net Managerを使用したsqlnet.oraファイルのパラメータの設定

次の手順では、sqlnet.oraファイルでロギング・パラメータを設定する方法について説明します。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」見出しから「プロファイル」を展開します。

  3. 右ペインのリストから、「一般」を選択します。

  4. 「ロギング」 タブをクリックします。

  5. 設定を指定します。

  6. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

ログ・ファイルの名前はsqlnet.logです。

16.6.5.2 Oracle Enterprise Manager Cloud Controlを使用したlistener.oraファイルのパラメータの設定

次の手順では、Oracle Enterprise Manager Cloud Controlを使用してlistener.oraファイルでロギング・パラメータを設定する方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

  3. 「実行」をクリックし、「リスナー」ページを表示します。

  4. リスナーを選択し、「編集」をクリックし、「リスナーの編集」ページを表示します。

  5. 「ロギングとトレース」タブをクリックします。

  6. 設定を指定します。

  7. 「OK」をクリックします。

ログ・ファイルの名前はlistener.logです。

16.6.5.3 Oracle Net Managerを使用したlistener.oraファイルのパラメータの設定

次の手順では、Oracle Net Managerを使用してlistener.oraファイルでロギング・パラメータを設定する方法について説明します。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」見出しから「リスナー」を展開します。

  3. リスナーを選択します。

  4. 右ペインのリストから、「一般」を選択します。

  5. 「ロギングとトレース」タブをクリックします。

  6. 設定を指定します。

  7. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

ログ・ファイルの名前はlistener.logです。

16.6.6 制御ユーティリティ実行時のロギング設定

ロギングは、制御ユーティリティの実行時に設定できます。制御ユーティリティを使用してロギングを設定しても、*.oraファイルにパラメータは設定されず、設定は制御ユーティリティのセッションでのみ有効です。

次の設定を制御ユーティリティに対して設定できます。

  • リスナーの場合は、リスナー制御ユーティリティでSET LOG_FILEコマンドおよびSET LOG_DIRECTORYコマンドを使用します。

  • Oracle Connection Managerの場合は、Oracle Connection Manager制御ユーティリティのSET LOG_DIRECTORYSET LOG_LEVELおよびSET EVENTコマンドを使用します。

ノート:

ADR_ENABLEDをONに設定すると、すべてのロギング・パラメータはADRによって設定されます。Oracle Connection Managerを使用してパラメータを変更することはできません。

16.6.7 ログ・ファイルの使用

次の手順では、ログ・ファイルを使用してネットワーク・エラーを診断する方法について説明します。

  1. アプリケーションから受信した最新のエラー番号でログ・ファイルを探します。通常、これがログ・ファイルの最後のエントリです。

  2. ファイルの最も下から順にたどり、エラー・レポートで0(ゼロ)以外の最初のエントリを探します。通常は、これが実際の原因です。

  3. そのエラーが情報を示していない場合は、正しいエラー情報が見つかるまでログ内の次のエラーを見直します。

  4. それでもエラーの原因が明らかにならない場合は、トレースをオンにし、エラー・メッセージが発生したコマンドを繰り返します。

16.6.8 リスナー・ログの分析

リスナー・ログ・ファイルには、監査証跡、サービス登録関連イベント、ダイレクト・ハンドオフ・イベント、Oracle Notification Service (ONS)ノードダウン・イベントのサブスクリプションおよびOracle Clusterware通知に関する情報が記録されます。

16.6.8.1 リスナー・ログ監査証跡

リスナー・ログ・ファイル内の監査証跡情報を使用すると、ネットワーク使用状況統計、クライアント接続リクエスト、リスナー制御ユーティリティによって発行されたコマンドなどを分析できます。

16.6.8.1.1 リスナー・ログ監査証跡情報

監査証跡情報は、ネットワーク使用状況、クライアント接続リクエストおよびリスナー制御ユーティリティによって発行されるコマンド(RELOADSTARTSTOPSTATUSSERVICESなど)に関する統計で構成されます。

監査証跡情報を表に保存した後、それをレポート形式に書式設定することで、傾向とユーザー・アクティビティを確認できます。データを表にインポートするには、SQL*Loaderなどのインポート・ユーティリティを使用します。

16.6.8.1.2 リスナーのログ監査証跡の書式

これは、リスナー・ログ・ファイルに取得される監査証跡テキスト・フィールドの書式です。

Timestamp * Connect Data [* Protocol Info] * Event [* SID | Service] * Return Code

監査証跡のプロパティは次のとおりです。

  • 各フィールドはアスタリスク(*)で区切られます。

  • プロトコル・アドレス情報、およびサービス名またはSID情報は、接続が試行された場合のみ記録されます。

  • 成功した接続またはコマンドには、コード0(ゼロ)が戻ります。

  • 失敗した場合は、エラー・メッセージに対応するコードが生成されます。

例16-4に、RELOADコマンド要求のログ・ファイルの出力例を示します。

例16-4 正常なRELOAD要求に対するリスナー・ログ・イベント

14-MAY-2012 00:29:54 *
(connect_data=(cid=(program=)(host=sales-server)(user=jdoe))(command=reload)
(arguments=64)(service=listener)(version=135290880))
* reload * 0

例16-5に、正常な接続要求のログ・ファイルの出力例を示します。

例16-5 正常な接続要求に対するリスナー・ログ・イベント

14-MAY-2012 15:28:58 * 
(connect_data=(service_name=sales.us.example.com)(cid=(program=)(host=sales-server)
(user=jdoe))) 
* (address=(protocol=tcp)(host=192.0.2.35)(port=41349)) * establish 
* sales.us.example.com * 0 

例16-6は、ホストsales-serverによるSTATUSコマンドの正常な実行を抜粋したログ・ファイルを示しています。この後、IPアドレス192.0.2.35のクライアントによる接続試行が失敗しています。この接続試行の結果、ORA-12525: 「TNS: リスナーは、クライアントのリクエストを許容時間内に受信しませんでした」エラー・メッセージが表示されました。このエラーは、クライアントがlistener.oraファイルのINBOUND_CONNECT_TIMEOUT_listener_nameパラメータで指定された時間内に接続要求を完了するのに失敗すると発生します。このクライアントはリスナーにサービス拒否攻撃をしようとした可能性があります。

例16-6 失敗した接続要求に対するリスナー・ログ・イベント

03-MAY-2012 16:41:57 * 
(CONNECT_DATA=(CID=(PROGRAM=)(HOST=sales-server)(USER=jdoe))(COMMAND=status)
(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=153092352)) * status * 0
03-MAY-2012 16:42:35 * <unknown connect data> *
(ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.35)(PORT=53208)) * establish * 
<unknown sid> * 12525
TNS-12525: TNS:listener has not received client's request in time allowed
TNS-12604: TNS: Application timeout occurred
16.6.8.2 リスナーのサービス登録イベント

リスナー・ログ・ファイル内のサービス登録イベント情報を使用すると、インスタンスのサービス名、インスタンス名、サービス・ハンドラ、ロード情報、動的リスニング・エンドポイントなどの登録関連の統計を分析できます。

16.6.8.2.1 リスナーのサービス登録イベント情報

サービス登録情報は、service_registerservice_updateservice_diedなどのデータベース・サービス登録イベントに関連する統計で構成されています。

サービス登録を行うと、リスナー登録(LREG)プロセスからリスナーに次の情報が提供されます。

  • データベースにおける稼働中の各インスタンスのサービス名

  • データベースのインスタンス名

  • 使用可能なサービス・ハンドラ(ディスパッチャまたは専用サーバー)

  • ディスパッチャ、インスタンスおよびノードのロード情報

  • 動的リスニング・エンドポイント

次の表で示されている記録済のサービス登録関連イベントは、listener.logファイル内で一覧で示されています。

表16-15 サービス登録イベントのログ情報

イベント 説明

service_register

リスナーがインスタンスについて受信する登録情報。

service_update

特定インスタンスについてリスナーが受信する更新された登録情報(ディスパッチャやインスタンスのロード情報など)。

service_died

リスナーがLREGで確立できない接続の接続切断情報。インスタンスの登録情報はすべて廃棄されます。LREGによって再度登録されるまで、クライアントはそのインスタンスには接続できません。

16.6.8.2.2 リスナーのサービス登録情報の書式

これは、リスナー・ログ・ファイルで取得されたデータベース・サービス登録イベント・メッセージの書式です。

Timestamp * Event *  Instance Name * Return Code

サービス登録フィールドのプロパティは次のとおりです。

  • 各フィールドはアスタリスク(*)で区切られます。

  • 通常は、1つのインスタンスのイベントが複数回連続して記録されます。

  • 正常に登録されると、コード0(ゼロ)が戻ります。これは、クライアントがインスタンスに接続できたことを示します。

  • 失敗した場合は、エラー・メッセージに対応するコードが生成されます。

例16-7は、サービス登録イベントが記録されたログ・ファイルを示します。リスナーは正常なservice_registerイベントの後はクライアント要求を受信できますが、service_diedイベントの後はクライアント要求を受信できません。

例16-7 サービス登録イベントが記録されたリスナー・ログ

------------------------------- 
14-MAY-2012 15:28:43 * service_register * sales * 0 
14-MAY-2012 15:28:43 * service_register * sales * 0 
14-MAY-2012 15:28:58 * 
(connect_data=(service_name=sales.us.example.com)
(cid=(program=)(host=sales-server)(user=jdoe))) 
* (address=(protocol=tcp)(host=192.0.2.35)(port=41349)) * establish 
* sales.us.example.com * 0 
14-MAY-2012 15:38:44 * service_update * sales * 0 
14-MAY-2012 15:38:44 * service_update * sales * 0 
14-MAY-2012 15:48:45 * service_update * sales * 0 
14-MAY-2012 15:48:45 * service_update * sales * 0 
14-MAY-2012 15:50:57 * 
(connect_data=(service_name=sales.us.example.com)(cid=(program=)
(host=sales-server)(user=jdoe))) 
* (address=(protocol=tcp)(host=192.0.2.35)(port=41365)) * establish 
* sales.us.example.com * 0 
14-MAY-2012 15:51:26 * service_died * sales * 12537 
14-MAY-2012 15:51:26 * service_died * sales * 12537 
14-MAY-2012 15:52:06 * 
(connect_data=(service_name=sales.us.example.com)
(cid=(program=)(host=sales-server)(user=jdoe))) 
* (address=(protocol=tcp)(host=192.0.2.35)(port=41406)) * establish 
* sales.us.example.com * 12514 
TNS-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor  
--------------------------------
16.6.8.3 リスナーのダイレクト・ハンドオフ情報

リスナー・ログ・ファイル内のダイレクト・ハンドオフ情報を使用すると、ディスパッチャへのダイレクト・ハンドオフ・イベントを分析できます。

これらのイベントは次のフィールドで構成されます。

Timestamp * Presentation * Handoff  * Error Code

ダイレクト・ハンドオフ・フィールドのプロパティは次のとおりです。

  • 各フィールドはアスタリスク(*)で区切られます。

  • 成功した接続またはコマンドには、コード0(ゼロ)が戻ります。

  • 失敗した場合は、エラー・メッセージに対応するコードが生成されます。

次の例では、ログ・ファイル内のダイレクト・ハンドオフ・イベントを示します。

例16-8 ダイレクト・ハンドオフのリスナー・ログ・イベント

21-MAY-2012 10:54:55 * oracle.aurora.net.SALESHttp2 * handoff * 0
16.6.8.4 ONSノード停止イベント情報のリスナー・サブスクリプション

ONS構成ファイルを使用できる場合、リスナーは、起動時にOracle Notification Service (ONS)にノード停止イベントをサブスクライブします。リスナー・ログ・ファイル内のONSノード停止イベント情報を使用すると、これらのメッセージを分析できます。

このサブスクリプションにより、ノード停止イベント通知をONSから受信した場合、リスナーは、影響を受けたサービスを削除できます。リスナーは、イベント通知に非同期サブスクリプションを使用します。

ONSデーモンがホストで実行されていない場合など、サブスクリプションが完了しなかった場合、次の警告メッセージがSTATUSコマンドごとにリスナー・ログ・ファイルに記録されます。

WARNING: Subscription for node down event still pending 

サブスクリプションの保留中は、リスナーはONSイベントを受信できません。それ以外の場合、他のリスナー機能が影響を受けることはありません。

16.6.8.5 リスナーのOracle Clusterware通知情報

必要なOracle Clusterwareライブラリがインストールされていて、ホストでOracle Clusterwareが起動されている場合、リスナーは起動プロセスおよび停止プロセスでOracle Clusterwareのステータスを通知します。リスナー・ログ・ファイル内のOracle Clusterware通知情報を使用すると、これらのメッセージを分析できます。

Oracle Clusterware (次のログ・メッセージにCRSとして表示)への通知に成功すると、リスナーはイベントをログに記録します。通知が失敗した場合は、メッセージは記録されません。

Listener completed notification to CRS on start
Listener completed notification to CRS on stop

16.6.9 Oracle Connection Managerログの分析

Oracle Connection Manager (CMAN)は、指定されたログ・ディレクトリにcman_alias.logファイルを生成します。このログ・ファイルには、CMANリスナー、ゲートウェイ、CMADMINプロセスおよびアラートに関連するメッセージが記録されます。

アラート用ログ・エントリには、重大なエラーが時系列にリストされます。重大なエラーをロギングするだけでなく、インスタンスの起動と停止に関する情報も記録されています。また、セッションの開始と終了時におけるすべての構成パラメータの値も記録されます。

各ログ・エントリは、タイムスタンプとイベントで構成されます。イベントを次のカテゴリにロギングするようにcman.oraファイルを構成できます。

  • 初期化と終了

  • メモリー操作

  • 接続処理

  • プロセス管理

  • 登録とロード更新

  • CMADMIN起動キュー関連のイベント

  • ゲートウェイのタイムアウト

  • コマンド処理

  • 接続制御ブロックに関連付けられたイベント

SET EVENTコマンドを使用して、ロギングするイベントのタイプを指定します。

表16-16 CMADMINおよびゲートウェイ・ログのエントリの詳細

ログ・エントリ イベント 説明

CMADMIN

Failed to get procedure ID

CMADMINに接続されていたCMCTLセッションが切断されました。

CMADMIN

GMON attributes validated

情報メッセージです。CMADMINの起動に必要なパラメータが正しく指定されています。

CMADMIN

Invalid connect data

未知のクライアントがCMADMINに接続しようとしています。サービス拒否攻撃と考えられます。

CMADMIN

No connect data

未知のクライアントがCMADMINに接続しようとしています。サービス拒否攻撃と考えられます。

Gateway

Connected to monitor

ゲートウェイがCMADMINに接続されました。

Gateway

Housekeeping

情報メッセージです。ゲートウェイ・プロセスの内部ハウスキーピングが適切に行われています。ゲートウェイ・プロセスはCMADMINプロセスに正しく接続されています。

Gateway

Idle timeout

cman.oraファイルに指定された時間より長い間アイドル状態が続いたため、接続が切断されています。

Gateway

Out of connection control block (CCB)

CMADMINが接続要求を処理できません。次の2つの理由が考えられます。

  • CMADMINとリスナー間のロード更新が不完全

  • CMADMINに直接接続しようとしている侵入者がいる(サービス拒否攻撃の可能性)

Gateway

Session timeout

cman.oraファイルに指定されたセッション・タイムアウト時間を超過したため、接続が切断されています。

Gateway

State change from Empty to Init

ゲートウェイからの状態変更メッセージ。Init状態になると、ゲートウェイは内部データの初期化を開始します。

Gateway

State change from Init to Ready

ゲートウェイからの状態変更メッセージ。ゲートウェイはReady状態になると、クライアントからの接続を受け入れます。

例16-9 CMADMINログ・メッセージの例

-------------------------------
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:40)(EVENT=Parameter list)
    (listener_address=(address=(protocol=tcp)(host=sales1)(port=1574)))
    (aso_authentication_filter=OFF)
    (connection_statistics=ON)
    (log_directory=/home/user/network/admin/log)
    (log_level=support)
    (max_connections=256)
    (idle_timeout=5)
    (inbound_connect_timeout=0)
    (session_timeout=20)
    (outbound_connect_timeout=0)
    (max_gateway_processes=1)
    (min_gateway_processes=1)
    (password=OFF)
    (trace_directory=/home/user/network/admin/log)
    (trace_level=off)
    (trace_timestamp=OFF)
    (trace_filelen=0)
    (trace_fileno=0)
)
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:40)(EVENT=Shared Memory Size)
(BYTES=82524))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:40)(EVENT=GMON Attributes validated)
(Type=Information))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:40)(EVENT=NS Listen Successful)
((ADDRESS=(PROTOCOL=tcp)(HOST=sales1)(PORT=1574))))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:44)(EVENT=Received command)(CMD=verify
password))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:44)(EVENT=Received command)
(CMD=version))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:44)(EVENT=Received command)
(CMD=show status))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:44)(EVENT=Failed to get procedure id))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:12)(EVENT=Received command)(CMD=verify
password))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:15)(EVENT=Failed to get procedure id))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:29)(EVENT=Received command)(CMD=verify
password))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:46)(EVENT=Failed to get procedure id))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:50)(EVENT=Received command)(CMD=verify
password))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:50)(EVENT=Received command)
(CMD=probe monitor))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:50)(EVENT=Received command)
(CMD=shutdown normal))
-------------------------------

例16-10 ゲートウェイ・ログ・メッセージの例

-------------------------------
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=NS Initialised))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=Memory Allocated)
(BYTES=1024))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=NCR Initialised))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=Connected to Monitor))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=State Change from Empty to 
Init))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=Memory Allocated)
(BYTES=251904))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=Memory Allocated)
(BYTES=2048))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=CCB Initialised))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=Started Listening))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:41)(EVENT=State Change from Init to 
Ready))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:46:47)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:06)(EVENT=Ready)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:06)(EVENT=Ready)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:07)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:12)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:13)(EVENT=Idle Timeout)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:17)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:22)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:25)(EVENT=Ready)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:25)(EVENT=Ready)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:27)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:30)(EVENT=Idle Timeout)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:32)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:37)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:42)(EVENT=Ready)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:42)(EVENT=Ready)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:42)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:47)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:52)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:48:57)(EVENT=Housekeeping))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:02)(EVENT=Session Timeout)(CONN NO=0))
(LOG_RECORD=(TIMESTAMP=08-MAY-2022 08:49:02)(EVENT=Housekeeping))
-------------------------------

16.7 Oracle Net Servicesのエラー情報のトレース

トレース機能は、実行されたネットワーク・イベントが記述される一連の詳細文を生成します。操作をトレースすると、ログ・ファイルにある情報より多くのOracle Net Servicesコンポーネントの内部操作に関する情報が得られます。この情報は、ファイル出力されエラーの原因となったイベントを識別できます。

ノート:

トレース機能には大量のディスク領域を消費するため、システムのパフォーマンスに大きな影響を与える可能性があります。したがって、必要なときにのみトレースを行うようにしてください。

この項では、次の項目について説明します。

16.7.1 Oracle Net Servicesのトレース・ファイル名の理解

Oracle Net Servicesの各コンポーネントは、それぞれ独自のトレース・ファイルを生成します。表16-17は、デフォルトのトレース・ファイル名と、トレース・ファイルを生成するコンポーネントのリストです。

表16-17 トレース・ファイル名

トレース・ファイル コンポーネント

instance-name_pid.trc

Oracle Connection Managerリスナー

instance-name_cmgw_pid.trc

Oracle Connection Manager CMGWプロセス

instance-name_cmadmin_pid.trc

Oracle Connection Manager CMADMINプロセス

listener.trc

リスナー

sqlnet.trc

クライアント

svr_pid.trc

データベース・サーバー

tnsping.trc

TNSPINGユーティリティ

16.7.2 トレース・パラメータの設定

トレースされる情報の種類と量、ファイルが格納されている位置など、トレースを制御するパラメータは、表16-18に示されるように各ネットワーク・コンポーネントの構成ファイル内に設定されます。

表16-18 トレース・パラメータの位置

構成ファイル コンポーネント

cman.ora

Oracle Connection Managerプロセス

listener.ora

リスナー

sqlnet.ora

クライアント

データベース・サーバー

TNSPINGユーティリティ

この項では、次の項目について説明します。

関連項目:

これらのパラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。
16.7.2.1 cman.oraのトレース・パラメータ

表16-19では、cman.oraファイルでOracle Connection Managerに設定できるトレース・パラメータの設定を示します。

表16-19 cman.oraのトレース・パラメータ

cman.oraのパラメータ 説明

TRACE_DIRECTORY

トレース・ファイルの作成先となるディレクトリ。

デフォルトのディレクトリはORACLE_HOME/network/traceです。

TRACE_FILELEN

トレース・ファイルのサイズ(KB単位)。指定のサイズに到達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENOパラメータで指定します。

TRACE_FILENO

トレース用トレース・ファイルの数。このパラメータをTRACE_FILELENパラメータとともに設定すると、トレース・ファイルは循環方式で使用されます。最初のファイルがいっぱいになると、2番目のファイルが使用され、順番にファイルが使用されます。最後のファイルがいっぱいになると、最初のファイルが再利用され、再度、順番にファイルが使用されます。

トレース・ファイル名は、順序番号によって識別されます。たとえば、このパラメータを3に設定すると、ゲートウェイ・プロセス用のOracle Connection Managerのトレース・ファイル名は、instance-name_cmgw1_pid.trcinstance-name_cmgw2_pid.trcおよびinstance-name_cmgw3_pid.trcになります。

また、トレース・ファイル内のトレース・イベントの前には、そのファイルの順序番号が付きます。

TRACE_LEVEL

トレース機能によりリスナーで記録される詳細レベル。トレース・レベルは、0 (ゼロ)から16までの数値(0はトレースなし、16は最大限のトレースを表す)か、次のいずれかの値を指定します。

  • off(0と同じ)はトレースを実行しません。

  • user(4と同じ)はユーザーによるエラー条件を特定するためのトレースを実行します。

  • admin(6と同じ)はインストレーション固有の問題を特定するためのトレースを実行します。

  • support (16と同じ)は、Oracleサポート・サービスによるトラブルシューティングのトレース情報を提供します。

Oracle Connection Managerでは、リスナー、ゲートウェイおよびCMADMINの各プロセスで、LinuxとMicrosoft Windowsの両方にトレース・ファイルが作成されます。

TRACE_TIMESTAMP

TRACINGパラメータが有効な場合、リスナー・トレース・ファイルのすべてのトレース・イベントに対して、タイムスタンプ(dd-mon-yyyy hh:mi:ss:milの書式)が作成されます。

16.7.2.2 listener.oraのトレース・パラメータ

表16-20では、listener.oraファイルで設定できるリスナー用のトレース・パラメータの設定を示します。

表16-20 listener.oraのトレース・パラメータ

listener.oraのパラメータ Oracle Enterprise Manager Cloud Control/Oracle Net Managerのフィールド 説明

TRACE_LEVEL_listener_name

「トレース・レベルを選択します」/「トレース・レベル」

トレース機能によりリスナーで記録される詳細レベル。トレース・レベルは、0 (ゼロ)から16までの数値(0はトレースなし、16は最大限のトレースを表す)か、次のいずれかの値を指定します。

  • off(0と同じ)はトレースを実行しません。

  • user(4と同じ)はユーザーによるエラー条件を特定するためのトレースを実行します。

  • admin(6と同じ)はインストレーション固有の問題を特定するためのトレースを実行します。

  • support (16と同じ)は、Oracleサポート・サービスによるトラブルシューティングのトレース情報を提供します。

TRACE_DIRECTORY_listener_name

TRACE_FILE_listener_name

トレース・ファイル

トレース・ファイルの作成先となるディレクトリとファイル。デフォルトのディレクトリはORACLE_HOME/network/trace、デフォルトのファイル名はlistener.trcです。

TRACE_FILEAGE_listener_name

このパラメータは手動で設定する必要があります。

リスナー・トレース・ファイルの最大保持期間(分単位)。保持期間制限に達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_listener_nameパラメータで指定します。

TRACE_FILEAGE_SERVER

このパラメータは手動で設定する必要があります。

トレース・ファイルの最大保持期間を分単位で指定します。保持期間制限に達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_SERVERパラメータで指定します。

TRACE_FILELEN_listener_name

このパラメータは手動で設定する必要があります。

リスナー・トレース・ファイルのサイズ(KB単位)。指定のサイズに到達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_listener_nameパラメータで指定します。

TRACE_FILENO_listener_name

このパラメータは手動で設定する必要があります。

リスナーのトレース用トレース・ファイルの数。このパラメータがTRACE_FILELEN_listener_nameパラメータとともに設定されている場合、トレース・ファイルは循環方式で使用されます。最初のファイルがいっぱいになると、2番目のファイルが使用され、順番にファイルが使用されます。最後のファイルがいっぱいになると、最初のファイルが再利用され、再度、順番にファイルが使用されます。

トレース・ファイル名は、順序番号によって識別されます。たとえば、デフォルトのトレース・ファイルlistener.trcを使用し、このパラメータを3に設定すると、トレース・ファイル名はlistener1.trclistener2.trcおよびlistener3.trcになります。

また、トレース・ファイル内のトレース・イベントの前には、そのファイルの順序番号が付きます。

このパラメータがTRACE_FILEAGE_listener_nameパラメータとともに設定されている場合、トレース・ファイルはトレース・ファイルの保持期間に基づいて循環されます。最初のファイルが保持期間制限に達するまで使用されると、2番目のファイルが使用され、以降、同様に繰り返されます。最後のファイルの保持期間制限に達すると、最初のファイルが再利用され、以降、同様に繰り返されます。

このパラメータがTRACE_FILELEN_listener_nameとTRACE_FILEAGE_listener_nameの両方のパラメータとともに設定されている場合、トレース・ファイルはサイズ制限または保持期間制限に達したときに循環されます。

TRACE_TIMESTAMP_listener_name

このパラメータは手動で設定する必要があります。

リスナー・トレース・ファイルのすべてのトレース・イベントのタイムスタンプ(dd-mon-yyyy hh:mi:ss:milの書式を使用)。

16.7.2.3 sqlnet.oraのトレース・パラメータ

表16-21では、sqlnet.oraファイルで設定できるトレース・パラメータの設定を示します。

表16-21 sqlnet.oraのトレース・パラメータ

sqlnet.oraのパラメータ Oracle Net Managerのフィールド 説明

TRACE_DIRECTORY_CLIENT

「クライアント情報: トレース・ディレクトリ」

クライアント・トレース出力の作成先となるディレクトリ。デフォルトのクライアント・ディレクトリはORACLE_HOME/network/traceです。

TRACE_DIRECTORY_SERVER

「サーバー情報: トレース・ディレクトリ」

データベース・サーバー・トレース出力の作成先となるディレクトリ。デフォルトのサーバー・ディレクトリはORACLE_HOME/network/traceです。

TRACE_FILE_CLIENT

「クライアント情報: トレース・ファイル」

クライアントのトレース・ファイルの名前。デフォルトのトレース・ファイル名はsqlnet.trcです。

TRACE_FILE_SERVER

「サーバー情報: トレース・ファイル」

データベース・サーバーのトレース・ファイルの名前。デフォルトのトレース・ファイル名はsvr_pid.trcです。

TRACE_FILEAGE_CLIENT

このパラメータは手動で設定する必要があります。

クライアント・トレース・ファイルの最大保持期間を分単位で指定します。保持期間制限に達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_CLIENTパラメータで指定します。

TRACE_FILEAGE_SERVER

このパラメータは手動で設定する必要があります。

トレース・ファイルの最大保持期間を分単位で指定します。保持期間制限に達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_SERVERパラメータで指定します。

TRACE_FILELEN_CLIENT

このパラメータは手動で設定する必要があります。

クライアント・トレース・ファイルのサイズ(KB単位)。指定のサイズに到達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_CLIENTパラメータで指定します。

TRACE_FILELEN_SERVER

このパラメータは手動で設定する必要があります。

データベース・サーバー・トレース・ファイルのサイズ(KB単位)。指定のサイズに到達すると、トレース情報は次のファイルに書き込まれます。ファイルの数は、TRACE_FILENO_SERVERパラメータで指定します。

TRACE_FILENO_CLIENT

このパラメータは手動で設定する必要があります。

クライアント・トレース用のトレース・ファイルの数。このパラメータをTRACE_FILELEN_CLIENTパラメータとともに設定すると、トレース・ファイルは循環方式で使用されます。最初のファイルがいっぱいになると、2番目のファイルが使用され、順番にファイルが使用されます。最後のファイルがいっぱいになると、最初のファイルが再利用され、再度、順番にファイルが使用されます。

トレース・ファイル名は、順序番号によって識別されます。たとえば、デフォルトのトレース・ファイルsqlnet.trcを使用し、このパラメータを3に設定すると、トレース・ファイル名はsqlnet1_pid.trcsqlnet2_pid.trcおよびsqlnet3_pid.trcになります。

また、トレース・ファイル内のトレース・イベントの前には、そのファイルの順序番号が付きます。

このパラメータがTRACE_FILEAGE_CLIENTパラメータとともに設定されている場合、トレース・ファイルはトレース・ファイルの保持期間に基づいて循環されます。最初のファイルが保持期間制限に達するまで使用されると、2番目のファイルが使用され、以降、同様に繰り返されます。最後のファイルの保持期間制限に達すると、最初のファイルが再利用され、以降、同様に繰り返されます。

このパラメータがTRACE_FILELEN_CLIENTとTRACE_FILEAGE_CLIENTの両方のパラメータとともに設定されている場合、トレース・ファイルはサイズ制限または保持期間制限に達したときに循環されます。

TRACE_FILENO_SERVER

このパラメータは手動で設定する必要があります。

データベース・サーバーのトレース用トレース・ファイルの数。このパラメータをTRACE_FILELEN_SERVERパラメータとともに設定すると、トレース・ファイルは循環方式で使用されます。最初のファイルがいっぱいになると、2番目のファイルが使用され、順番にファイルが使用されます。最後のファイルがいっぱいになると、最初のファイルが再利用され、再度、順番にファイルが使用されます。

トレース・ファイル名は、順序番号によって識別されます。たとえば、デフォルトのトレース・ファイルsvr_pid.trcを使用し、このパラメータを3に設定すると、トレース・ファイル名はsvr1_pid.trcsvr2_pid.trcおよびsvr3_pid.trcになります。

また、トレース・ファイル内のトレース・イベントの前には、そのファイルの順序番号が付きます。

このパラメータがTRACE_FILEAGE_SERVERパラメータとともに設定されている場合、トレース・ファイルはトレース・ファイルの保持期間に基づいて循環されます。最初のファイルが保持期間制限に達するまで使用されると、2番目のファイルが使用され、以降、同様に繰り返されます。最後のファイルの保持期間制限に達すると、最初のファイルが再利用され、以降、同様に繰り返されます。

このパラメータがTRACE_FILELEN_SERVERとTRACE_FILEAGE_SERVERの両方のパラメータとともに設定されている場合、トレース・ファイルはサイズ制限または保持期間制限に達したときに循環されます。

TRACE_LEVEL_CLIENT

「クライアント情報: トレース・レベル」

トレース機能によりクライアントで記録される詳細レベル。

トレース・レベルは、0 (ゼロ)から16までの数値(0はトレースなし、16は最大限のトレースを表す)か、次のいずれかの値を指定します。

  • off(0と同じ)はトレースを実行しません。

  • user(4と同じ)はユーザーによるエラー条件を特定するためのトレースを実行します。

  • admin(6と同じ)はインストレーション固有の問題を特定するためのトレースを実行します。

  • support (16と同じ)は、Oracleサポート・サービスによるトラブルシューティングのトレース情報を提供します。

TRACE_LEVEL_SERVER

「サーバー情報: トレース・レベル」

トレース機能によりデータベース・サーバーで記録される詳細レベル。トレース・レベルは、0 (ゼロ)から16までの数値(0はトレースなし、16は最大限のトレースを表す)か、次のいずれかの値を指定します。

  • off(0と同じ)はトレースを実行しません。

  • user(4と同じ)はユーザーによるエラー条件を特定するためのトレースを実行します。

  • admin(6と同じ)はインストレーション固有の問題を特定するためのトレースを実行します。

  • support (16と同じ)は、Oracleサポート・サービスによるトラブルシューティングのトレース情報を提供します。

TRACE_TIMESTAMP_CLIENT

このパラメータは手動で設定する必要があります。

クライアント・トレース・ファイルsqlnet.trcのすべてのトレース・イベントのタイムスタンプ(dd-mon-yyyy hh:mi:ss:milの書式を使用)。

TRACE_TIMESTAMP_SERVER

このパラメータは手動で設定する必要があります。

クライアント・トレース・ファイルsqlnet.trcのすべてのトレース・イベントのタイムスタンプ(dd-mon-yyyy hh:mi:ss:milの書式を使用)。

TRACE_UNIQUE_CLIENT

「クライアント情報: 一意のトレース・ファイル名」

値をonに設定すると、複数のファイルが共存できるように、生成された各トレース・ファイルの名前にプロセス識別子が付加され、トレース・セッションごとに一意なファイル名がOracle Netによって作成されます。たとえば、デフォルトのトレース・ファイル名sqlnet.trcを使用すると、トレース・ファイルsqlnetpid.trcが作成されます。値をoffに設定すると、新規クライアント・トレース・セッションからのデータによって、既存のファイルが上書きされます。

表16-22に示されるTNSPINGユーティリティのトレース・パラメータをsqlnet.oraファイルに手動で追加できます。TNSPINGユーティリティでは、Oracle Netネットワーク上のサービス(データベース、その他のTNSサービスなど)に正常に到達できるかどうか判断します。

表16-22 TNSPINGのトレース・パラメータ

sqlnet.oraのパラメータ 説明

TNSPING.TRACE_DIRECTORY

TNSPINGトレース・ファイルtnsping.trcの作成先となるディレクトリ。デフォルトのディレクトリはORACLE_HOME/network/traceです。

TNSPING.TRACE_LEVEL

トレース機能によりTNSPINGユーティリティで記録される詳細レベル。トレース・レベルは、0 (ゼロ)から16までの数値(0はトレースなし、16は最大限のトレースを表す)か、次のいずれかの値を指定します。

  • off(0と同じ)はトレースを実行しません。

  • user(4と同じ)はユーザーによるエラー条件を特定するためのトレースを実行します。

  • admin(6と同じ)はインストレーション固有の問題を特定するためのトレースを実行します。

  • support (16と同じ)は、Oracleサポート・サービスによるトラブルシューティングのトレース情報を提供します。

16.7.2.4 構成ファイルのトレース・パラメータの設定

sqlnet.oraファイルのトレース・パラメータはOracle Net Managerで設定し、listener.oraファイルのトレース・パラメータはOracle Enterprise Manager Cloud ControlまたはOracle Net Managerで設定します。cman.oraファイルのトレース・パラメータは、手動で設定する必要があります。

16.7.2.4.1 Oracle Net Managerを使用したsqlnet.oraファイルのトレース・パラメータの設定

次の手順では、Oracle Net Managerを使用してsqlnet.oraファイルでトレース・パラメータを設定する方法について説明します。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」見出しから「プロファイル」を展開します。

  3. 右ペインのリストから、「一般」を選択します。

  4. 「トレース」タブをクリックします。

  5. 設定を指定します。

  6. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

クライアントのトレース・ファイルの名前はsqlnet.trcです。サーバーのトレース・ファイルの名前はsvr_pid.trcです。

16.7.2.4.2 Oracle Enterprise Manager Cloud Controlを使用したリスナーのトレース・パラメータの設定

次の手順では、Oracle Enterprise Manager Cloud Controlを使用してリスナーのトレース・パラメータを設定する方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

  3. 「実行」をクリックし、「リスナー」ページを表示します。

  4. リスナーを選択し、「編集」をクリックし、「リスナーの編集」ページを表示します。

  5. 「ロギングとトレース」タブをクリックします。

  6. 設定を指定します。

  7. 「OK」をクリックします。

トレース・ファイルの名前はlistener.trcです。

16.7.2.4.3 Oracle Net Managerを使用したリスナーのトレース・パラメータの設定

次の手順では、Oracle Net Managerを使用してリスナーのトレース・パラメータを設定する方法について説明します。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」見出しから「リスナー」を展開します。

  3. リスナーを選択します。

  4. 右ペインのリストから、「一般」を選択します。

  5. 「ロギングとトレース」タブをクリックします。

  6. 設定を指定します。

  7. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

16.7.3 制御ユーティリティ実行時のトレース設定

トレースは、制御ユーティリティの実行時に設定できます。制御ユーティリティを使用してトレースを設定しても、*.oraファイルにパラメータは設定されません。設定は、制御ユーティリティの現在のセッションでのみ有効です。

  • リスナーの場合は、リスナー制御ユーティリティのSET TRC_DIRECTORYSET TRC_FILEおよびSET TRC_LEVELコマンドを使用します。

  • Oracle Connection Managerの場合は、Oracle Connection Manager制御ユーティリティのSET TRACE_DIRECTORYSET TRACE_LEVELおよびSET TRACE_TIMESTAMPコマンドを使用します。

16.7.4 Oracle Net Servicesのトレース・ファイルの評価

トレース・ファイルは、Oracleサポート・サービスがネットワーク上の問題点を診断してトラブルシューティングする際に役立ちます。この項では、トレース・ファイルの基本的な分析を実行する方法について説明します。

16.7.4.1 ネットワーク・ノード間のデータ・パケットの流れ

Oracle Netは、データ・パケットを送受信することにより、その機能を実行します。supportのトレース・レベルを指定すると、トレース・ファイル内のOracle Netパケットの実際の内容を参照できます。送受信したパケット・タイプの順序により、接続を確立した方法を確認できます。

16.7.4.2 Oracle Netのデータ・パケットのフォーマット

トレース・ファイルの各行は、後ろにメッセージが続くプロシージャで始まります。各プロシージャの後には、実際のデータを示す16進データの行があります。パケットの内部をフローする実際のデータは、16進データの右側に表示される場合があります。

各パケットには、パケット・タイプを示すキーワードがあります。すべてのパケット・タイプは、接頭辞「nsp」から始まります。これは、特定のパケット情報についてトレース・ファイルを検討する場合に役立ちます。トレース・ファイルで使用されるキーワードは次のとおりです。

  • NSPTCN: 接続パケット・タイプで使用します。

  • NSPTAC: 受入れパケット・タイプで使用します。

  • NSPTRF: 拒否パケット・タイプで使用します。

  • NSPTRS: 再送パケット・タイプで使用します。

  • NSPTDA: データ・パケット・タイプで使用します。

  • NSPCNL: 制御パケット・タイプで使用します。

  • NSPTMK: マーカー・パケット・タイプで使用します。

例16-11では、一般的なパケット情報を示します。この例では、nsconプロシージャはネットワークを通じてNSPTCNパケットを送信します。

例16-11 パケット情報

nscon: entry
nscon: doing connect handshake...
nscon: sending NSPTCN packet
nspsend: entry
nspsend: plen=187, type=1
nspsend: 187 bytes to transport
nspsend:packet dump
nspsend:00 BB 00 00 01 00 00 00  |........|
nspsend:01 33 01 2C 0C 01 08 00  |.3.,....|
nspsend:7F FF 7F 08 00 00 00 01  |........|
nspsend:00 99 00 22 00 00 08 00  |..."....|
nspsend:01 01 28 44 45 53 43 52  |..(DESCR|
nspsend:49 50 54 49 4F 4E 3D 28  |IPTION=(|
nspsend:43 4F 4E 4E 45 43 54 5F  |CONNECT_|
nspsend:44 41 54 41 3D 28 53 49  |DATA=(SI|
nspsend:44 3D 61 70 33 34 37 64  |D=ap347d|
nspsend:62 31 29 28 43 49 44 3D  |b1)(CID=|
nspsend:28 50 52 4F 47 52 41 4D  |(PROGRAM|
nspsend:3D 29 28 48 4F 53 54 3D  |=)(HOST=|
nspsend:61 70 32 30 37 73 75 6E  |sales-12|
nspsend:29 28 55 53 45 52 3D 6D  |)(USER=m|
nspsend:77 61 72 72 65 6E 29 29  |scott))|
nspsend:29 28 41 44 44 52 45 53  |)(ADDRES|
nspsend:53 5F 4C 49 53 54 3D 28  |S_LIST=(|
nspsend:41 44 44 52 45 53 53 3D  |ADDRESS=|
nspsend:28 50 52 4F 54 4F 43 4F  |(PROTOCO|
nspsend:4C 3D 74 63 70 29 28 48  |L=tcp)(H|
nspsend:4F 53 54 3D 61 70 33 34  |OST=sale|
nspsend:37 73 75 6E 29 28 50 4F  |s-12)(PO|
nspsend:52 54 3D 31 35 32 31 29  |RT=1521)|
nspsend:29 29 29 00 00 00 00 00  |))).....|
nspsend: normal exit
nscon: exit (0)
16.7.4.3 Oracle Netの関連トレース・エラー出力

問題があると、トレース・ファイルにエラー・コードがロギングされます。例16-12は、データベース・サーバーへのSQL*Plus接続の障害に関する代表的なトレース・ファイル出力です。エラー・メッセージおよびエラー・スタックは太字で示されています。

例16-12 トレースの例

[22-MAY-2012 13:34:07:687] nsprecv: entry
[22-MAY-2012 13:34:07:687] nsbal: entry
[22-MAY-2012 13:34:07:687] nsbgetfl: entry
[22-MAY-2012 13:34:07:687] nsbgetfl: normal exit
[22-MAY-2012 13:34:07:687] nsmal: entry
[22-MAY-2012 13:34:07:687] nsmal: 44 bytes at 0x132d90
[22-MAY-2012 13:34:07:687] nsmal: normal exit
[22-MAY-2012 13:34:07:687] nsbal: normal exit
[22-MAY-2012 13:34:07:687] nsprecv: reading from transport...
[22-MAY-2012 13:34:07:687] nttrd: entry
[22-MAY-2012 13:35:09:625] nttrd: exit
[22-MAY-2012 13:35:09:625] ntt2err: entry
[22-MAY-2012 13:35:09:625] ntt2err: Read unexpected EOF ERROR on 10
[22-MAY-2012 13:35:09:625] ntt2err: exit
[22-MAY-2012 13:35:09:625] nsprecv: transport read error
[22-MAY-2012 13:35:09:625] nsprecv: error exit
[22-MAY-2012 13:35:09:625] nserror: entry
[22-MAY-2012 13:35:09:625] nserror: nsres: id=0, op=68, ns=12537, ns2=12560;
nt[0]=507, nt[1]=0, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0
[22-MAY-2012 13:35:09:625] nscon: error exit
[22-MAY-2012 13:35:09:625] nsdo: nsctxrnk=0
[22-MAY-2012 13:35:09:625] nsdo: error exit
[22-MAY-2012 13:35:09:625] nscall: unexpected response
[22-MAY-2012 13:35:09:625] nsclose: entry
[22-MAY-2012 13:35:09:625] nstimarmed: entry
[22-MAY-2012 13:35:09:625] nstimarmed: no timer allocated
[22-MAY-2012 13:35:09:625] nstimarmed: normal exit
[22-MAY-2012 13:35:09:625] nsdo: entry
[22-MAY-2012 13:35:09:625] nsdo: cid=0, opcode=98, *bl=0, *what=0,
uflgs=0x440, cflgs=0x2
[22-MAY-2012 13:35:09:625] nsdo: rank=64, nsctxrnk=0
[22-MAY-2012 13:35:09:625] nsdo: nsctx: state=1, flg=0x4201, mvd=0
[22-MAY-2012 13:35:09:625] nsbfr: entry
[22-MAY-2012 13:35:09:625] nsbaddfl: entry
[22-MAY-2012 13:35:09:625] nsbaddfl: normal exit
[22-MAY-2012 13:35:09:625] nsbfr: normal exit
[22-MAY-2012 13:35:09:625] nsbfr: entry
[22-MAY-2012 13:35:09:625] nsbaddfl: entry
[22-MAY-2012 13:35:09:625] nsbaddfl: normal exit
[22-MAY-2012 13:35:09:625] nsbfr: normal exit
[22-MAY-2012 13:35:09:625] nsdo: nsctxrnk=0
[22-MAY-2012 13:35:09:625] nsdo: normal exit
[22-MAY-2012 13:35:09:625] nsclose: closing transport
[22-MAY-2012 13:35:09:625] nttdisc: entry
[22-MAY-2012 13:35:09:625] nttdisc: Closed socket 10
[22-MAY-2012 13:35:09:625] nttdisc: exit
[22-MAY-2012 13:35:09:625] nsclose: global context check-out (from slot 0)
complete
[22-MAY-2012 13:35:09:703] nsnadisc: entry
[22-MAY-2012 13:35:09:703] nadisc: entry
[22-MAY-2012 13:35:09:703] nacomtm: entry
[22-MAY-2012 13:35:09:703] nacompd: entry
[22-MAY-2012 13:35:09:703] nacompd: exit
[22-MAY-2012 13:35:09:703] nacompd: entry
[22-MAY-2012 13:35:09:703] nacompd: exit
[22-MAY-2012 13:35:09:703] nacomtm: exit
[22-MAY-2012 13:35:09:703] nas_dis: entry
[22-MAY-2012 13:35:09:703] nas_dis: exit
[22-MAY-2012 13:35:09:703] nau_dis: entry
[22-MAY-2012 13:35:09:703] nau_dis: exit
[22-MAY-2012 13:35:09:703] naeetrm: entry
[22-MAY-2012 13:35:09:703] naeetrm: exit
[22-MAY-2012 13:35:09:703] naectrm: entry
[22-MAY-2012 13:35:09:703] naectrm: exit
[22-MAY-2012 13:35:09:703] nagbltrm: entry
[22-MAY-2012 13:35:09:703] nau_gtm: entry
[22-MAY-2012 13:35:09:703] nau_gtm: exit
[22-MAY-2012 13:35:09:703] nagbltrm: exit
[22-MAY-2012 13:35:09:703] nadisc: exit
[22-MAY-2012 13:35:09:703] nsnadisc: normal exit
[22-MAY-2012 13:35:09:703] nsbfr: entry
[22-MAY-2012 13:35:09:703] nsbaddfl: entry
[22-MAY-2012 13:35:09:703] nsbaddfl: normal exit
[22-MAY-2012 13:35:09:703] nsbfr: normal exit
[22-MAY-2012 13:35:09:703] nsmfr: entry
[22-MAY-2012 13:35:09:703] nsmfr: 2256 bytes at 0x130508
[22-MAY-2012 13:35:09:703] nsmfr: normal exit
[22-MAY-2012 13:35:09:703] nsmfr: entry
[22-MAY-2012 13:35:09:703] nsmfr: 484 bytes at 0x1398a8
[22-MAY-2012 13:35:09:703] nsmfr: normal exit
[22-MAY-2012 13:35:09:703] nsclose: normal exit
[22-MAY-2012 13:35:09:703] nscall: connecting...
[22-MAY-2012 13:35:09:703] nsclose: entry
[22-MAY-2012 13:35:09:703] nsclose: normal exit
[22-MAY-2012 13:35:09:703] nladget: entry
[22-MAY-2012 13:35:09:734] nladget: exit
[22-MAY-2012 13:35:09:734] nsmfr: entry
[22-MAY-2012 13:35:09:734] nsmfr: 144 bytes at 0x132cf8
[22-MAY-2012 13:35:09:734] nsmfr: normal exit
[22-MAY-2012 13:35:09:734] nsmfr: entry
[22-MAY-2012 13:35:09:734] nsmfr: 156 bytes at 0x138e70
[22-MAY-2012 13:35:09:734] nsmfr: normal exit
[22-MAY-2012 13:35:09:734] nladtrm: entry
[22-MAY-2012 13:35:09:734] nladtrm: exit
[22-MAY-2012 13:35:09:734] nscall: error exit
[22-MAY-2012 13:35:09:734] nioqper:  error from nscall
[22-MAY-2012 13:35:09:734] nioqper:    ns main err code: 12537
[22-MAY-2012 13:35:09:734] nioqper:    ns (2)  err code: 12560
[22-MAY-2012 13:35:09:734] nioqper:    nt main err code: 507
[22-MAY-2012 13:35:09:734] nioqper:    nt (2)  err code: 0
[22-MAY-2012 13:35:09:734] nioqper:    nt OS   err code: 0
[22-MAY-2012 13:35:09:734] niomapnserror: entry
[22-MAY-2012 13:35:09:734] niqme: entry
[22-MAY-2012 13:35:09:734] niqme: reporting NS-12537 error as ORA-12537
[22-MAY-2012 13:35:09:734] niqme: exit
[22-MAY-2012 13:35:09:734] niomapnserror: returning error 12537
[22-MAY-2012 13:35:09:734] niomapnserror: exit
[22-MAY-2012 13:35:09:734] niotns: Couldn't connect, returning 12537
[22-MAY-2012 13:35:10:734] niotns: exit
[22-MAY-2012 13:35:10:734] nsbfrfl: entry
[22-MAY-2012 13:35:10:734] nsbrfr: entry
[22-MAY-2012 13:35:10:734] nsbrfr: nsbfs at 0x132d90, data at 0x132dc8.
[22-MAY-2012 13:35:10:734] nsbrfr: normal exit
[22-MAY-2012 13:35:10:734] nsbrfr: entry
[22-MAY-2012 13:35:10:734] nsbrfr: nsbfs at 0x1248d8, data at 0x132210.
[22-MAY-2012 13:35:10:734] nsbrfr: normal exit
[22-MAY-2012 13:35:10:734] nsbrfr: entry
[22-MAY-2012 13:35:10:734] nsbrfr: nsbfs at 0x12d820, data at 0x1319f0.
[22-MAY-2012 13:35:10:734] nsbrfr: normal exit
[22-MAY-2012 13:35:10:734] nsbfrfl: normal exit
[22-MAY-2012 13:35:10:734] nigtrm: Count in the NI global area is now 1
[22-MAY-2012 13:35:10:734] nigtrm: Count in the NL global area is now 1

ノート:

前述の例のエラー・スタックには、オペレーティング・システムのエラー・コードが示されています。各オペレーティング・システムには独自のエラー・コードがあります(オペレーティング・システムのエラー・コードの詳細は、システムのドキュメントを参照してください)。

エラー・コードを評価する最も効率的な方法は、ロギングされている最新のnserrorエントリを検索することです。これは、セッション・レイヤーが接続を制御しているためです。最も重要なエラー・メッセージはファイルの最後部にあるメッセージです。これらは最新のエラーであり、接続の問題の原因を示しています。

特定のリターン・コードの情報に関しては、Oracleエラー・ツールのoerrを使用します。このためには、任意のコマンドラインで次のように入力します。

oerr tns error_number

例として、例16-12に示されるトレース・ファイルにロギングされた、次のnserrorエントリを考えます。

[22-MAY-2012 13:35:09:625] nserror: nsres: id=0, op=68, ns=12537, ns2=12560;
nt[0]=507, nt[1]=0, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0

前述の例では、メインTNSエラーは12537で、セカンダリ・エラーは12560です。プロトコル・アダプタ・エラーは507です。oerrを使用することによって、リターン・コード12537、12560、および507の詳細を検索できます。次の例ではユーザー入力は太字で示されています。

oerr tns 12537
12537, 00000, "TNS:connection closed"
// *Cause: "End of file" condition has been reached; partner has disconnected.
// *Action: None needed; this is an information message.

oerr tns 12560
12560, 00000, "TNS:protocol adapter error"
// *Cause: A generic protocol adapter error occurred.
// *Action: Check addresses used for proper protocol specification. Before
// reporting this error, look at the error stack and check for lower level
// transport errors. For further details, turn on tracing and reexecute the
// operation. Turn off tracing when the operation is complete.

oerr tns 507
00507, 00000, "Connection closed"
// *Cause: Normal "end of file" condition has been reached; partner has
//  disconnected.
// *Action: None needed; this is an information message.

16.7.5 トレース・アシスタントを使用したトレース・ファイルの検証

Oracle Net Servicesでは、トレース・アシスタントという名前のツールを提供しており、このツールは、トレース・ファイル・テキストの既存の行をわかりやすい段落に変換することによって、トレース・ファイル内の情報を理解する際に役立ちます。トレース・アシスタントは、レベル16(support)のOracle Net Servicesトレース・ファイルでのみ機能します。

ノート:

トレース・アシスタントは、DIAG_ADR_ENABLEDパラメータがoffに設定されている場合のみ使用できます。「自動診断リポジトリの理解」を参照してください。

16.7.5.1 トレース・アシスタントの構文

トレース・アシスタントを実行するには、コマンドライン・プロンプトで次のコマンドを入力します。

trcasst [options] filename

表16-23では、オプションを説明します。

表16-23 トレース・アシスタントの構文

オプション 説明

-elevel

エラー情報を表示します。-eの後に、01または2を使用してエラー・デコーディング・レベルを指定します。

  • 0または何もない場合は、nserrorファンクションからダンプされたNSエラー番号が変換され、他のすべてのエラーがリスト表示されます。

  • 1の場合は、nserrorファンクションから変換されたNSエラーのみが表示されます。

  • 2の場合は、変換されていないエラー番号が表示されます。

-la

接続IDがNS接続パケットに存在する場合、出力結果には接続IDが表示されます。接続IDは、16進数の8バイトのIDとして表示されます。パケットが接続に関連付けられていない場合、生成されるIDはトレース・アシスタントによって作成されます。つまり、トレース・ファイル内の接続パケットは上書きされます。これは、循環方式のトレース・ファイルで発生する可能性があります。

出力には、IDごとに次の内容が表示されます。

  • ソケットID(接続で使用する場合)。

  • 接続パケットの送受信操作。

  • 初期化パラメータ・ファイル内にあるDISPATCHERSパラメータのMULTIPLEX属性の現行設定。MULTIPLEXONに設定すると、セッションの多重化が使用可能になります。

  • セッションID(MULTIPLEXONに設定されている場合)。

  • 接続データ情報。

ノート:

  • このオプションは、他のオプションと一緒には使用しないでください。

  • トレース・アシスタントで生成されたIDは、クライアント/サーバー・トレース・ファイルと相関関係はありません。

-li ID

-laの出力から、特定のIDに関するトレースを表示します。

ノート: このオプションは、必ず-laオプションの出力とともに使用します。

-otype

出力する情報の種類と量を表示します。-oの後には、次のオプションを使用できます。

  • cを指定すると、接続サマリー情報を表示します。

  • dを指定すると、接続詳細情報を表示します。

  • uを指定すると、Two-Task Common (TTC)サマリー情報を表示します。

  • tを指定すると、TTC詳細情報を表示します。

  • qを指定すると、TTCサマリー情報を強化するSQLコマンドが表示されます。このオプションは、-ouqのように、uとともに使用します。

ノート: dの出力にはcを指定した場合の情報も含まれるため、cdの両方を指定しないでください。両方のオプションを指定すると、dの出力のみが表示されます。

-s

次の統計情報を表示します。

  • 送受信の合計バイト数。

  • オープン・カーソルの最大数。

  • 現在のオープン・カーソル数。

  • 操作の件数と率。

  • PL/SQLに関する解析と実行の件数。

  • 送受信コールの合計数。

  • 送受信バイトの合計、平均および最大数。

  • 現行の転送およびセッションの合計数。

  • タイムスタンプ情報(ある場合)。

  • 順序番号(ある場合)。

オプションを指定しない場合、デフォルトは-odt -e0 -sです。この場合、トレース・ファイル内の接続情報とTTCイベントの詳細、エラー・レベル0(ゼロ)のエラー情報、および統計情報が表示されます。

例16-13は、トレース・アシスタントが-e1オプションを使用して、トレース・ファイル情報を読みやすい書式に変換する方法を示しています。

例16-13 trcasst -e1の出力

    ************************************************************************* 
    *                        Trace Assistant                                * 
    ************************************************************************* 

ntus2err: exit 
ntuscni: exit 
ntusconn: exit 
nserror: entry 
-<ERROR>- nserror: nsres: id=0, op=65, ns=12541, ns2=12560; nt[0]=511, nt[1]=2, nt[2]=0 
/////////////////////////////////////////////////////////////// 
Error found. Error Stack follows: 
              id:0 
  Operation code:65 
      NS Error 1:12541 
      NS Error 2:12560 
NT Generic Error:511 
  Protocol Error:2 
        OS Error:0 
 NS & NT Errors Translation 
12541, 00000 "TNS:no listener" 
 // *Cause: The connection request could not be completed because the listener 
 // is not running. 
 // *Action: Ensure that the supplied destination address matches one of 
 // the addresses used by the listener - compare the TNSNAMES.ORA entry with 
 // the appropriate LISTENER.ORA file (or TNSNAV.ORA if the connection is to 
 // go by way of an Interchange). Start the listener on the remote machine. 
/ 
12560, 00000 "TNS:protocol adapter error" 
 // *Cause: A generic protocol adapter error occurred. 
 // *Action: Check addresses used for proper protocol specification. Before 
 // reporting this error, look at the error stack and check for lower level 
 // transport errors.For further details, turn on tracing and reexecute the 
 // operation. Turn off tracing when the operation is complete. 
/ 
00511, 00000 "No listener" 
 // *Cause: The connect request could not be completed because no application 
 // is listening on the address specified, or the application is unable to 
 // service the connect request in a sufficiently timely manner. 
 // *Action: Ensure that the supplied destination address matches one of 
 // the addresses used by the listener - compare the TNSNAMES.ORA entry with 
 // appropriate LISTENER.ORA file (or TNSNAV.ORA if the connection is to go 
 // by way of an Interchange. Start the listener on the remote machine. 
/ 
/////////////////////////////////////////////////////////////// 
    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 

ただし、nserrorファンクションでロギングされなかった他のエラーがトレース・ファイル内に存在する場合があります。

16.7.5.2 パケットに関する出力例

トレース・アシスタントでは、Oracle NetレイヤーとTTC通信レイヤーの両方からデータ・パケットを表示できます。

次のオプションを使用してパケットを表示できます。

  • 接続性のサマリー(-ocオプションを使用)

  • 接続性の詳細(-odオプションを使用)

例16-14は、-ocオプションを使用した場合のサマリー情報の出力を示します。

例16-14 trcasst -ocの出力のサマリー情報

    ************************************************************************* 
    *                        Trace Assistant                                * 
    ************************************************************************* 

---> Send 198 bytes - Connect packet 
Connect data length: 140 
Connect Data: 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)(CID=(PROGRAM=)
    (HOST=sales-server)(USER=joe)))) 
  
<--- Received 76 bytes - Redirect packet 
Redirect data length: 66 
Redirect Data: 
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) 

---> Send 198 bytes - Connect packet 
Connect data length: 140 
Connect Data: 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)(CID=(PROGRAM=)
    (HOST=sales-server)(USER=joe)))) 
  
<--- Received 32 bytes - Accept packet 
Connect data length: 0 
---> Send 153 bytes - Data packet 
        Native Services negotiation packet 

<--- Received 127 bytes - Data packet 
        Native Services negotiation packet 

---> Send 32 bytes - Data packet 

<--- Received 140 bytes - Data packet 

    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 

送信または受信されるパケットには、それぞれ、---> Send nnn bytesまたは<--- Received nnn bytesという接頭辞が付きます。これは、このノードがnnnバイトの特定のタイプのパケットを送信または受信していることを示しています。この接頭辞によって、ノードがクライアントかデータベース・サーバーかを判断できます。接続要求は、常にクライアントから送信され、データベース・サーバーまたはリスナーに受信されます。

例16-15は、-odオプションを使用した場合の詳細情報の出力を示します。この出力には、接続のネゴシエーション時に接続データとともに送信されたすべての詳細情報が表示されます。

例16-15 trcasst -odの出力の詳細情報

    ************************************************************************* 
    *                        Trace Assistant                                * 
    ************************************************************************* 
--->  Send   241 bytes - Connect packet
Current NS version number is: 311.
Lowest NS version number can accommodate is: 300.
Global options for the connection:
      can receive attention
      no attention processing
      Don't care
      Maximum SDU size:8192
      Maximum TDU size:32767
      NT protocol characteristics:
            Test for more data
            Test operation
            Full duplex I/O
            Urgent data support
            Generate SIGURG signal
            Generate SIGPIPE signal
            Generate SIGIO signal
            Handoff connection to another
      Line turnaround value :0
      Connect data length :183
      Connect data offset :58
      Connect data maximum size :512
            Native Services wanted
            NAU doing O3LOGON - DH key foldedin
            Native Services wanted
            NAU doing O3LOGON - DH key foldedin
      Cross facility item 1: 0
      Cross facility item 2: 0
      Connection id : Ox000059F70000004C
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)(SRVR=SHARED)(CID=(PROGRAM=)
(HOST=sales-server)(USER=joe))))

<--- Received 76 bytes - Redirect packet
     Redirect data length: 66
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))

--->  Send   241 bytes - Connect packet
Current NS version number is: 311.
Lowest NS version number can accommodate is: 300.
Global options for the connection:
      can receive attention
      no attention processing
      Don't care
      Maximum SDU size:8192
      Maximum TDU size:32767
      NT protocol characteristics:
      Test for more data
      Test operation
      Full duplex I/O
      Urgent data support
      Generate SIGURG signal
      Generate SIGPIPE signal
      Generate SIGIO signal
      Handoff connection to another
Line turnaround value :0
Connect data length :183
Connect data offset :58
Connect data maximum size :512
      Native Services wanted
      NAU doing O3LOGON - DH key foldedin
      Native Services wanted
      NAU doing O3LOGON - DH key foldedin
Cross facility item 1: 0
Cross facility item 2: 0
Connection id : Ox000059F70000007A
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)(SRVR=SHARED)(CID=(PROGRAM=)
(HOST=sales-server)(USER=joe))))
<--- Received 32 bytes - Accept packet
      Accepted NS version number is: 310.
Global options for the connection: 
      no attention processing
      Don't care
      Accepted maximum SDU size: 8192 
      Accepted maximum TDU size: 32767 
      Connect data length: 0
            Native Services wanted
            NAU doing O3LOGON - DH key foldedin
            Native Services wanted
            NAU doing O3LOGON - DH key foldedin

--->  Send   153 bytes - Data packet
      Native Services negotiation packet version#: 150999040
           Service data packet #0 for Supervisor has 3 subpackets
               Subpacket #0:  Version #150999040
               Subpacket #1: 0000000000000000
               Subpacket #2: DAABBCEF0003000000040004000100010002
            Service data packet #1 for Authentication has 3 subpackets
               Subpacket #0:  Version #150999040
               Subpacket #1: UB2: 57569
               Subpacket #2: FCFF
            Service data packet #2 for Encryption has 2 subpackets
               Subpacket #0:  Version #150999040
               Subpacket #1: 000000000000000000
            Service data packet #3 for Data Integrity has 2 subpackets
               Subpacket #0:  Version #150999040
               Subpacket #1: 000000

<--- Received 127 bytes - Data packet
     Native Services negotiation packet version#: 135290880
            Service data packet #0 for Supervisor has 3 subpackets
               Subpacket #0:  Version #135290880
               Subpacket #1: 0000
               Subpacket #2: DAABBCEF00030000000200040001
            Service data packet #1 for Authentication has 2 subpackets
               Subpacket #0:  Version #135290880
               Subpacket #1: FBFF
            Service data packet #2 for Encryption has 2 subpackets
               Subpacket #0:  Version #135290880
               Subpacket #1: UB1: 0
            Service data packet #3 for Data Integrity has 2 subpackets
               Subpacket #0:  Version #135290880
               Subpacket #1: UB1: 0
....

--->  Send   11 bytes - Marker packet
      One data byte. 
      Hex character sent over to the server: 2

<--- Received 11 bytes - Marker packet
     One data byte. 
     Hex character sent over to the server: 2

<--- Received 155 bytes - Data packet

--->  Send   25 bytes - Data packet

<--- Received 11 bytes - Data packet

--->  Send   13 bytes - Data packet

<--- Received 11 bytes - Data packet

--->  Send   10 bytes - Data packet
      Data Packet flags:
      End of file
    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 
16.7.5.3 Two-Task Common (TTC)パケットの例

TTCは、カーソルのオープン、行の選択、行の更新など、データベース・サーバーに送られる要求を処理します。データベース・サーバーは、すべての要求に応答します。ログオンを要求すると、その要求を完了したデータベース・サーバーから応答が返されます。

-ouオプションを使用した場合のTTCサマリー情報は、他の表示とは異なり、行ごとに1つのパケットではなく2つのパケットが表示されます。これは、TTCで処理された要求と応答のペアをミラー化するためです。

出力は次の書式で表示されます。

description TTC_message cursor_number SQL_statement bytes_sent bytes_received

例16-16では、接続のネゴシエーション時に接続データとともに送信されたすべての詳細情報を示します。

例16-16 trcasst -ouの出力

    ************************************************************************* 
    *                        Trace Assistant                                * 
    ************************************************************************* 

                                                                    Bytes  Bytes 
                                                                     Sent   Rcvd 

Send operation(TTIPRO)                                                 32    140 
Send operation(TTIDTY)                                                 33     22 
Get the session key (OSESSKEY)                                        229    145 
Generic authentication call (OAUTH)                                   368   1001 
Send operation(TTIPFN)                                                 44    144 
Send operation(TTIPFN)                                                 36     16 
Parse a statement (OSQL)                 # 1  SELECT USER FROM ...     47    100 
Fast upi calls to opial7 (OALL7)         # 1                          130    111 
Fetch row (OFETCH)                       # 1                           21    137 
Close cursor (OCLOSE)                    # 1                           17     11 
New v8 bundled call (OALL8)              # 0  !Keep Parse  BEGI...    156    145 
Send operation(TTIPFN)                                                 51     16 
Parse a statement (OSQL)                 # 1  SELECT ATTRIBUTE,...    186    100 
Fast upi calls to opial7 (OALL7)         # 1                          246    111 
Fetch row (OFETCH)                       # 1                           21    126 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Parse a statement (OSQL)                 # 1  SELECT CHAR_VALUE...    208    100 
Fast upi calls to opial7 (OALL7)         # 1                          130    111 
Fetch row (OFETCH)                       # 1                           21    126 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Fast upi calls to opial7 (OALL7)         # 1  !Keep Parse  BEGI...    183     41 
Send operation(TTIRXD)                                                 20    111 
Close cursor (OCLOSE)                    # 1                           17     11 
New v8 bundled call (OALL8)              # 0  Parse Fetch  SELE...    165    278 
Send operation(TTIPFN)                                                 51     16 
Parse a statement (OSQL)                 # 1  commit                   31    100 
Execute statement (OEXEC)                # 1  number of rows: 1        25    100 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Fast upi calls to opial7 (OALL7)         # 1  !Keep Parse  BEGI...    183     41 
Send operation(TTIRXD)                                                 60    111 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Fast upi calls to opial7 (OALL7)         # 1  !Keep Parse  BEGI...    183     41 
Send operation(TTIRXD)                                                 20    111 
Close cursor (OCLOSE)                    # 1                           17     11 
New v8 bundled call (OALL8)              # 0  Parse Fetch  sele...    144    383 
New v8 bundled call (OALL8)              # 1  !Keep Fetch             121    315 
Logoff off of Oracle (OLOGOFF)                                         13     11

    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 

例16-17は、-otオプションを使用した場合のTTC詳細情報の出力を示します。

例16-17 trcasst -otの出力の詳細なTTC情報

    *************************************************************************
    *                        Trace  Assistant                                  *            
    *************************************************************************

Set protocol (TTIPRO)
        Operation 01 (con) Send protocol version=6
        Originating platform: x86_64/Linux 2.4.xx

Set protocol (TTIPRO)
        Operation 01 (con) Receive protocol version=6
        Destination platform: x86_64/Linux 2.4.xx

Set datatypes (TTIDTY)

Set datatypes (TTIDTY)

Start of user function (TTIFUN)
        Get the session key (OSESSKEY)

Return opi parameter (TTIRPA)

Start of user function (TTIFUN)
        Generic authentication call (OAUTH)

Return opi parameter (TTIRPA)

Piggyback function follows (TTIPFN)
Start of user function (TTIFUN)
        V8 session switching piggyback (O80SES)
Start of user function (TTIFUN)
        Get Oracle version/date (OVERSION)

Return opi parameter (TTIRPA)
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - 64bit Production
 Version 18.1.0.0.0
Start of user function (TTIFUN)
        New v8 bundled call (OALL8) Cursor # 0
 Parse Fetch



Describe information (TTIDCB)

Start of user function (TTIFUN)
        Fetch row (OFETCH) Cursor # 3

ORACLE function complete (TTIOER)
ORA-01403: no data found


Piggyback function follows (TTIPFN)
Start of user function (TTIFUN)
        Cursor Close All (OCCA)
Start of user function (TTIFUN)
        New v8 bundled call (OALL8) Cursor # 0
 Parse Fetch



Describe information (TTIDCB)

Piggyback function follows (TTIPFN)
Start of user function (TTIFUN)
        Cursor Close All (OCCA)
Start of user function (TTIFUN)
        New v8 bundled call (OALL8) Cursor # 0
 Parse Fetch



Describe information (TTIDCB)

Piggyback function follows (TTIPFN)
Start of user function (TTIFUN)
        Cursor Close All (OCCA)
Start of user function (TTIFUN)
        New v8 bundled call (OALL8) Cursor # 0
 !Keep Parse



Sending the I/O vector only for fast upi (TTIIOV)

Piggyback function follows (TTIPFN)
Start of user function (TTIFUN)
        Cursor Close All (OCCA)
Start of user function (TTIFUN)
        New v8 bundled call (OALL8) Cursor # 0
 Parse Fetch



Describe information (TTIDCB)

Piggyback function follows (TTIPFN)
Start of user function (TTIFUN)
        Cursor Close All (OCCA)
Start of user function (TTIFUN)
        Commit (OCOMMIT)

V6 Oracle func complete (TTISTA)


Start of user function (TTIFUN)
        Commit (OCOMMIT)

V6 Oracle func complete (TTISTA)


Start of user function (TTIFUN)
        Logoff off of Oracle (OLOGOFF)
        MAXIMUM OPEN CURSORS: 0
        CURSORS NOT CLOSED: 0


V6 Oracle func complete (TTISTA)
        Succeeded

    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 

例16-18は、-ouqオプションを使用した場合のSQL詳細情報の出力を示します。出力の各行の最初に表示される項目は、実際に送信された要求です。2番目に表示される項目は、操作が実行されたカーソルの位置です。3番目に表示される項目は、SQLコマンドのリスト、または応答中を示すフラグのいずれかです。送受信されたバイト数は、最も右側に表示されます。フラグは次のいずれかです。

  • !PL/SQL = PL/SQL要求以外

  • COM = Commit

  • IOV = Get I/O Vector

  • DEFN = Define

  • EXEC = Execute

  • FETCH = Fetch

  • CAN = Cancel

  • DESCSEL = Describe select

  • DESCBND = Describe Bind

  • BND = Bind

  • PARSE = Parse

  • EXACT = Exact

例16-18 trcasst -ouqの出力の詳細なSQL情報

    ************************************************************************* 
    *                        Trace Assistant                                * 
    ************************************************************************* 
                                                                    Bytes  Bytes 
                                                                     Sent   Rcvd 

Send operation(TTIPRO)                                                 32    140 
Send operation(TTIDTY)                                                 33     22 
Get the session key (OSESSKEY)                                        229    145 
Generic authentication call (OAUTH)                                   368   1001 
Send operation(TTIPFN)                                                 44    144 
Send operation(TTIPFN)                                                 36     16 
Parse a statement (OSQL)                 # 1                           47    100 
          SELECT USER FROM DUAL 

Fast upi calls to opial7 (OALL7)         # 1                          130    111 
Fetch row (OFETCH)                       # 1                           21    137 
Close cursor (OCLOSE)                    # 1                           17     11 
New v8 bundled call (OALL8)              # 0  !Keep Parse             156    145 
          BEGIN DBMS_OUTPUT.DISABLE; END; 

Send operation(TTIPFN)                                                 51     16 
Parse a statement (OSQL)                 # 1                          186    100 
          SELECT ATTRIBUTE,SCOPE,NUMERIC_VALUE,CHAR_VALUE,DA 
          TE_VALUE FROM SYSTEM.PRODUCT_PRIVS WHERE (UPPER('S 
          QL*Plus') LIKE UPPER(PRODUCT)) AND (UPPER(USER) LI 
          KE USERID) 

Fast upi calls to opial7 (OALL7)         # 1                          246    111 
Fetch row (OFETCH)                       # 1                           21    126 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Parse a statement (OSQL)                 # 1                          208    100 
          SELECT CHAR_VALUE FROM SYSTEM.PRODUCT_PRIVS WHERE 
          (UPPER('SQL*Plus') LIKE UPPER(PRODUCT)) AND ((UPPE 
          R(USER) LIKE USERID) OR (USERID = 'PUBLIC')) AND ( 
          UPPER(ATTRIBUTE) = 'ROLES') 

Fast upi calls to opial7 (OALL7)         # 1                          130    111 
Fetch row (OFETCH)                       # 1                           21    126 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Fast upi calls to opial7 (OALL7)         # 1  !Keep Parse             183     41 
          BEGIN DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); E 
          ND; 

Send operation(TTIRXD)                                                 20    111 
Close cursor (OCLOSE)                    # 1                           17     11 
New v8 bundled call (OALL8)              # 0  Parse Fetch             165    278 
          SELECT DECODE('A','A','1','2') FROM DUAL 

Send operation(TTIPFN)                                                 51     16 
Parse a statement (OSQL)                 # 1                           31    100 
          commit 

Execute statement (OEXEC)                # 1  number of rows: 1        25    100 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Fast upi calls to opial7 (OALL7)         # 1  !Keep Parse             183     41 
          BEGIN DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); E 
          ND; 

Send operation(TTIRXD)                                                 60    111 
Close cursor (OCLOSE)                    # 1                           17     11 
Send operation(TTIPFN)                                                 36     16 
Fast upi calls to opial7 (OALL7)         # 1  !Keep Parse             183     41 
          BEGIN DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); E 
          ND; 

Send operation(TTIRXD)                                                 20    111 
Close cursor (OCLOSE)                    # 1                           17     11 
New v8 bundled call (OALL8)              # 0  Parse Fetch             144    383 
          select * from dept 

New v8 bundled call (OALL8)              # 1  !Keep Fetch             121    315 
Logoff off of Oracle (OLOGOFF)                                         13     11 
  
    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 
16.7.5.4 接続に関する出力例

これらは、trcasst -laおよび-liオプションを使用した出力例です。

例16-19は、-laオプションを使用した場合の出力を示します。出力には次の情報が表示されます。

  • 受信した接続ID

  • 接続のソケットID

  • 操作

    • Receiveはトレースがデータベース・サーバー・トレースであることを示します。この例では、Receiveが操作です。

    • Sendはトレースがクライアント・トレースであることを示します。

  • DISPATCHERSパラメータのMULTIPLEX属性は、ONに設定されています。

  • 32ビットのセッションID

  • 受信した接続データ情報。

例16-19 trcasst -laの出力

    ************************************************************************* 
    *                        Trace Assistant                                * 
    ************************************************************************* 

Connection ID: 00000B270000000B 
        Socket Id: 15 
        Operation: Receive 
        Multiplex: ON 
        Session Id: 8362785DE4FC0B19E034080020F793E1 
        Connect Data: 
        (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=(SERVER=shared)
        (SERVICE_NAME=sales.us.example.com)(CID=(PROGRAM=)(HOST=sales-server)
        (USER=oracle)))) 
Connection ID: 00000B240000000B 
        Socket Id: 15 
        Operation: Receive 
        Multiplex: ON 
        Session Id: 8362785DE4FB0B19E034080020F793E1 
        Connect Data: 
        (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=(SERVER=shared)
        (SERVICE_NAME=sales.us.example.com)(CID=(PROGRAM=)(HOST=sales-server)
        (USER=oracle)))) 
Connection ID: 00000B1F00000008 
        Socket Id: 15 
        Operation: Receive 
        Multiplex: ON 
        Session Id: 8362785DE4F90B19E034080020F793E1 
        Connect Data: 
        (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=(SERVER=shared)
        (SERVICE_NAME=sales.us.example.com)(CID=(PROGRAM=)(HOST=sales-server)
        (USER=oracle)))) 
    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 
  

例16-20は、-li 00000B1F00000008オプションを使用した場合の接続ID 00000B1F00000008に関する出力を示します。

例16-20 trcasst -liの出力

    ************************************************************************* 
    *                               Trace Assistant                         * 
    ************************************************************************* 
<--- Received 246 bytes - Connect packet
Current NS version number is: 310.
Lowest NS version number can accommodate is: 300.
Global options for the connection:
        Can receive attention
        No attention processing
        Don't care
        Maximum SDU size: 8192
        Maximum TDU size: 32767
        NT protocol characteristics:
                Test for more data
                Test operation
                Full duplex I/O
                Urgent data support
                Generate SIGURG signal
                Generate SIGPIPE signal
                Generate SIGIO signal
                Handoff connection to another
        Line turnaround value: 0
        Connect data length: 188
        Connect data offset: 58
        Connect data maximum size: 512
                Native Services wanted
                NAU doing O3LOGON - DH key foldedin
                Native Services wanted
                NAU doing O3LOGON - DH key foldedin
        Cross facility item 1: 0
        Cross facility item 2: 0
        Connection id: Ox00000B1F00000008
    (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521))
    (CONNECT_DATA=(SERVER=shared)(SERVICE_NAME=sales.us.example.com)
    (CID=(PROGRAM=)(HOST=sales-server)(USER=oracle)))) 

---> Send 114 bytes - Accept packet
Accepted NS version number is: 310.
Global options for the connection:
        No attention processing
        Don't care
        Accepted maximum SDU size: 8192
        Accepted maximum TDU size: 32767
        Connect data length: 0
                Native Services wanted
                NAU doing O3LOGON - DH key foldedin
                Native Services wanted
                NAU doing O3LOGON - DH key foldedin
        Connection Time out: 1000
        Tick Size: 100
        Reconnect Data: (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=34454))
        Session Id: 8362785DE4F90B19E034080020F793E1
<--- Received 164 bytes - Data packet
        Native Services negotiation packet version#: 135290880
                 Service data packet #0 for Supervisor has 3 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: 0000000000000000
                        Subpacket #2: DAABBCEF0003000000040004000100010002
                 Service data packet #1 for Authentication has 3 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: UB2: 57569
                        Subpacket #2: FCFF
                 Service data packet #2 for Encryption has 2 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: 0000000000
                 Service data packet #3 for Data Integrity has 2 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: 0000
---> Send 143 bytes - Data packet
        Native Services negotiation packet version#: 135290880
                 Service data packet #0 for Supervisor has 3 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: 0000
                        Subpacket #2: DAABBCEF00030000000200040001
                 Service data packet #1 for Authentication has 2 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: FBFF
                 Service data packet #2 for Encryption has 2 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: UB1: 0
                 Service data packet #3 for Data Integrity has 2 subpackets
                        Subpacket #0:  Version #135290880
                        Subpacket #1: UB1: 0
<--- Received 48 bytes - Data packet
Set protocol (TTIPRO)
        Operation 01 (con) Receive protocol version=6
        Destination platform: SVR4-be-8.1.0
---> Send 156 bytes - Data packet
Set protocol (TTIPRO)
        Operation 01 (con) Send protocol version=6
        Originating platform: SVR4-be-8.1.0
<--- Received 49 bytes - Data packet
Set datatypes (TTIDTY)
---> Send 38 bytes - Data packet
Set datatypes (TTIDTY)
<--- Received 245 bytes - Data packet
Start of user function (TTIFUN)
        Get the session key (OSESSKEY)
---> Send 161 bytes - Data packet
Return opi parameter (TTIRPA)
... 
    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 
16.7.5.5 統計に関する出力例

収集される統計の種類は、ほとんどの場合、ネットワーク・パートナ間で送受信されたTTCコール数、パケット数およびバイト数です。例16-21では、-sオプションを使用した場合の代表的なトレース・ファイルの統計を示します。

例16-21 trcasst -sの出力

    ************************************************************************* 
    *                               Trace Assistant                         * 
    ************************************************************************* 
---------------------- 
Trace File Statistics: 
---------------------- 
Total number of Sessions: 3 

DATABASE: 
  Operation Count:    0 OPENS,    21 PARSES,    21 EXECUTES,     9 FETCHES 
    Parse Counts: 
       9 PL/SQL,     9 SELECT,      0 INSERT,     0 UPDATE,     0 DELETE, 
       0 LOCK,       3 TRANSACT,    0 DEFINE,     0 SECURE,     0 OTHER 
    Execute counts with SQL data: 
       9 PL/SQL,     0 SELECT,      0 INSERT,     0 UPDATE,     0 DELETE, 
       0 LOCK,       0 TRANSACT,    0 DEFINE,     0 SECURE,     0 OTHER 

  Packet Ratio: 6.142857142857143 packets sent per operation 
  Currently opened Cursors: 0 
  Maximum opened Cursors  : 0 

ORACLE NET SERVICES: 
  Total Calls  :       129 sent,        132 received,          83 oci 
  Total Bytes  :     15796 sent,      13551 received 
    Average Bytes:       122 sent per packet,        102 received per packet 
    Maximum Bytes:      1018 sent,        384 received 

  Grand Total Packets:    129  sent,     132 received 
  
    ************************************************************************* 
    *                    Trace Assistant has completed                      * 
    ************************************************************************* 

16.8 Oracleサポート・サービスへの連絡

一部のメッセージについては、Oracleサポート・サービスに問題を報告することをお薦めします。Oracleサポート・サービスに連絡する場合は、次の情報を用意してください。

  • ハードウェア、オペレーティング・システムおよびOracle Databaseを実行しているオペレーティング・システムのリリース番号。

  • Oracle Databaseの完全なリリース番号(12.2.0.1.0など)。

  • エラーが発生したときに使用していたすべてのOracleプログラムとリリース番号(SQL*Plusリリース12.2.0.1.0など)。

  • 複数のエラー・コードまたはメッセージが検出された場合の表示順の正確なコード番号およびメッセージ・テキスト。

  • 次の規約に従った問題の重大度。

    • 1: プログラムが使用できません。操作に重大な影響を与えます。

    • 2: プログラムが使用できます。操作が大幅に制限されます。

    • 3: 機能が制限されて使用できるプログラム。全体の操作に重大な影響はありません。

    • 4: お客様によって回避された問題。発生しても操作への影響は最小限です。

次の項目も必要です。

  • 連絡者の名前

  • 連絡者の組織の名前

  • 連絡者のOracle Support ID番号

  • 連絡者の電話番号