✅ 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 に設定を追加しなくても接続可能。
🔍 確認コマンド
🔑 クライアントからの接続方法
| 方法 | 説明 |
|---|---|
| 接続文字列(Connect String) | ユーザー名/パスワード@接続記述子(例:hr/hr@//host:port/service_name) |
| Easy Connect | host:port/service_name の形式だけで接続可。簡易接続方法。 |
| ローカルネーミング(TNS) | クライアント側の tnsnames.ora に接続情報(エイリアス)を設定し、それを使って接続。 |
📄 tnsnames.ora の例(ローカルネーミング)
これにより、sqlplus hr/hr@PDB1_ALIAS のように短いエイリアスで接続可能。
✅ Oracle データベース接続の流れと関連知識
🔷 1. 接続プロセスの全体像
| ステップ | 内容 |
|---|---|
| ① ユーザーが接続を開始 | ユーザーは接続文字列(ユーザー名、パスワード、接続識別子)を送信。 |
| ② 接続識別子の解決 | 識別子がホスト・ポート・サービス名に変換され、リスナーに送信。 |
| ③ リスナーが受付 | リスナーが受信し、指定されたサービス名が有効か確認。有効であれば サーバープロセスを生成。 |
| ④ 接続確立 | リスナーは初期情報をサーバープロセスに渡して接続を確立。その後はリスナーは介在しない。 |
| ⑤ サーバープロセスの動作 | ユーザーのSQLを実行し、データブロックの読み込みやソート処理を行い、結果を返す。 |
🔷 2. 接続方式の違い(Dedicated vs Shared)
| 項目 | Dedicated Server | Shared Server |
|---|---|---|
| 処理方法 | 各ユーザーごとに専用プロセス作成 | 複数ユーザーが同一プロセスを共有 |
| 利点 | 高速・安定(長時間処理に適) | メモリ効率が良くスケーラブル |
| 向いている用途 | DBA操作、大規模クエリ | 多数ユーザー同時接続 |
| 備考 | デフォルト設定 | Dispatcher 経由で接続負荷を分散 |
🔷 3. データベースリンク(DB Link)
-
用途: 別のデータベースに接続し、データ取得や操作を行うための仮想リンク。
-
作成方法:
-
種類:
-
PUBLIC: 全ユーザーが使用可能 -
PRIVATE: 作成者のみ使用可能(デフォルト)
-
-
活用例:
🔷 4. DBリンクの管理
| 操作 | コマンド |
|---|---|
| 定義済みリンク確認 | SELECT * FROM ALL_DB_LINKS; |
| 削除 | DROP DATABASE LINK link_name; |
🔧 5. 接続トラブルの調査手順
-
tnspingユーティリティで接続可否チェック-
ホスト名、ポート、プロトコルの疎通確認。
-
ただし、サービス名の存在確認はしない。
-
-
リスナーログの確認
-
接続エラーの詳細がログに記録されている。
-
-
実際の接続テスト
-
ユーザー名やパスワードの誤り、ロック状態などを確認。
-
エラーメッセージをしっかり読むことが重要。
-
⚠️ 6. 接続エラーの例
| ケース | 原因 | 対応 |
|---|---|---|
| 誤ったユーザー名/パスワード | 認証失敗 | パスワード確認・アカウントアンロック |
| ローカルユーザー制限 | PDBでの設定ミス | PDBの対象ユーザー確認 |
| リスナー停止 | 接続先プロセスなし | lsnrctl start でリスナー起動 |
