Oracle監視の詳細説明

この記事は、「ORACLE データベース技術 実践的詳細解説」および「成功への道: ORACLE 11g スタディ ノート」からの抜粋です。

ネットワーク環境を構成する

この記事では、オペレーティング システム上に構築されている Oracle に関連するネットワークの問題を紹介します。OS ネットワークの構成は、Oracle ネットワークの構成における最初のステップです。Oracle ネットワークを構成する前に、オペレーティング システムのネットワーク構成が正しいことを確認する必要があります。

Oracle データベースでは、ネットワーク環境はインフラストラクチャの構成に属し、ネットワーク環境が確立されていないと、クライアント側のユーザーはデータベース全体を使用できません。

Oracle のネットワークには 2 つの側面があり、1 つは Oracle のデータベース サーバーであり、もう 1 つは Oracle のクライアントです。Oracle ネットワーク構成のロードマップを以下に示します。
ここに画像の説明を挿入
上記の手順に従ってOracleネットワークを構成する必要があります.サーバー(リスナー)が正常に構成された後にのみ,クライアントを構成できます.

Oracle ネットワークをより適切に構成するために、Oracle Corporation は、Oracle ネットワークを構成および診断するための次のツールを提供しています。[

  • Network Configuration Assistant (OracleNet Configuration Assistant) はグラフィカルなネットワーク管理ツールであり、リスナーの構成、ネーミング メソッドの構成、ネットワーク サービスの構成など、Oracle ネットワークの構成を完了するために使用できます。名前。
  • Network Manager (Oracle Net Manager) は、Oracle ネットワークを構成するためのグラフィカルなネットワーク管理ツールでもあります。
  • リスナー制御ユーティリティ (リスナー制御ユーティリティ) は、リスナーの開始と停止、リスナーのステータスの表示など、リスナーの管理に使用されるコマンドライン ツールです。
  • 接続マネージャ コントロール (Oracle Connection Manager Control Utility) は、接続マネージャの管理に使用されます。

1 ユーザーが Oracle データベースサーバーとの接続を確立します

Oracle データベースを使用するユーザーは、最初にデータベースとの接続を確立する必要があります。この目的のために、OracleNet Service の概念を使用して、中間層のクライアントまたはアプリケーション サーバーからデータベース サーバーとの接続を確立し、クライアントとデータベース サーバーの間でデータを転送できるようにします。

クライアント側では、Web サービスはバックグラウンド プロセスとして実行されます。データベース サーバー側では、ネットワーク サービスはリスナーと呼ばれるプロセスを通じて実装されます。また、ネットワーク サービスを構成して、Oracle データベースが異種データベース (IBM の DB2 や Microsoft の SQL Server など) と通信できるようにすることもできます。

Oracle では、最も一般的な接続方法は専用接続方法です。このように、サーバー プロセスとユーザー プロセスは 1 対 1 で対応します。ユーザー プロセスが中断されると、対応するサーバー プロセスも終了します。

まず、リスナーとは何かを見てみましょう

Oracle データベース・サーバーでは、クライアントからの接続要求は「リスナー」と呼ばれるコンポーネントを介して受信されます。これは、クライアントとサーバーの間の中間コンポーネントです。リスナー (LISTENER) は、サーバー側に配置され、独立して実行されるバックグラウンド プロセスです。サーバー側で実行されますが、データベース サーバーとは独立して実行されます。つまり、データベースが起動されていない場合、リスナーは独立して実行することもできます。クライアントからの着信接続要求を監視し、サーバー側の接続負荷を調整します。クライアントがサーバーへの接続を確立しようとすると、リスナーはクライアントのリクエストを受け取り、それをサーバーに渡して処理します. クライアントとサーバーが接続を確立すると、クライアントとサーバーは直接通信する代わりに直接通信します.その後、リスナーが必要になります (つまり、リスナーはアイドル状態になります)。

次の図は、クライアントからデータベース サーバーへの接続を確立するプロセスと、プロセス全体におけるリスナーの役割を示しています。このプロセスでは、最も一般的なローカルの命名方法を使用しました。
ここに画像の説明を挿入
図から、接続を確立するプロセスは、次の 5 つの段階に大別できることがわかります。
1)クライアントが接続を開始します。クライアントで接続ユーザー名、ユーザー パスワード、接続文字列などの情報を提供することにより、リスナーとの接続が確立されます。接続文字列はクライアントのファイルにあり、デフォルトは$ORACLE_HOME/network/admin/tnsnames.oraです。接続文字列には、リスナーが存在するサーバー、使用するプロトコル、リッスンしているポート、要求されたデータベース サービス名などの情報が記録されます。

