質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

解決済

1回答

2410閲覧

Oracleのリスナーがどうしてもうまく動きません・・・。

JuguarSugar

総合スコア83

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

0クリップ

投稿2022/08/10 05:27

編集2022/08/12 00:21

前提

お世話になります。
タイトルの通りになります。
Oracleのバージョンは19cで、個人利用PCにオラクルクライアントからインストールして少し利用した状態です。
コンテナ・プラガブル構成をしており、プラガブルDBの名前は 'ORCLPDB'になります。

'sqlplus ユーザ名/パスワード@サービス名(orclpdb)'だと接続できず、
'sqlplus sys/manager as sysdba'だと接続できます。

エラーは下記になります。
ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした

追記

なぜかsqldeveloperだと下記のような設定で接続できます。
イメージ説明

実現したいこと

  • リスナーを使い、データベース接続したい。

リスナーの構成ファイル3点

listener.ora

1SID_LIST_LISTENER = 2 (SID_LIST = 3 (SID_DESC = 4 (SID_NAME = CLRExtProc) 5 (ORACLE_HOME = C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home) 6 (PROGRAM = extproc) 7 (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home\bin\oraclr19.dll") 8 ) 9 ) 10 11LISTENER_ORCL = 12 (DESCRIPTION_LIST = 13 (DESCRIPTION = 14 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 15 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 16 ) 17 ) 18

sqlnet.ora

1SQLNET.AUTHENTICATION_SERVICES= (NTS) 2NAMES.DIRECTORY_PATH= (TNSNAMES)

tnsnames.ora

1LISTENER_ORCL = 2 (DESCRIPTION = 3 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 4 (CONNECT_DATA = 5 (SERVER = DEDICATED) 6 (SERVICE_NAME = orclpdb) 7 ) 8 )

パラメータ等

  • instance_name from v$instance = orcl
  • global_name from global_name = ORCL

lsnrctl status

lsnrctl_status

1C:\WINDOWS\system32>lsnrctl status 2 3LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 10-8月 -2022 14:30:12 4 5Copyright (c) 1991, 2019, Oracle. All rights reserved. 6 7(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中 8リスナーのステータス 9------------------------ 10別名 LISTENER 11バージョン TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production 12開始日 10-8月 -2022 14:28:55 13稼働時間 0 日 0 時間 1 分 21 秒 14トレース・レベル off 15セキュリティ ON: Local OS Authentication 16SNMP OFF 17パラメータ・ファイル C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home\network\admin\listener.ora 18ログ・ファイル C:\app\oracle\diag\tnslsnr\DESKTOP-29OC3QV\listener\alert\log.xml 19リスニング・エンドポイントのサマリー... 20 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-29OC3QV)(PORT=1521))) 21サービスのサマリー... 22サービス"CLRExtProc"には、1件のインスタンスがあります。 23 インスタンス"CLRExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります... 24サービス"ORCL"には、1件のインスタンスがあります。 25 インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります... 26サービス"ORCLXDB"には、1件のインスタンスがあります。 27 インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります... 28サービス"b1baa6789447444ba67b62d2c618796a"には、1件のインスタンスがあります。 29 インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります... 30サービス"orclpdb"には、1件のインスタンスがあります。 31 インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります... 32コマンドは正常に終了しました。

ベストアンサー選択時の最終的な構成ファイルの状態を示します。

listener.ora

1SID_LIST_LISTENER_ORCL = 2 (SID_LIST = 3 (SID_DESC = 4 (SID_NAME = CLRExtProc) 5 (ORACLE_HOME = C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home) 6 (PROGRAM = extproc) 7 (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home\bin\oraclr19.dll") 8 ) 9 (SID_DESC = 10 (SID_NAME = ORCL) 11 (ORACLE_HOME = C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home) 12 (GLOBAL_DBNAME=ORCL) 13 ) 14 (SID_DESC = 15 (SID_NAME = ORCL) 16 (ORACLE_HOME = C:\app\oracle\product\19c\WINDOWS.X64_193000_db_home) 17 (GLOBAL_DBNAME=ORCLPDB) 18 ) 19 ) 20 21LISTENER_ORCL = 22 (DESCRIPTION_LIST = 23 (DESCRIPTION = 24 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 25 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 26 ) 27 )

sqlnet.ora

1SQLNET.AUTHENTICATION_SERVICES= (NTS) 2NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsnames.ora

1ORCLPDB = 2 (DESCRIPTION = 3 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 4 (CONNECT_DATA = 5 (SERVER = DEDICATED) 6 (SERVICE_NAME = ORCLPDB) 7 ) 8 )

何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KOZ6.0

2022/08/10 07:32

sqlplus ユーザ名/パスワード@localhost/orclpdb で繋がらないですか?
JuguarSugar

2022/08/10 08:08 編集

繋がらないですね...( ;∀;) エラーメッセージも変わりませんでした。
KOZ6.0

2022/08/10 08:23

sqlnet.ora の NAMES.DIRECTORY_PATH のところを NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) に変えてもダメでしょうか?
JuguarSugar

2022/08/10 08:38

変えてみましたが、エラーが発生し続けてしまっています。
KOZ6.0

2022/08/10 09:05 編集

sqldeveloper が繋がるのだから EZCONNECT 形式で繋がりそうなものですが・・・ tnsping localhost/orclpdb は通りますか?
JuguarSugar

2022/08/12 00:07

すみません、返信遅くなりました。 tnsping localhost/orclpdbを行った結果ですが、下記のようになりました。 エイリアスを解決するためにEZCONNECTアダプタを使用しました。 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orclpdb))(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))に接続の試行中 OK (10ミリ秒)
KOZ6.0

2022/08/12 08:43

これがOKなら sqlplus ユーザ名/パスワード@localhost/orclpdb が繋がらないはずはないのですが・・
guest

回答1

0

ベストアンサー

以下のように「サービス名(orclpdb)」を LISTENER_ORCL にすれば接続できると思います。

sqlplus ユーザ名/パスワード@LISTENER_ORCL

サービス名を orclpdb で接続したいのであれば tnsnames.ora の設定を以下のように変更すれば良いと思います。

diff

1- LISTENER_ORCL = 2+ orclpdb = 3 (DESCRIPTION = 4 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 5 (CONNECT_DATA = 6 (SERVER = DEDICATED) 7 (SERVICE_NAME = orclpdb) 8 ) 9 )

補足

  • 接続がうまくいかないときは、接続元と接続先のどちらに問題があるのか切り分けが必要です。
  • sqldeveloperで接続できることを確認しているので、接続先は問題ないと判断できます。なので、リスナーがうまく動かないという質問は間違いです。
  • 接続元に問題があるとすると、接続先の指定が間違っていると判断できます。
  • エラーメッセージで検索すれば接続先の指定が間違っているということがすぐ分かりますが・・・。

参考

投稿2022/08/11 05:12

編集2022/08/11 05:29
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JuguarSugar

2022/08/12 00:16

ご回答有難う御座います。 おお、回答いただいた通りにしたところ無事接続ができました。 >エラーメッセージで検索すれば接続先の指定が間違っているということがすぐ分かりますが・・・。 ⇒接続先の指定方法がよく分かっておらず・・・、SERVICE_NAMEにて指定した文字列をサービス名として指定するものと勘違いしておりました。 TNSNAMES.ORAの1行目で指定した文字列を接続時に指定するんですね。 大変勉強になりました、有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問