はじめに
Oracleは、企業でのデータベースシステムに広く使用されています。Oracleに接続するには、正しい設定が必要です。本記事では、初心者が特にハマりやすい、Oracleの接続設定に関する手順を詳しく説明します。
まずは、作業の全体像俯瞰してもらえると、エラーが発生した場合に、原因究明が楽になるでしょう。
※本記事は、Oracleサーバーは構築済みである前提です。
Oracleサーバーとクライアントを接続する前に必要な情報
Oracleサーバーとクライアントを接続する前には、以下の情報を収集する必要があります。
作業手順
- Oracleサーバーとクライアントのバージョンの確認
- OracleサーバーとクライアントのOSの確認
- 接続に必要な情報の収集
- サーバー名またはIPアドレス
- ポート番号
- サービス名
- ユーザー名とパスワード
バージョンの確認
Oracleサーバーのバージョンを確認する方法は、以下のコマンドを使います。(Windows, Linux共通)
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> SELECT * FROM v$version;
Oracleクライアントのバージョンを確認する方法は、以下のコマンドを使います。(Windows, Linux共通)
$ sqlplus /nolog
SQL> connect username/password@tns_alias
SQL> SELECT * FROM v$version;
OSの確認
これは、分かりますよね?
サーバー名またはIPアドレス
Linuxのサーバー名またはIPアドレスの確認する方法は、以下のコマンドを使います。
$ ifconfig -a
上記のコマンドを実行すると、現在のネットワーク環境で使用可能なIPアドレスが表示されます。また、以下のコマンドを実行すると、サーバー名が表示されます。
$ hostname
Windows の場合は、以下のコマンドを使いましょう。
> ipconfig
ポート番号
Oracleサーバーのポート番号は、デフォルトでは1521番ポートを使用します。また、サービス名は、tnsnames.oraファイルに記述されています。以下のコマンドを実行することで、tnsnames.oraファイルの場所を確認できます。
Linux
$ echo $TNS_ADMIN
Windows
> echo %ORACLE_HOME%
ユーザー名とパスワードの確認
Oracleサーバーに接続するためのユーザー名とパスワードは、Oracleサーバー上に設定されています。以下のコマンドを実行することで、Oracleサーバーに設定されているユーザー名を確認できます。
Linux
$ cat $ORACLE_HOME/install/orabasetab
上記のコマンドを実行すると、Oracleサーバーにインストールされているバージョンの情報が表示されます。その中から、DBAグループのグループ名を確認し、以下のコマンドを実行することで、DBAグループのユーザー名を確認できます。
$ grep dba /etc/group
Windows
Oracleサーバーのホームディレクトリを確認します。
> echo %ORACLE_HOME%
ユーザー名とパスワードは、Oracleサーバーに設定された管理者ユーザーにログインして確認することができます。
Oracleクライアントのインストール手順
Oracleサーバーとクライアントを接続するためには、クライアントPCにOracleクライアントをインストールする必要があります。
作業手順
- Oracleクライアントのダウンロード
- インストールの開始
- インストールタイプの選択
- インストール先の指定
- ネットワーク接続の構成
- クライアントの構成
- インストールの開始
Oracleクライアントのダウンロード
Oracleクライアントをダウンロードするには、Oracleの公式サイトにアクセスする必要があります。以下のURLから、Oracleの公式サイトにアクセスしてください。
https://www.oracle.com/
サイト内から、「Instant Client」などのキーワードで検索します。
ダウンロードページに移動したら、Oracleクライアントのダウンロードするバージョンを選択してください。Oracleクライアントには、32bit版と64bit版がありますので、使用しているPCのOSに応じたバージョンを選択してください。
バージョンを選択したら、ダウンロードを開始するための情報を入力する必要があります。入力後、「ダウンロード」ボタンをクリックし、ダウンロードを開始してください。
インストールタイプの選択
Oracleクライアントをインストールする際には、インストールタイプを選択する必要があります。以下に、インストールタイプの選択肢とそれぞれの違いです。また、ダウンロードする時点でそれぞれ個別にダウンロードできる場合もありますので、ご注意ください。
Typical
Typicalは、標準的なOracleクライアントをインストールする方法です。Typicalを選択すると、Oracle Net ServicesとOracle Provider for OLE DBがインストールされます。また、Oracleデータベースに接続するために必要なSQL*PlusやOracleオブジェクトツールもインストールされます。通常はこのタイプでインストールすることが多いです。
Custom
Customは、ユーザーが必要なOracleクライアントコンポーネントのみを選択してインストールする方法です。Customを選択すると、Oracle Net ServicesやSQL*PlusなどのOracleツール以外にも、Oracle Data Provider for .NETやODBCドライバー、JDBCドライバーなど、ユーザーが必要とするコンポーネントを選択してインストールすることができます。
Runtime
Runtimeは、Oracleクライアントのランタイムコンポーネントだけをインストールする方法です。ランタイムコンポーネントとは、Oracleネットワーク用の構成ファイルやDLLファイルなどの最小限のコンポーネントのことです。通常、Oracleクライアントを開発者ではなく、エンドユーザーが使用する場合に使用されます。
インストール先の指定
Oracleクライアントをインストールする際には、インストール先の指定が必要です。以下の様な方法があります。
デフォルトのインストール先
Oracleクライアントをインストールする際に、インストーラがデフォルトのインストール先を提示します。この場合、ユーザーが特に指定しない場合は、デフォルトのインストール先にOracleクライアントがインストールされます。
カスタムのインストール先
カスタムのインストール先を指定する場合は、インストールの途中で、インストーラがインストール先を設定するように求めます。この場合、ユーザーがインストール先を指定することができます。インストール先は、フォルダ名を指定することで設定できます。
サイレントインストール
サイレントインストールを使用する場合は、コマンドラインを使用して、インストール先を指定することができます。サイレントインストールでは、インストール先を指定するためのパラメータを追加することで、インストール先を指定することができます。
注意点
インストール先を指定する場合には、注意点があります。特に、Windows環境でOracleクライアントをインストールする場合には、パス名の長さに注意する必要があります。Windowsでは、パス名が255文字を超えると、ファイルにアクセスできなくなる場合があります。したがって、インストール先のパス名が長くなりすぎないように注意してください。
ネットワーク接続の構成
Oracleクライアントのネットワーク接続には、2つの構成があります。以下に、それぞれの構成について解説します。
Local Naming
Local Namingは、Oracle Net Servicesの構成の一つで、クライアント側で使用するネットワーク識別子(Service Name)を定義する方法です。Local Namingを使用することで、クライアント側で定義されたネットワーク識別子を使用して、Oracleデータベースに接続することができます。
Local Namingの設定は、tnsnames.oraファイルに定義します。tnsnames.oraファイルは、Oracleクライアントがインストールされた場所の下の「network/admin」ディレクトリに保存されます。
Directory Naming
Directory Namingは、Oracle Net Servicesの構成の一つで、Oracleデータベースが使用するネットワーク識別子(Service Name)を定義する方法です。Directory Namingを使用することで、Oracleデータベース側で定義されたネットワーク識別子を使用して、Oracleデータベースに接続することができます。
Directory Namingの設定は、LDAPサーバーに保存されます。LDAPサーバーには、Oracle Net Services Directory Serverが用意されています。
インストールの開始
上記の準備と、確認が出来たら、いよいよインストール開始です。
そう、仕事とは、殆どが準備なのです。
Oracleサーバーの設定方法
Oracleサーバーとクライアントを接続するためには、Oracleサーバー側の設定や確認が必要です。
作業手順
- Oracleインスタンスの起動
- listener.oraファイルの編集
- tnsnames.oraファイルの編集
- Oracle Net Services構成の確認
- Firewallの設定
Oracleインスタンスの起動
Oracleインスタンスの確認
まず、Oracleインスタンスが起動していない場合は、起動する前にOracleインスタンスが存在するかどうかを確認する必要があります。Oracleインスタンスが存在するかどうかを確認するには、以下のコマンドを実行します。
lsnrctl status
Oracleインスタンスの起動
Oracleインスタンスを起動するには、以下のコマンドを実行します。
sqlplus /nolog
connect / as sysdba
startup
なお、Oracleインスタンスを起動する前に、Oracle Listenerが正常に起動しているかどうかを確認する必要があります。Oracle Listenerが起動していない場合は、Oracleインスタンスを起動しても、接続できない場合があります。
Oracle Listenerが起動していない場合は、以下のコマンドを実行して、Oracle Listenerを起動してください。
lsnrctl start
listener.oraファイルの編集
listener.oraファイルの場所の確認
listener.ora ファイルは、Oracleサーバーがインストールされた場所に存在します。 listener.ora ファイルの場所は、Oracleサーバーのインストール先の$ORACLE_HOME/network/adminディレクトリにあります。ファイル名は、 listener.ora です。
ファイルのバックアップ
listener.ora ファイルを編集する前に、必ずファイルのバックアップを作成してください。編集中に何らかの問題が発生した場合、バックアップファイルを使用して元に戻すことができます。
ファイルの編集
listener.ora ファイルをテキストエディタで開き、必要な設定を追加または変更します。具体的には、以下の情報を編集することができます。
- リスナーのポート番号
- リスナーのホスト名
- リスナーのプロトコル
- サービス名またはサービスID
- サービス名またはサービスIDの接続先
# listener.ora Network Configuration File: C:\app\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
この設定例には、以下の情報が含まれています。
- SID_LIST_LISTENER:Oracleサーバーに接続するサービス名と接続情報を記述するブロックです。SID_NAMEは、サービス名を指定します。ORACLE_HOMEは、Oracleサーバーのインストール先を指定します。PROGRAMは、Oracleサーバーと外部プロセスを接続するためのプログラムを指定します。
- LISTENER:Oracle Listenerの接続情報を記述するブロックです。ADDRESSは、Oracle Listenerの接続情報を指定します。PROTOCOLは、使用するプロトコルを指定します。HOSTは、Oracle Listenerを起動するホスト名を指定します。PORTは、Oracle Listenerが使用するポート番号を指定します。
ファイルの保存
ファイルを編集したら、変更内容を保存します。
Windowsの場合、ファイルが読み取り専用になっているので、デスクトップに保存してから、ファイルをコピペしてみて下さい。
リスナーの再起動
listener.oraファイルを編集した場合、Oracle Listenerを再起動する必要があります。Oracle Listenerを再起動するには、以下のコマンドを実行します。
lsnrctl stop
lsnrctl start
tnsnames.oraファイルの設定方法
Oracleサーバーとクライアントを接続するためには、クライアントPC側に tnsnames.ora ファイルを設定する必要があります。 tnsnames.ora ファイルには、Oracleサーバーの接続情報が記載されています。
作業手順
- tnsnames.oraファイルの場所の確認
- tnsnames.oraファイルの編集
- ファイルの基本的な書式
- サーバー名、ポート番号、サービス名の設定方法
- 複数のOracleサーバーへの接続情報を設定する方法
ファイルの場所の確認
tnsnames.oraファイルは、Oracleクライアントのネットワーク接続設定を記述するファイルであり、Oracleクライアントが使用するOracleサーバーの接続先情報を保持しています。tnsnames.oraファイルは、以下の方法で場所を確認できます。
Windows
Oracleクライアントをインストールしたディレクトリのnetwork/adminディレクトリにtnsnames.oraファイルがあります。通常、Oracleクライアントは、C:\app\ユーザ名\product\バージョン番号\client_x64などのディレクトリにインストールされます。
Linux
Oracleクライアントをインストールしたディレクトリのnetwork/adminディレクトリにtnsnames.oraファイルがあります。通常、Oracleクライアントは、/u01/app/oracle/product/バージョン番号/client_64などのディレクトリにインストールされます。
ファイルの場所の変更方法
Oracleクライアントのtnsnames.oraファイルをデフォルトの場所以外に保存する場合は、tnsnames.oraファイルを保存したディレクトリを、tnsnames.oraの保存先として指定する必要があります。Oracleクライアントのtnsnames.oraファイルの保存先を変更するには、以下の手順を実行してください。
- tnsnames.oraファイルを保存するディレクトリを作成します。
- tnsnames.oraファイルを作成し、必要な接続情報を記述します。
- 環境変数TNS_ADMINを、tnsnames.oraファイルを保存したディレクトリのパスに設定します。
- Oracleクライアントを再起動します。
ファイルの編集
tnsnames.oraファイルには、接続先ごとに情報が記述されています。接続先情報を追加するには、以下のようにtnsnames.oraファイルに情報を追記します。
[接続名] =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = [ホスト名])(PORT = [ポート番号]))
)
(CONNECT_DATA =
(SERVICE_NAME = [サービス名])
)
)
- [接続名]:接続情報を一意に識別するための名前です。適当な名前を付けます。
- [ホスト名]:接続先のホスト名またはIPアドレスを指定します。
- [ポート番号]:接続先のポート番号を指定します。
- [サービス名]:接続先のサービス名を指定します。Oracleサーバーで、サービス名を登録しておく必要があります。
tnsnames.oraファイルを編集することで、Oracleクライアントが使用するOracleサーバーの接続先情報を変更することができます。tnsnames.oraファイルを編集する際には、構文に誤りがないように注意してください。また、Oracleサーバー側でも、接続先情報を正しく設定していることを確認する必要があります。
sqlnet.oraファイルの設定方法
Oracleサーバーとクライアントを接続するためには、クライアントPC側にsqlnet.oraファイルを設定する必要があります。sqlnet.oraファイルには、Oracleサーバーとクライアント間の通信に関する設定が記載されています。
作業手順
- sqlnet.oraファイルの場所の確認
- sqlnet.oraファイルの編集
- ファイルの基本的な書式
- プロトコルの設定方法
- パラメータの設定方法
ファイルの場所の確認
一般的に、sqlnet.oraファイルの場所の確認は、tnsnames.oraファイルと同じ場所に配置されています。
ファイルの編集
sqlnet.oraファイルには、以下のような設定が記述されています。
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATHは、Oracleクライアントが接続先情報を検索する際に使用するディレクトリを指定する設定です。TNSNAMES、LDAP、NISなど、複数のディレクトリをカンマ区切りで指定することができます。
上記の例では、OracleクライアントはTNSNAMES、EZCONNECTの順で接続先情報を検索します。
SQLNET.AUTHENTICATION_SERVICESは、Oracleクライアントが接続時に使用する認証サービスを指定する設定です。NTS、NONE、ALLなど、複数のサービスをカンマ区切りで指定することができます。
上記の設定では、OracleクライアントはWindows認証を使用して接続します。
この設定を行わない場合、Oracleクライアントはユーザ名とパスワードを使用した認証を行います。
また、設定をNONEにすることで、認証を行わずに接続を許可することができます。
Firewallの設定方法
Oracleサーバーとクライアントを接続するためには、Firewallの設定が必要になる場合があります。Firewallは、通信を制限するためのセキュリティ機構であり、Oracleサーバーとクライアントの接続に制限をかけることがあります。
作業手順
- Firewallの確認
- Oracleポート番号の確認
- Firewallの設定方法
- ポート番号の許可
- プロトコルの許可
- IPアドレスの許可
TODO:
Oracleサーバーとクライアントの接続テスト方法
Oracleサーバーとクライアントを接続するためには、接続テストを行うことが重要です。接続テストを行うことで、Oracleサーバーとクライアントが正しく接続できるかどうかを確認することができます。
作業手順
- コマンドプロンプトを開く
- TNSPINGコマンドの実行
- TNSPINGコマンドとは
- TNSPINGコマンドの実行方法
- SQL*Plusの起動
- SQL*Plusとは
- SQL*Plusの起動方法
- Oracleサーバーとの接続テスト
- SQL*Plusでの接続テスト
- SQL Developerでの接続テスト