2)クライアントがリスナーとの接続を確立すると、クライアント上でユーザー プロセスが生成されます同時に、リスナーは、クライアントから要求されたデータベース サービス名が現在リスナーが管理しているサービス名であるかどうかを判断します。クライアントから送信された接続文字列にサービス名が含まれていない場合、リスナーはサービス名がないというエラー メッセージを生成します。要求されたサービス名が現在のリスナーによって管理されていない場合、エラーが報告され、接続が切断されます。要求されたサービス名が現在のリスナーによって管理されている場合、リスナーはサービス名が存在するデータベース サーバー上にサーバー プロセスを作成します

3) リスナーがサーバー プロセスを作成すると、ユーザー プロセスとサーバー プロセスの間の接続が確立されますその後、リスナーはクライアントとの接続を終了します。

4)サーバープロセスは、ユーザープロセスから提供されたユーザー名とパスワードに基づいて、データ辞書に一致するかどうかを判断します

5) ユーザー名とパスワードが一致しない場合はエラーが報告され、一致する場合は PGA が割り当てられ、セッションが生成されます

注: リスナーの機能は、クライアントとサーバー間の接続の確立のみを担当し、クライアントとサーバー間の直接通信は担当しません。

たとえば、クライアントがSQL*Plusを使用してデータベース・サーバーにログインした後、コマンドを発行し、コマンドを(リスナーを介さずに)データベース・サーバーに直接送信します.データベース・サーバーがコマンドの処理を終了すると、直接送信されます.コマンドの実行結果がクライアントに返されます (これもリスナーを介して)。

2 リスナーを構成する

リスナーを構成するには、次の 2 つの方法があります。
1) グラフィカル インターフェイス ツール Net Manager を使用する
2) テキスト エディタを直接使用して、リスナー構成ファイル listener.ora を編集する
実際、Net Manager は最終的にリスナー構成ファイル listener の内容を変更します。または。上記の 2 つの方法には類似点があります。

リスナーが起動したら、リスナー構成ファイル$ORACLE_HOME/network/admin/listener.oraを参照する必要があります。このファイルは「リスナー構成ファイル」です。このファイルはテキスト ファイルで、グラフィカル インターフェイスを使用して手動で編集または構成できます。
Network Configuration Assistant と呼ばれる GUI ツールは、次のコマンドで開始できます。

 $ netca

一般的な listener.ora ファイルの内容を次の図に示します。この図には、各フィールドの説明が含まれています。
ここに画像の説明を挿入

  • LISTENER: リスナーの名前。他の名前も使用できます。
  • ORACLE_HOME: Oracle のホーム ディレクトリ。
  • SID_NAME: リスナーがリッスンするデータベースのインスタンス名。この例のインスタンスは extproc です。
  • PROTOCOL: リスナーがリッスンするプロトコル。この例では、TCP/IP が使用されます。
  • HOST は、データベース サーバーのホスト名または IP アドレスを指定します。この例のデータベース サーバーのホスト名は book.us.oracle.com です。
  • PORT は、リスナーが使用するポート番号を指定します。デフォルトのポート番号は 1521 です。

リスナーを理解した後。ora ファイルに新しいリスナーを手動で追加できます。つまり、複数のリスナーが同じサーバー上に存在できます各リスナーは異なるポートでリッスンする必要があることに注意してくださいこれらのリスナーは、同じ listener.ora ファイルを介して構成されます

次に、my_listener というリスナーを追加します。

    my_listener =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = book.us.Oracle.com)(PORT = 1525))
        )
      )

