Oracle のネットワークサービス

 


✅ Oracle のネットワークサービスの仕組み


🔷 Oracle クライアントとネットワーク

  • Oracleデータベースをインストールすると、基本的なクライアント-サーバーネットワーク環境が構成される。

  • クライアントとは、Oracle DB にデータの送受信を行うアプリケーションのこと。

  • クライアントが動作するには、Oracleクライアントソフトウェアがインストールされている必要がある。


🧩 Oracle Netとリスナーの役割

項目内容
Oracle NetクライアントとDBサーバ間の接続を確立・維持し、データをやり取りするソフトウェア層。
サービス名DBを論理的に識別する名称。クライアントはサービス名を指定して接続する。
リスナーOracle DB サーバ上で動作するプロセスで、接続要求を待ち受け、DBと接続させる役割。
リスナー設定ファイルlistener.ora(場所: $ORACLE_HOME/network/admin/

🛠 リスナーの管理

  • lsnrctl start でリスナー起動。

  • 出力から以下が分かる:

    • 使用されている設定ファイル

    • 接続待ち受けポート番号(例:1521)

    • 接続ログの場所


🔄 動的サービス登録(Service Registration)

  • Oracle DBは自動的にリスナーに接続情報を登録する。

  • 登録内容には以下が含まれる:

    • データベースサービス名

    • インスタンス名

    • サービスハンドラ(接続先情報)

  • リスナーがどこにいるかは、LOCAL_LISTENER / REMOTE_LISTENER パラメータで指定されている。

  • これにより、手動で listener.ora に設定を追加しなくても接続可能


🔍 確認コマンド

bash
lsnrctl status # 登録されているサービスやポート番号を確認

🔑 クライアントからの接続方法

方法説明
接続文字列(Connect String)ユーザー名/パスワード@接続記述子(例:hr/hr@//host:port/service_name
Easy Connecthost:port/service_name の形式だけで接続可。簡易接続方法
ローカルネーミング(TNS)クライアント側の tnsnames.ora に接続情報(エイリアス)を設定し、それを使って接続。

📄 tnsnames.ora の例(ローカルネーミング)

ini
PDB1_ALIAS = (
(DESCRIPTION = (
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521)) (
(CONNECT_DATA = (
(SERVICE_NAME = pdb1.mycompany.com) ) )
)
)

これにより、sqlplus hr/hr@PDB1_ALIAS のように短いエイリアスで接続可能

✅ Oracle データベース接続の流れと関連知識


🔷 1. 接続プロセスの全体像

ステップ内容
① ユーザーが接続を開始ユーザーは接続文字列(ユーザー名、パスワード、接続識別子)を送信。
② 接続識別子の解決識別子がホスト・ポート・サービス名に変換され、リスナーに送信。
③ リスナーが受付リスナーが受信し、指定されたサービス名が有効か確認。有効であれば サーバープロセスを生成
④ 接続確立リスナーは初期情報をサーバープロセスに渡して接続を確立。その後はリスナーは介在しない。
⑤ サーバープロセスの動作ユーザーのSQLを実行し、データブロックの読み込みやソート処理を行い、結果を返す。

🔷 2. 接続方式の違い(Dedicated vs Shared)

項目Dedicated ServerShared Server
処理方法各ユーザーごとに専用プロセス作成複数ユーザーが同一プロセスを共有
利点高速・安定(長時間処理に適)メモリ効率が良くスケーラブル
向いている用途DBA操作、大規模クエリ多数ユーザー同時接続
備考デフォルト設定Dispatcher 経由で接続負荷を分散

🔷 3. データベースリンク(DB Link)

  • 用途: 別のデータベースに接続し、データ取得や操作を行うための仮想リンク。

  • 作成方法:

sql
CREATE [PUBLIC] DATABASE LINK link_name
CONNECT TO username IDENTIFIED BY password
USING 'connect_string';
  • 種類:

    • PUBLIC: 全ユーザーが使用可能

    • PRIVATE: 作成者のみ使用可能(デフォルト)

  • 活用例:

sql
SELECT * FROM hr.departments@link_to_pdb1;

🔷 4. DBリンクの管理

操作コマンド
定義済みリンク確認SELECT * FROM ALL_DB_LINKS;
削除DROP DATABASE LINK link_name;

🔧 5. 接続トラブルの調査手順

  1. tnsping ユーティリティで接続可否チェック

    • ホスト名、ポート、プロトコルの疎通確認。

    • ただし、サービス名の存在確認はしない

  2. リスナーログの確認

    • 接続エラーの詳細がログに記録されている。

  3. 実際の接続テスト

    • ユーザー名やパスワードの誤り、ロック状態などを確認。

    • エラーメッセージをしっかり読むことが重要


⚠️ 6. 接続エラーの例

ケース原因対応
誤ったユーザー名/パスワード認証失敗パスワード確認・アカウントアンロック
ローカルユーザー制限PDBでの設定ミスPDBの対象ユーザー確認
リスナー停止接続先プロセスなしlsnrctl start でリスナー起動