実現したいこと
Oracle SQL Developer を使って、PL/SQLを勉強したい。
発生している問題・分からないこと
Oracle SQL Developer で データベース接続の作成をしようとすると、「ステータス:失敗 ーテストが失敗しました:ORA-12541:接続できません。host localhost port 1521にリスナーがありません。」とエラーメッセージが出て、データベースに接続できません。リスナーが起動しているのは、確認しています。
エラーメッセージ
error
1ステータス:失敗 ーテストが失敗しました:ORA-12541:接続できません。host localhost port 1521にリスナーがありま 2せん。 (CONNECTION_ID=AmqcRO...) ※すみません。エラーメッセージの最後の部分が、枠外に出て、読み取れません。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
インターネットでエラーを入力して対処方法を見て、FWのポートが開いているか調べようとしたのですが、よくわからず、未実施です。
また、localhostに接続するためには、プライベートネットワークに接続しないといけないのかと思い、プライベートのFWを解除しましたが、接続できませんでした。
補足
FWに接続を許可するアプリケーションを設定しようとして、コントロールパネルから、Defenderを操作しようとしましたが、追加方法がわかりませんでした。
ORACLEはどこにありますか?
ORACLEが稼働しているPCのOSは何ですか?
ORACLEにアクセスするPCのOSはWindowsですか?
FWにて1521ポートを開ける場合には、ORACLEが稼働しているPC側を開ける必要があります。
ORACLEのインストール先は、
C:\app\****(アカウント名)\product\21c、
OSは
Windows 11 Home (バージョン:24H2、OSビルド:26100.4351)
です。
ORACLEをインストールしたPC①と、
Oracle SQL DeveloperをインストールしたPC②は、同じPCですか?
同じPCでない場合、PC①とPC②は、ネットワーク的にどこに存在していますか?
例えば、
・同じHUBにLANケーブルで接続されている。
・PC①は、社内のどこかに設置されている。PC②は自分のPC。
・PC①は、クラウド上にある。PC②は自分のPC。
・などなど
はい、ORACLEをインストールしたPC①とOracle SQL DeveloperをインストールしたPC②は、同じPCです。
「Windows Server 2019 でオラクルデータベース 19c(19.3.0.0.0)のファイアウォール設定」
http://aqurex.jp/windows-server-2019-%E3%81%A7%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9-19c%EF%BC%8819-3-0-0-0%EF%BC%89%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2/
Defender 以外にセキュリティソフトをインストールしているなら、そちらの設定も必要です。
同一PCなら、Windows版のORACLEをインストールしたんですね。
だったら、ファイヤーウォールは関係なさそうに思うけど、関係あるのかな?
同時にsqlplusもインストールされていると思うので、
まずは下記コマンドで、接続できるかを確認してください。
sqlplus username/userpass@lisnername
エラーが発生したら、エラー内容が知りたいです。
Defenderの「ファイアウォール設定」でオラクルDBが受信する「ポート:1521」を許可しましたが、やはり、同様のエラーが出ます。Defende以外にセキュリティソフトをインストールしていません。
ちょっと気になったのですが、参照した手順のページのプライベート ネットワーク(R)は「接続済み」になっていましたが、私のPCは、ゲストまたはパブリックのネットワーク(p)のみ「接続済み」となっており、プライベート ネットワーク(R)は「接続されていません」になっています。問題はないのでしょうか。
>プライベートネットワークは「接続されていません」になっています。問題はないのでしょうか。
今回は同一PC内の話なので、問題にはならないと思います。
コマンド sqlplus username/userpass@lisnernameで、接続できるかを確認してみたところ、下記の エラーが表示されました。ただ、その後にユーザ名を尋ねられましたので、sqlplusは接続されているようです。
ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした
ユーザー名を入力してください:
下記の部分は設定されている名前に置き換えていますか?
username
userpass
lisnername
下記に、tnsnames.oraファイルがあると思うのですが、
そのファイル内に、リスナーの設定を加える必要があるのですが、
その設定はされていますか?
[ORACLEホーム]\network\admin\tnsnames.ora
下記のように設定する必要がります。
ORCLPDB●リスナー名● =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb●インストール時に作成したプラガブルデータベース名●)
)
)
回答ありがとうございます。
自己解決しました!
今まで,「ホスト名(A)」のところに、デフォルトの「localhost」を入力していたのですが、
「tnsnames.ora」に記載されている(HOST = 192.168.10.111)に」書き直してテストしたところ、
接続に成功しました。
お手数をおかけしました。ありがとうございます!
一応解決されてしまったようですが、より本質的(?)にリスナー側の設定ファイル「listener.ora」で指定されているHOSTが"192.168.10.111"だから、tnsnames.oraとリスナーの不一致で接続エラーになっていたのではないでしょうか。ネットワーク環境にもよりますが最近の設定だとlocalhostだとIPv6で解決しようとする時もありますし。
ご指摘ありがとうございます。
留意しておきます。
最後までご説明ありがとうございました。