このコンテンツをリスナーに追加する限り。ora ファイルを使用して、my_listener という名前の新しいリスナーを作成します。

前面我们讲到过,监听器在接收到客户端发来的连接请求时,会判断客户端所请求的服务名是否为该监听器所管理的服务名。那么在listener.ora文件里,我们并没有看到有关服务名的任何配置,这又是为什么呢?

ここで、まずサービス名とは何かを理解しましょう。サービスは、類似したタスクを論理的にグループ化したものと考えることができます。例えば、一般的な販売会社の業務システムは、大きく分けて、営業、調達、財務、人事の4つの業務部門に分けられます。データベースの観点から、対応するサービス名として、sales (販売)、pur (購入)、fin (財務)、および hr (人事) の 4 つに分けることができます。販売関連のビジネスを担当する人はすべて運用用の販売サービスに接続され、購入を担当する人はすべて運用用の pur サービスに接続されます。このようにして、データベース アクティビティをグループ化し、追跡とチューニングを改善しました。

では、サービスはリスナーにどのように反映されるのでしょうか? Oracle はリスナーにサービスを登録することでこれを実現します。サービスを登録するには 2 つの方法があります。

2.1 動的登録

いわゆる動的登録とは、現在のインスタンスのサービス名を同じサーバーのデフォルト リスナーに登録し、内部のデータベース インスタンス (つまり、 LISTENER という名前のリスナー) の PMON プロセスを介してポート 1521 でリッスンすることです

現在のインスタンスのサービス名は、初期化パラメータ service_names によって決定されます。このパラメーターのデフォルトはデータベース名です。

    SQL> show parameter service_names
    NAME                       TYPE           VALUE
    ---------------------  -----------    ---------------
    service_names              string         ora10g

このパラメーターは動的に変更でき、複数の値を指定できます。つまり、複数のサービス名を指定できます。各サービス名は、以下に示すようにコンマで区切ります。

    SQL> alter system set service_names='ora10g,sales,pur,fin,hr';

このようにして、しばらく待つだけで、PMON プロセスがこれらのサービス名をデフォルトのリスナーに登録します。

PMON プロセスがサービス名を自動的に登録するのを待つ代わりに、次のコマンドを実行してこれらのサービス名をすぐに登録できます。

    SQL> alter system register;

たとえば、my_listener という名前の新しく作成されたリスナーに登録する場合など、サービス名をデフォルト以外のリスナーに動的に登録する必要がある場合、実行可能ですか?

答えはイエスですが、構成はもう少し複雑です。また、データベース インスタンスの別の初期化パラメータである local_listener も設定する必要があります。このパラメーターは、動的に登録されるリスナーの情報を次のように記述します。

    SQL> alter system set local_listener='(ADDRESS_LIST =(ADDRESS = (PROTOCOL=TCP)(HOST=book.us.Oracle.com)(PORT=1525)))';

なお、ここでの local_listener パラメータ値の書き込み方法は、実際には my_listener 設定情報の記述部分をそのままコピーするものです。

2.2 静的登録

静的登録は、動的登録に関連しています。つまり、データベース サービス名に関する情報は、リスナーに手動で書き込まれます。ora ファイル。静的に登録されるサービス名は、SID_LIST_<リスナー名> の部分で指定されます. たとえば、次の図 1 に示すように、既定のリスナーのサービス名を静的に登録します.
ここに画像の説明を挿入
sid_list_listener 部分に sid_desc 部分 (上図の網掛け部分) を追加して、デフォルトのリスナーに新しいサービス名を静的に登録します。このうちglobal_dbnameは公開されているサービス名、つまりユーザーがデータベースに接続する際に使用する名前を表しています。サービス名は任意の名前にすることができます。ORACLE_HOMEOracle ソフトウェアのホーム ディレクトリを示し、SID_NAME はサービス名に対応するデータベースのインスタンス名を示します。つまり、ユーザーが static_srv という名前のサービスに接続すると、実際には ora10g という名前のデータベース インスタンスに接続されます。複数の sid_desc セクションを追加して、データベースの複数のサービス名を定義できます。

3 リスナーの管理

