Oracle Databaseのローカル接続とリモート接続の違いと設定方法

Oracle Databaseのローカル接続とリモート接続の違いと設定方法

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3,646

Oracle Databaseにおけるローカル接続とリモート接続の違い、それぞれの接続手順や設定方法(Easy Connect、tnsnames.ora)、よくあるエラー(ORA-12541等)の対処法を初心者向けに分かりやすく解説します。

Oracleユーザにお勧めの本 ↗

おすすめ

図解入門よくわかる 最新Oracleデータベースの基本と仕組み[第6版]

難易度
実用性
読みやすさ

図解が豊富で、概念的な理解に最適。実務に入る前の「全体像把握」に最適な一冊です。

絵で見てわかるOracleの仕組み 新装版

難易度
実用性
読みやすさ

プロとしてのOracle PL/SQL入門 【第3版】(Oracle 12c、11g、10g対応)

難易度
実用性
読みやすさ

PL/SQLの構文から実践的なテクニックまで網羅。現場でコードを書くなら手元に置きたい一冊です。

Oracle Databaseの運用や開発を行っていると、「ローカルでは接続できるのに、リモートからだと繋がらない…」といった壁にぶつかることがよくあります。

本記事では、Oracle Databaseにおける「ローカル接続」と「リモート接続」の違いをはじめ、それぞれの具体的な接続方法や必須となる設定(tnsnames.oraなど)、そしてよくあるエラーの対処法までを分かりやすく解説します。

1. ローカル接続とリモート接続の根本的な違い

Oracle Databaseへの接続方法は、接続元(クライアント)と接続先(データベース・サーバー)が同じマシンにあるか、別のマシンにあるかによって大きく2つに分けられます。

  • ローカル接続(Local Connection) データベースがインストールされている「自分自身のパソコン(またはサーバー)」から、直接そのデータベースに接続することです。
  • リモート接続(Remote Connection) 自分のパソコン(クライアント)から、ネットワーク越しに別の場所にあるデータベース・サーバーへ接続することです。

ネットワーク接続(リスナー)の必要性

ローカル接続の場合、ネットワークを経由せずに直接データベースに接続できる方法(OSOS [オーエス]Operating System。基本ソフトウェア認証など)が存在します。 ※日本語記事では便宜的に「IPC接続」とまとめられることもありますが、sqlplus / as sysdba などは厳密にはBequeath(ベクウェス)プロトコルを使用しています。

一方、リモート接続の場合はネットワークを経由するため、通常のTCPTCP [ティーシーピー]Transmission Control Protocol。信頼性の高い通信プロトコル/IPIP [アイピー]Internet Protocol。インターネット通信の基本プロトコル接続であればサーバー側の「リスナー(Oracle Net Listener)」と呼ばれる受信窓口が起動している必要があります。

2. ローカル接続の手順

ローカル接続は、主にデータベースのインストール直後や、サーバー内で直接メンテナンス作業を行う際によく利用されます。

OS認証(Bequeath接続)を利用した接続(SQL*Plus)

データベースをインストールしたサーバーのOSユーザー(Oracle管理者ユーザー)としてログインしている場合、パスワードなしで特権管理者(SYSDBA)として接続できるのが「OS認証(Bequeath接続)」です。

Terminal window
# コマンドプロンプトやターミナルを開き、以下のコマンドを実行
sqlplus / as sysdba

この方法は、リスナーが起動していなくても接続できるため、データベースの起動や停止、リスナーの設定変更などを行う際の第一歩となります。

TCP/IPを利用したローカル接続

自端末にインストールされたOracleに対して、TCP/IP通信(ネットワーク経由)で接続する場合は、ホスト名に localhost127.0.0.1 を指定します。この場合、ローカルであってもリスナーが起動している必要があります。

Terminal window
# Easy Connect(簡易接続)ネーミング・メソッドを利用した例
sqlplus username/password@localhost:1521/orcl

orcl の部分は、環境に合わせたサービス名に置き換えてください。なお、接続記述子に SID= を指定する方法もありますが、一般的なEasy Connect構文(/service_name)とは区別されます。

3. リモート接続の手順と2つの主要な設定方法

別のパソコンからサーバー上のOracleに接続するためには、以下の前提条件を満たしている必要があります。

  1. サーバー側で接続対象のデータベース・インスタンスおよびサービスが利用可能であること
  2. サーバー側でリスナー(Listener)が起動していること
  3. クライアントからリスナーの待受ポートへネットワーク的に到達できること(デフォルトは1521) (OSやクラウド側のファイアウォール、セキュリティグループなどで通信が遮断されていないことを確認します)

リモート接続を行うための設定方法には、主に「Easy Connect(簡易接続)」と「ローカル・ネーミング(tnsnames.ora)」の2種類があります。

方法1:Easy Connect(簡易接続)を利用する

設定ファイル(tnsnames.ora)の作成が不要で、接続文字列に直接サーバーのIPアドレスやポート番号を指定する手軽な方法です。

