【Oracle】ローカルネーミングを理解しよう

今回は実際にOracleデータベースへ接続する方法の一つ,ローカルネーミングについてご紹介します。

一部の技術者向けの内容となり,恐縮です。

SID,インスタンス,グローバル・データベース名等,Oracleには似たような様々な概念があり,混乱することもありますよね。

一度に紹介すると整理しきれなくなる可能性も有るため,取り掛かりとして意外とややこしくなりがちなOracleNetの部分からご紹介します。

ぜひとも参考にしていただけたら幸甚です。

目次

前提知識

Oracleデータベース

アメリカに本社を置くOracle社が開発しているRDBMS1です。

数多のDB製品がある中で,長年世界1位のシェアを誇っています。

難点があるとすれば,他のDB製品に比べると価格が高価な点です。

とはいえ,Oracle社の手厚いサポートもあり,総合的には非常に扱いやすいDBと言えるでしょう。

大規模システムにおいて使用するうえでは,本製品が非常に有用かと思います。

SQL*Plus

Oracleデータベースを管理するために使用するツールの一種で,Oracleデータベースをインストールすれば付随してきます。

操作する際は,ボタン操作等のGUI操作ではなくコマンド入力によって行います。

イツキ

Windowsで言うところのコマンドプロンプトだよ!

SQL*PlusではSELECT等のSQLはもちろん,独自のプログラミング言語であるPL/SQLコマンドやCONNECT等のSQL*Plusコマンドを実行可能です。

DB接続方法

Oracleデータベースへ接続する方法は以下の5種類あります。

Oracleデータベース接続方法
簡易接続ネーミング

接続先情報を直接コマンド入力して接続する方法

ローカルネーミング

OracleNet定義ファイル(「tnsnames.ora」)に接続先情報を定義して接続する方法

ディレクトリネーミング

別のディレクトリサーバに接続先情報を定義して接続する方法

外部ネーミング

Oracle以外の外部サービスに接続先情報を定義して接続する方法

ローカル接続

環境変数「ORACLE_SID2」を設定して接続する方法(リスナー不要)

イツキ

ローカル接続は,Oracleをインストールしたサーバ内部でのみ可能な接続方法だよ!

ローカルネーミング

OracleNet定義ファイル

OracleNet定義ファイルは以下の3種類あります。

OracleNet定義ファイル
  • listener.ora
  • tnsnames.ora
  • sqlnet.ora

格納場所はいずれも「${ORACLE_HOME}(Oracleインストールディレクトリ)/network/admin」直下です。

3種類あるファイルの内,ローカルネーミングで必要となるのは「tnsnames.ora」と「sqlnet.ora」です。

Oracleへ接続するためにはもちろんリスナー(「listener.ora」)設定も必要ですが,ローカルネーミングの意味では設定する必要ありません。(リスナーは別途紹介します。)

OracleNet定義ファイルは,以下いずれかの方法で作成することができます。

OracleNet定義ファイル作成方法
  • データベース作成時にDBCA3で作成する
  • NetCA4を利用して作成する
  • 手動で作成する(BATやシェルを利用した自動作成含む)
ハヤト

どれがおすすめなんだろう?

イツキ

最初はDBCAもしくはNetCAでの作成が無難だと思うよ!

慣れない内はDBCAもしくはNetCAでの作成が無難かと思います。

画面上(GUI)にて必要事項を入力することで,Oracleが自動的に定義ファイルを作成してくれます。

要領や構文規則が分かってきたら,BATやシェルを利用して自動化することで,生産性向上はもちろん品質も確保しやすくなるでしょう。

tnsnames.ora

ローカルネーミングにおいて,接続するデータベース情報を定義するためのOracleNet定義ファイルです。

本定義ファイルへ定義したデータベースに,ローカルネーミングで接続することができるようになります。

基本的な構文は以下の通りです。

他にもいろいろと定義要素はありますが,最低限まずは上記を把握していれば問題ありません。

ちなみに,複数行に跨いで定義する場合,子要素は半角スペース1文字以上のインデントが必須です。

イツキ

Oracleの構文規則で決まっているよ!半角スペース2文字分くらいが丁度良いかも。

実際の具体例を以下に示します。

なお,例では同じ名前(ORCL)にしている「接続識別子名」(1行目)と「データベース名」(5行目)には注意点があります。

「接続識別子名」は好きな名前を指定可能(「ABCD」とかでも可)ですが,「データベース名」は存在するデータベース名を指定しましょう。

「接続識別子名」には好きな名前を指定可能だが,「データベース名」は実際に作成したデータベース名を指定する必要がある。

sqlnet.ora

Oracleへ接続する方法を定義するOracleNet定義ファイルです。

本定義ファイルへ定義した方法でOracleへ接続できるようになります。

ローカル接続を除いて,定義した方法でしかOracleへ接続できない。

基本的な構文は以下の通りです。

他にもいろいろと定義要素はありますが,最低限まずは上記を把握していれば問題ありません。

ローカルネーミングにおいては,以下の通りに定義します。

Oracleデータベース接続

Oracleデータベースへ接続するために,SQL*Plusを利用します。

プロンプト(Windowsならコマンドプロンプト,UNIX系ならターミナル)で以下のコマンドを実行します。

なお,コマンド実行に当たり,前もって環境変数の「${PATH}」へ「${ORACLE_HOME}/bin」を設定しておきましょう。

「tnsnames.ora」を以下のように定義していた場合,具体的には以下の通りです。

「@」の後ろに指定している「ORCL」は,「tnsnames.ora」で定義した「接続識別子」(「(例)tnsnames.ora」の1行目)です。

「データベース名」(「(例)tnsnames.ora」の5行目)ではない点に注意しましょう。

イツキ

仮に「接続識別子」が「ABCD」の場合,「@」の後ろは「ABCD」とする必要があるよ!

「@」の後ろには「接続識別子」を指定する。また,環境変数の「${PATH}」に「${ORACLE_HOME}/bin」を設定しておくこと。

まとめ

今回はローカルネーミングでの接続について説明しました。

OracleNet定義ファイルを適切に設定することで,SQL*Plusを利用してOracleデータベースへ接続することが可能となります。

設定において特にややこしいのが,「tnsnames.ora」の「接続識別子」(好きな名前を指定可)と「データベース名」(作成したデータベース名を指定)です。

それぞれを理解しておくことで,万が一エラーが起きた際の原因調査も捗り易くなるかと思います。

概念を理解することで,自身が行っている作業もより理解できるよう励んでいきましょう!


  1. 行と列から成る表構造型データベース ↩︎
  2. インスタンス名を設定するOracleの環境変数 ↩︎
  3. Oracleデータベースを作成できるOracleの機能 ↩︎
  4. Oracleデータベースへ接続するためのネットワーク設定ができるOracleの機能 ↩︎
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

Author

               
イツキのアバター
イツキ
               

24年度からITフリーランスとして事業開始。インフラエンジニアとして,サーバ設計・構築やミドルウェアの設計・構築に従事。

本業の傍らで,仕事だけでなく日常生活でも役立つPCに関する様々な情報を発信中!                

目次