作成および構成されたリスナー。ora ファイルの後、リスナーを管理できます。Oracle では、リスナーを管理するためのコマンド ライン ツール lsnrctl を提供しています。

3.1 リスナーの開始

リスナーを開始するには、2 つの方法があります。

1) コマンドラインでリスナーを直接起動する

オペレーティング システム (OS) へのログイン

# su – oracle

リスナーを開始する

$ lsnrctl start

lsnrctl start コマンドを (リスナーの名前を指定せずに) 実行すると、コマンドはデフォルトのリスナーを開始します。デフォルトのリスナー名は LISTENER です。

起動プロセスから、リスナーが配置されているホスト (HOST)、リスナーが監視するポート (Port)、およびサポートされているプロトコルを含む、リスナーに関する構成情報も確認できます。

2) リスナー管理コントロールを開き、リスナーを開始します。

オペレーティング システム (OS) へのログイン

# su – oracle

ログイン リスナー コントロール

    [oracle@book ~]$ lsnrctl
    LSNRCTL>

lsnrctl インタラクティブ インターフェイスに入った後、help コマンドを入力して、lsnrctl ツールでサポートされているすべてのコマンドを表示できます。

    LSNRCTL> help
    The following operations are available
    An asterisk () denotes a modifier or extended command:
    start             stop              status
    services          version           reload
    save_config       trace             spawn
    change_password   quit              exit
    set*               show*

リスナー コントロールを開始する

    LSNRCTL> start

このコマンドは、LISTENER という名前のリスナーを開始する、デフォルトのリスナーを開始することを意味します。特定のリスナーの名前に従って、デフォルト以外のリスナーを開始することもできます。次のように:

    LSNRCTL> start my_listener

3.2 リスナーを閉じる

リスナーを閉じる方法も 2 つあります。

1)コマンドラインで直接リスナーを閉じます

オペレーティング システム (OS) へのログイン

# su – oracle

リスナーを閉じる

$ lsnrctl stop

lsnrctl stop コマンドを (リスナーの名前を指定せずに) 実行すると、コマンドはデフォルトのリスナーを開始します。デフォルトのリスナー名は LISTENER です。

2) リスナー管理コントロールにログインし、リスナーを閉じます

オペレーティング システム (OS) へのログイン

# su – oracle

ログイン リスナー コントロール

    [oracle@book ~]$ lsnrctl
    LSNRCTL>

リスナーを閉じる

    LSNRCTL> stop

このコマンドは、デフォルトのリスナーを停止することを意味します。つまり、LISTENER という名前のリスナーを停止します。特定のリスナーの名前に従って、デフォルト以外のリスナーを停止することもできます。次のように:

    LSNRCTL> stop my_listener

3.3 リスナーのステータスを表示する

リスナーのステータスを表示する方法も 2 つあります。

1) コマンド ラインでリスナーのステータスを直接表示する

オペレーティング システム (OS) へのログイン

# su – oracle

リスナーのステータスを表示する

$ lsnrctl status

lsnrctl status コマンドを (リスナーの名前を指定せずに) 実行すると、コマンドはデフォルトのリスナーを開始します。デフォルトのリスナー名は LISTENER です。

2) リスナー管理画面にログイン後、リスナーの状態を確認する

オペレーティング システム (OS) へのログイン

# su – oracle

ログイン リスナー コントロール

    [oracle@book ~]$ lsnrctl
    LSNRCTL>

デフォルト リスナーの現在の起動ステータスを表示します。

    LSNRCTL> status
    ……
    Service "fin" has 1 instance(s).
      Instance "ora10g", status READY, has 1 handler(s) for this service...
    Service "hr" has 1 instance(s).
    Instance "ora10g", status READY, has 1 handler(s) for this service...
    ……
    Service "static_srv" has 1 instance(s).
      Instance "ora10g", status UNKNOWN, has 1 handler(s) for this service...

