DB

sqlplusコマンドで2通りの方法でOracleに接続してみた

コマンドプロンプトからOracleに接続する際、sqlplusコマンドを利用するが、その際よく使う方式に、tnsnames.oraの設定を利用する「ローカル・ネーミング・メソッド」と、tnsnames.oraの設定を利用しない「簡易接続ネーミング・メソッド」の2通りがある。

また、「ローカル・ネーミング・メソッド」「簡易接続ネーミング・メソッド」のどちらを使えるかは、sqlnet.oraに定義する「NAMES.DIRECTORY_PATH」の設定内容によって決まる。

今回は、sqlplusコマンドで、「ローカル・ネーミング・メソッド」「簡易接続ネーミング・メソッド」の2通りの方法でOracleに接続してみたので、その手順を共有する。

なお、「ローカル・ネーミング・メソッド」「簡易接続ネーミング・メソッド」の詳細は、以下のサイトを参照のこと。
https://qiita.com/mi-kana/items/0f79cafed1761a4531b1

前提条件

下記記事のように、A5M2を利用してOracleに接続できていること。

A5M2を利用して各DBに接続してみたA5M2(A5:SQL Mk-2)は、SQL文の入力支援やER図作成などの機能を備えていて、Oracle、MySQL、PostgreSQ...

その結果、以下の「C:\oraclexe\app\oracle\product\11.2.0\server\bin」ディレクトリ下に、「sqlplus.exe」が含まれていること。
前提条件_1

また、以下のように、「C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN」下に「tnsnames.ora」「sqlnet.ora」「listener.ora」の3ファイルが含まれていること。
前提条件_2

さらに、上記「tnsnames.ora」に、以下の設定が含まれていること。
前提条件_3

また、A5M2でOracleに接続した際、user_dataテーブルの件数が、以下のように6件であること。
前提条件_4

Androidロックを解除する裏ワザ「4uKey for Android」をご紹介Android端末では、以下の画像のような画面ロックパスワードを設定することができますが、このパスワードを忘れてしまうと、Android...

sqlnet.oraに「NAMES.DIRECTORY_PATH」が未設定の場合

sqlnet.oraに「NAMES.DIRECTORY_PATH」が未設定の場合は、「ローカル・ネーミング・メソッド」「簡易接続ネーミング・メソッド」の2通りの方法で、sqlplusコマンドでOracleに接続できる。その確認結果は、以下の通り。

1) sqlnet.oraの設定内容は、以下の通り。
sqlnet未設定_1

2)「ローカル・ネーミング・メソッド」を利用して接続した結果は以下の通りで、「sqlplus (ユーザー名)/(パスワード)@(ネットサービス名)」という方法で接続できることが確認できる。
sqlnet未設定_2_1

なお、(ネットサービス名)は、tnsnames.oraに記載されている先頭の「XE」を指している。
sqlnet未設定_2_2

3)「ローカル・ネーミング・メソッド」を利用して接続した後で、SQL文を実行すると、以下のように結果が返却されることが確認できる。
sqlnet未設定_3

4) sqlplusコマンドを終了するには、「exit;」を入力すればよい。
sqlnet未設定_4

5)「簡易接続ネーミング・メソッド」を利用して接続した結果は以下の通りで、「sqlplus (ユーザー名)/(パスワード)@(ホスト名):(ポート番号)/(サービス名)」という方法で接続できることが確認できる。
sqlnet未設定_5_1

なお、(サービス名)は、tnsnames.oraに記載されているSERVICE_NAMEの値を指している。
sqlnet未設定_5_2

6)「簡易接続ネーミング・メソッド」を利用して接続した後で、SQL文を実行すると、以下のように結果が返却されることが確認できる。
sqlnet未設定_6

7) sqlplusコマンドを終了するには、「exit;」を入力すればよい。
sqlnet未設定_7