接続文字列の書式: [ユーザー名]/[パスワード]@[ホスト名またはIPアドレス]:[ポート番号]/[サービス名]

SQLSQL [エスキューエル / シークエル]Structured Query Language。関係データベース(RDB)の管理や操作を行うデータベース言語*Plusでの実行例:

Terminal window
sqlplus scott/tiger@192.168.1.100:1521/orclpdb1

SQL Developer等のGUIGUI [ジーユーアイ / グーイ]Graphical User Interface。グラフィカルな操作画面ツールでの設定:

  • 接続タイプ:基本(Basic)
  • ホスト名:192.168.1.100
  • ポート:1521
  • サービス名:orclpdb1

方法2:tnsnames.ora(ローカル・ネーミング)を利用する

クライアント側に tnsnames.ora という設定ファイルを配置し、接続先情報に「エイリアス(別名)」をつけて管理する方法です。複数のデータベースを管理したり、接続情報が頻繁に変わる環境で便利です。

1. tnsnames.ora の記述例 通常、クライアント側のOracle Homeにある network/admin/ ディレクトリなどに配置します(環境変数 TNS_ADMIN で場所を指定することも可能です)。

tnsnames.ora
PROD_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb1)
)
)

2. 接続時の指定 ファイルに定義したエイリアス名(上記の場合は PROD_DB)を使って接続します。

Terminal window
sqlplus scott/tiger@PROD_DB

4. 接続できない場合のよくあるエラーと対処法

リモート接続を試みた際に発生しやすい代表的なエラーと、そのチェックポイントを紹介します。

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

サーバー側でリスナーが起動していない、あるいは指定したポート番号が間違っている場合に発生します。 ※新しいOracle Databaseのバージョン(23ai、26ai等)では、エラーメッセージが「ORA-12541: Cannot connect. No listener at host_port.」のような形式に変更されています。

  • 対処法: サーバー側で lsnrctl status を実行し、リスナーが起動しているか確認します。停止している場合は lsnrctl start で起動してください。名前付きリスナーを使用している場合は lsnrctl status <リスナー名>lsnrctl start <リスナー名> のように指定します。

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

tnsnames.ora を使用して接続しようとした際、指定したエイリアス名がファイル内に見つからない、あるいはファイルの構文エラーがある場合に発生します。

  • 対処法: 接続文字列のエイリアス名にスペルミスがないか、また tnsnames.ora の配置場所や記述(カッコの対応など)が正しいかを確認します。

ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません

リスナーは起動して応答しているものの、指定された「サービス名(SERVICE_NAME)」が見つからないエラーです。 ※新しいOracle Databaseのバージョン(23ai、26ai等)では、エラーメッセージが「ORA-12514: Cannot connect to database. Service <サービス名> is not registered with the listener at host <host> port <port>.」といった形式に変更されています。

  • 対処法: 接続先のサービス名が間違っていないか確認します。サーバー側で lsnrctl status を実行し、リスナーが認識しているサービス一覧と照らし合わせてください。

応答がない・タイムアウトする

エラーメッセージがすぐに返ってこず、長時間待たされた後に失敗する場合は、ネットワーク経路上でTCP接続が遮断されている可能性があります。

  • 対処法: OSやクラウド側のファイアウォール(Windows Defender、firewalld、セキュリティグループなど)で、ポート(1521)がブロックされていないか確認します。まずはクライアントから ping [サーバーのIP] で基本的なネットワーク疎通を確認します(※ICMPICMP [アイシーエムピー]Internet Control Message Protocol。IP通信のエラー報告や制御メッセージを転送するプロトコルが遮断されている環境もあるため、pingが通らない場合でもそれだけでOracleへのTCP接続が不可とは判断しません)。より確実な方法として、telnet [サーバーのIP] 1521nc -zv [サーバーのIP] 1521 などを実行して、ポートレベルでの疎通を確認すると実践的です。

5. まとめ

  • ローカル接続: データベースと同じ端末から接続する。ネットワーク経由のほか、OS認証を利用した直接接続が可能。
  • リモート接続: 別の端末からネットワーク経由で接続する。通常のTCP/IP接続では、サーバー側の「リスナー」起動と、待受ポートへのネットワーク到達性が必須。
  • 接続方法: 手軽な「Easy Connect」と、エイリアスで一元管理できる「tnsnames.ora」を用途に合わせて使い分けるのがおすすめ。

「ローカルでは繋がるのにリモートで繋がらない」場合は、まずリスナーの状態ファイアウォールの設定を疑ってみてください。ネットワーク接続の基本を押さえることで、Oracle Databaseの運用がよりスムーズになります。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Oracleユーザにお勧めの本 ↗

おすすめ

図解入門よくわかる 最新Oracleデータベースの基本と仕組み[第6版]

難易度
実用性
読みやすさ

図解が豊富で、概念的な理解に最適。実務に入る前の「全体像把握」に最適な一冊です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top