コマンド Status は、リスナーに関する次の情報を一覧表示します。

  • リスナーの名前、リスナーのバージョン番号、リスナーの開始時間、実行時間、トレース・レベル、リスナー構成ファイルlistener.oraの場所など。
  • ホスト名、ポート番号などを含む、リスナーのアドレス情報。
  • リスナーのインスタンスのステータス情報。インスタンスには次の状態があります:
    1) READY は、インスタンスが接続を受け入れることができることを意味します
    2) BLOCKED は、インスタンスが接続を受け入れることができないことを意味します
    3) READY/SECONDARY は、これがクラスターの 2 番目のインスタンスであることを意味します ( Real Application Cluster) で、接続を受け入れる準備ができています。
    4) UNKNOWN は、リスナーが静的に登録されていることを示します (Registered Statically)

上記の例では、サービス パーツが表示されています。fin、hr などは、データベース インスタンスの service_names パラメータで指定されたサービス名です。同時に、fin や hr などのサービス名で指定される Instance 部分の status フィールドは READY であるのに対し、static_srv の status フィールドは UNKNOWN であることに注意してください。これは、fin、hr などは PMON プロセスによって動的にリスナーに登録されるため、PMON プロセスが配置されているデータベースはオープン状態である必要があり、これらのサービス名に対応するインスタンスが準備完了 (READY) になっているためです。ユーザー接続要求を受け入れます。そして static_srv はリスナーの編集によるものです。ora ファイルと静的に登録されたサービス名の場合、リスナーはサービス名に対応するインスタンスが開かれているかどうかわからないため、そのステータスは不明 (UNKNOWN) です。

my_listener のステータスをチェックするなど、status コマンドの後にデフォルト以外のリスナー名を書き込むことができます。

    LSNRCTL> status my_listener

lsnrctl の対話型インターフェイスに入る代わりに、オペレーティング システム プロンプトで lsnrctl コマンドを実行できます。

    [Oracle@book ~]$ lsnrctl start my_listener   --启动监听器my_listener
    [Oracle@book ~]$ lsnrctl stop my_listener    --关闭监听器my_listener
    [Oracle@book ~]$ lsnrctl status my_listener  --查看监听器my_listener的状态

4 クライアントを構成する

クライアント ネットワークを構成するときは、クライアントの構成情報 (IP アドレスまたはホスト名、インスタンス名、プロトコル、ポート番号など) がサーバーの構成情報と同じであることを確認する必要があります。

クライアント側では、Oracle のネットワーク サービスを使用してリスナーに接続する場合、通常、単純な接続ローカル ネーミングの 2 つの方法を使用します。

4.1 単純な接続 (「接続文字列」を使用してリモート データベースにログインする)

単純な接続の場合、クライアント側での構成は必要ありません。接続方法は次のとおりです。

    SQL> connect hr/[email protected]:1521/ora10g

このうち、hr/hr は接続するユーザー名とパスワード、book.us.oracle.com はデータベース インスタンスがあるホスト名、1521 はポート番号、ora10g は接続するデータベース インスタンスの名前を表します。接続されています。

単純な接続が失敗した場合は、$ORACLE_HOME/network/admin/sqlnet.ora ファイルを確認する必要があります。ファイルには次の内容が含まれている必要があります。

    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

つまり、sqlnet. ora ファイル内の名前。directory_path 部分に ezconnect が書かれていない場合、簡易接続は利用できません。

: ezconnect は簡単接続を意味し、簡単な接続を意味します。

単純結合は単純ですが、結合の高度な機能をサポートしていません。たとえば、接続時の負荷分散や接続時のフェイルオーバーなどです。

4.2 ローカル ネーミング (「ネットワーク サービス名」を使用してリモート データベースにログイン)

より一般的に使用されるもう 1 つの接続方法は、ローカル命名方法です。

このモードでは、ローカルの名前解決ファイルを構成する必要があります。このファイルのデフォルトは$ORACLE_HOME/network/admin/tnsnames.oraです。このファイルはクライアント側に存在し、netca のグラフィカル インターフェイスを使用して構成できます。

ファイルの内容と各フィールドの説明を次の図に示します。
ここに画像の説明を挿入

Oracle のネットワークは、オペレーティング システムのネットワーク構成に基づいているため、Oracle ネットワークを構成する前に、オペレーティング システム (OS) のネットワークをインストールして構成する必要があります。TCP/IP は最も広く使用されている通信プロトコルであり、通常は TCP/IP を選択します。