「Envader」はLinuxコマンドやDatabase SQL等のスキルを、環境構築不要で習得できる学習サイトだった「Envader」は、ITエンジニアとしてよく使うLinuxコマンドやDatabase SQL等のスキルを、解説を読んだ上で、問題を解き...

sqlnet.oraに「NAMES.DIRECTORY_PATH」が「ezconnect」の場合

sqlnet.oraに「NAMES.DIRECTORY_PATH」が「ezconnect」の場合は、「簡易接続ネーミング・メソッド」を利用して、sqlplusコマンドでOracleに接続できる。その確認結果は、以下の通り。

1) sqlnet.oraの設定内容は、以下の通り。
sqlnet_ezconnect_1

2)「ローカル・ネーミング・メソッド」を利用して接続した結果は以下の通りで、ORA-12154(指定された接続識別子を解決できませんでした)というエラーが発生することが確認できる。
sqlnet_ezconnect_2

3)「簡易接続ネーミング・メソッド」を利用して接続した結果は以下の通りで、「sqlplus (ユーザー名)/(パスワード)@(ホスト名):(ポート番号)/(サービス名)」という方法で接続できることが確認できる。
sqlnet_ezconnect_3

freelance hubを利用して10万件を超える案件情報からJava Spring案件を検索してみたfreelance hubは、レバテックフリーランスやフリエン(furien)を始めとした多くのフリーランスエージェントの案件をまとめて...

sqlnet.oraに「NAMES.DIRECTORY_PATH」が「tnsnames」の場合

sqlnet.oraに「NAMES.DIRECTORY_PATH」が「tnsnames」の場合は、「ローカル・ネーミング・メソッド」を利用して、sqlplusコマンドでOracleに接続できる。その確認結果は、以下の通り。

1) sqlnet.oraの設定内容は、以下の通り。
sqlnet_tnsnames_1

2)「ローカル・ネーミング・メソッド」を利用して接続した結果は以下の通りで、「sqlplus (ユーザー名)/(パスワード)@(ネットサービス名)」という方法で接続できることが確認できる。
sqlnet_tnsnames_2

3)「簡易接続ネーミング・メソッド」を利用して接続した結果は以下の通りで、ORA-12154(指定された接続識別子を解決できませんでした)というエラーが発生することが確認できる。
sqlnet_tnsnames_3



https://www.purin-it.com/doctor-homenet

sqlnet.oraに「NAMES.DIRECTORY_PATH」が「ezconnect, tnsnames」の場合

sqlnet.oraに「NAMES.DIRECTORY_PATH」が「ezconnect, tnsnames」の場合は、「ローカル・ネーミング・メソッド」「簡易接続ネーミング・メソッド」の2通りの方法で、sqlplusコマンドでOracleに接続できる。その確認結果は、以下の通り。

1) sqlnet.oraの設定内容は、以下の通り。
sqlnet_ezconnect_tnsnames_1

2)「ローカル・ネーミング・メソッド」を利用して接続した結果は以下の通りで、「sqlplus (ユーザー名)/(パスワード)@(ネットサービス名)」という方法で接続できることが確認できる。
sqlnet_ezconnect_tnsnames_2

3)「簡易接続ネーミング・メソッド」を利用して接続した結果は以下の通りで、「sqlplus (ユーザー名)/(パスワード)@(ホスト名):(ポート番号)/(サービス名)」という方法で接続できることが確認できる。
sqlnet_ezconnect_tnsnames_3

要点まとめ

  • コマンドプロンプトからOracleに接続する際、sqlplusコマンドを利用するが、その際よく使う方式に、tnsnames.oraの設定を利用する「ローカル・ネーミング・メソッド」と、tnsnames.oraの設定を利用しない「簡易接続ネーミング・メソッド」の2通りがある。
  • 「ローカル・ネーミング・メソッド」「簡易接続ネーミング・メソッド」のどちらを使えるかは、sqlnet.oraに定義する「NAMES.DIRECTORY_PATH」の設定内容によって決まる。