Oracle でサポートされているプロトコルは次のとおりです。

  • TCP/IP
  • TCP/IP with SSL(TCPS)
  • 名前付きパイプ(NMP)
  • SDP
  • IPC

構成された tnsnames。ora ファイルでは、次のようにローカル接続を使用できます。

    SQL> connect hr/hr@sales

ご覧のとおり、tnsnames を理解した後。ora ファイルの内容の後に、新しい接続文字列を手動で追加できます。

たとえば、接続文字列を追加して、既定のリスナーに静的に登録されたサービス名に接続します。次のように:

    newname =
      (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = book.us.Oracle.com)(PORT = 1521))
        )
        (CONNECT_DATA =
            (SERVICE_NAME = static_srv)
        )
      )

service_name フィールドを変更して静的に登録されたサービス名にし、sales を別の文字列 (ここでは newname) に変更するだけです。

次に、newname を使用して接続します。

    SQL> connect hr/hr@newname

上文我们提到了网络服务名,那么网络服务名是什么呢?
リモート データにアクセスするときは、次のような接続記述子を入力する必要があります。接続記述子には、接続先のデータベースが記述されています。

    (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = zdb)
        )
      )

情報は非常に長く、ユーザーがリモート データベースにアクセスするたびにそのような長い情報を入力しなければならないのは、非常に無駄なことです。このために、DBA はこれらの長い文字列 (接続記述子) に「別名」を与えることができます。Oracleでは、このような別名を「Net Service Name(ネットサービス名)」と呼んでいます。

ネットワーク サービス名が設定されている場合、毎回リモート データベースに接続するときに、このような長い情報を入力する必要はなく、ネットワーク サービス名を入力するだけで、リモート データベース サーバーに簡単にログインできます。

ネット サービス名は tnsnames.ora というファイルに保存され、ネットワーク上のすべてのクライアントとサーバーにコピーできます。

5 クライアントからサーバーへの接続をテストする

通常、tnsnames を構成します。ora ファイルの作成後、tnsping ツールを使用して、クライアントからリスナーへのネットワーク接続が正常かどうかを判断します。tnsping は、次のようにオペレーティング システムのコマンド ラインで実行されるコマンドです。

    [oracle@book admin]$ tnsping newname
    ……
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =
    book.us.Oracle.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = static_srv)))
    OK (10 msec)

上記のように、クライアントがサーバーに正常に接続できる場合、tnsping コマンドの実行結果は「OK」と表示され、プロセスにかかった時間 (この例では 10 ミリ秒) が報告され、接続文字列が渡されたことを示します。指定されたリスナーに接続できますが、リモート サーバーに正常に接続できない場合、tnsping コマンドは詳細なエラー情報を返します。

tnsping は、接続文字列に含まれるサービス名がリスナーが管理するサービス名であるかどうかを検証せず、ネットワーク接続が正常であるかどうかのみを検証します。

tnsping を使用して単純な接続を確認することもできます。

    [oracle@book admin]$ tnsping book.us.oracle.com:1521/ora10g
    ……
    Used EZCONNECT adapter to resolve the alias
    Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=ora10g))(ADDRESS=(
    PROTOCOL=TCP)(HOST=152.68.32.60)(PORT=1521)))
    OK (0 msec)

6 Oracleネットワークを簡単に処理する—Oracleネットワーク障害戦略

クライアントがデータベースにアクセスできない理由は多数あります.ソフトウェアの問題とハードウェアの問題があります.オペレーティング システム自体の問題、アプリケーション プログラムの問題、およびファイアウォールの問題である可能性があります. ただし、ほとんどの場合、不適切なユーザー構成が原因です。どのようなネットワーク エラーであっても、次の順序と原則に従ってネットワークの問題を検出できます。

6.1 ping 対象ホスト

オペレーティング システム コマンドを使用してターゲット ホストに ping を実行し、ターゲット ホストが存在するかどうかを確認します。

    C:\Documents and Settings\Administrator>ping 192.168.200.38
    Pinging 192.168.200.38 with 32 bytes of data:
    Request timed out.
    Ping statistics for 192.168.200.38:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

一般に、問題がオペレーティング システムに関連しているかどうかは、ここから基本的に結論付けることができます。

ping の結果が「Request timed out」の場合は、クライアントからターゲット ホスト (192.168.200.38) へのネットワークが切断されていることを意味します。このとき、オペレーティングシステム層のネットワーク接続の問題を解決する必要があります。オペレーティング システムのネットワークの問題でない場合は、次に tnsping コマンドを実行して、問題が Oracle 構成レイヤーにあるかどうかを確認します。

ping の失敗には、次の理由が考えられます。

  • クライアントのネットワーク カードが物理的に故障しています
  • クライアントのネットワーク カードが正しく設定されていません
  • クライアント ファイアウォールの制限
  • ネットワーク ケーブル ブレーク
  • サーバー側のNIC物理障害
  • サーバー側の不適切なネットワーク カード設定
  • サーバー側のファイアウォールの制限
  • 。。。。。

6.2 tnsping コマンドの実行

  tnsping 网络服务名

tnsping コマンドは、主にクライアントがリスナーに接続できるかどうかをテストするために使用されます。

tnsping コマンドでエラーが報告された場合は、3) を実行する必要があります。

6.3 リスナーのステータスを表示する

$ lsnrctl status

ここから、リスナーの実行状況を知ることができます。リスナーが正しく機能していない場合、またはクライアントによって設定されたパラメーターがリスナーのパラメーターと一致しない場合、ネットワーク障害が発生します。

6.4 リスナー構成ファイル (listener.ora) の表示

リスナーが起動すると、listener.oraという名前のファイルが読み取られます。このファイルは「リスナー構成ファイル」です。契約およびその他の情報。このファイルの内容は次のようになります。

    SID_LIST_LISTENER =
        (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = zdb)
          (ORACLE_HOME = C:\app\Administrator\product\11.1.0\db_3)
          (SID_NAME = zdb)
        )
        )
    LISTENER =
        (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
        )
  • LISTENER はリスナーの名前です。他の名前を使用することもできます
  • ORACLE_HOME は、Oracle のホーム ディレクトリです。
  • SID_NAME は、リスナーがリッスンするデータベースのインスタンス名です。
  • PROTOCOL は、リスナーがリッスンするプロトコルです。
  • HOST は、データベース サーバーのホスト名または IP アドレスを指定します。
  • PORT は、リスナーが使用するポート番号を指定します。デフォルトのポート番号は 1521 です。

クライアントのパラメータがこれらのパラメータと一致するかどうかを慎重に比較する必要があります。サーバー側の構成が正しいことを確認したら、クライアント側の構成を確認する必要があります。

6.5 クライアント ネットワーク構成ファイル tnsnames.ora の表示

クライアント ネットワーク構成ファイル tnsnames.ora のサンプルを以下に示します (このファイルは、ネットワーク サービス名 MYZDB を定義します)。

    MYZDB =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = zdb)
        )
      )
  • PROTOCOL は、使用するプロトコルを指定するために使用されます。
  • HOST は、データベース サーバーのホスト名または IP アドレスを指定します。
  • PORT は、リスナーが使用するポート番号を指定します。デフォルトのポート番号は 1521 です。
  • SERVICE_NAME は、要求されたデータベースのインスタンス名を指定します。

これらのパラメータがリスナーのパラメータと一致するかどうかを慎重に比較する必要があります。

6.6 Oracle ネットワークのログ ファイルの表示

上記の手順を完了してもネットワーク障害を診断できない場合は、Oracle ネットワークのログ ファイルを表示できます。これらのファイルから、詳細情報を取得できます。これらのファイルは次のとおりです。

  • listener.log リスナー (リスナー ログ ファイル)
  • sqlnet.log クライアントまたはデータベース サーバー (クライアント側とサーバー側に存在)
  • instance-name_pid.log Oracle Connection Manager Listener (接続マネージャに関するログファイル)
  • 。。。。。

おすすめ

転載: blog.csdn.net/Ruishine/article/details/129147814