dbeaver無法連接Oracle報錯:?ORA-17800、ORA-12514解決辦法
環(huán)境:宿主機windows;Oracle部署環(huán)境centos7(dockerdesktop創(chuàng)建的容器);端口映射1521:1521
問題1:宿主機使用dbeaver連接Oracle服務,報錯異常:
ORA-17800: 從讀取調(diào)用中減去了一個 (CONNECTION_ID=QAd8w6vPQxifNvB3zd7s2g==)
查看監(jiān)聽器狀態(tài):
[oracle@a148f323c4cf log]$ lsnrctl status LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-APR-2025 07:21:18 Copyright (c) 1991, 2019, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ff2359429202)(PORT=1521))) TNS-12545: Connect failed because target host or object does not exist TNS-12560: TNS:protocol adapter error TNS-00515: Connect failed because target host or object does not exist Linux Error: 2: No such file or directory Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 2: No such file or directory
注意監(jiān)聽器的作用:
Oracle 監(jiān)聽器(Oracle Listener)是 Oracle 數(shù)據(jù)庫網(wǎng)絡架構(gòu)中的核心組件,其主要作用是管理客戶端與數(shù)據(jù)庫服務器之間的通信,類似于電話交換機,負責接收連接請求并將其路由到正確的數(shù)據(jù)庫服務。
嘗試啟動監(jiān)聽器:
[oracle@a148f323c4cf log]$ lsnrctl start LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-APR-2025 06:45:55 Copyright (c) 1991, 2019, Oracle. All rights reserved. Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 19.0.0.0.0 - Production System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/a148f323c4cf/listener/alert/log.xml Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ff2359429202)(PORT=1521))) TNS-12545: Connect failed because target host or object does not exist TNS-12560: TNS:protocol adapter error TNS-00515: Connect failed because target host or object does not exist Linux Error: 2: No such file or directory Listener failed to start. See the error message(s) above... [oracle@a148f323c4cf log]$ hostname a148f323c4cf [oracle@a148f323c4cf log]$ hostname -i 192.168.100.104 [oracle@a148f323c4cf log]$
注意到:HOST=ff2359429202并不是Oracle部署機的地址,我Oracle部署及的地址由hostname查看得知為a148f323c4cf。為了避免修改listener.ora文件,我選擇直接修改本機/etc/hosts文件,在本機IP后面再新增一個別名用“ ”空格分隔開

重新啟動lsnrctl start監(jiān)聽器后查看狀態(tài)是成功的:

再次連接,又報錯:
ORA-12514: 無法連接到數(shù)據(jù)庫。服務 %s 未注冊到 %s 中的監(jiān)聽程序。 (CONNECTION_ID=yT1PYhZiRIqkDfuoDo61zQ==)
查看lsnrctl status打印輸出的監(jiān)聽器日志路徑:
/opt/oracle/diag/tnslsnr/a148f323c4cf/listener/alert/log.xml
<msg time='2025-04-01T07:44:07.495+00:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='a148f323c4cf' host_addr='192.168.100.104' pid='48703'> <txt>01-APR-2025 07:44:07 * (CONNECT_DATA=(CID=(PROGRAM=DBeaver 23?3?3 ? Main)(HOST=__jdbc__)(USER=18389))(SERVICE_NAME=ORCLCDB)(CONNECTION_ID=/VA/VRHGSFSQbai6Yzp+Cg==)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.1)(PORT=47588)) * establish * ORCLCDB * 12514 </txt> </msg> <msg time='2025-04-01T07:44:07.495+00:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='a148f323c4cf' host_addr='192.168.100.104' pid='48703'> <txt>TNS-12514: TNS:listener does not currently know of service requested in connect descriptor </txt> </msg> <msg time='2025-04-01T07:44:07.506+00:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='a148f323c4cf' host_addr='192.168.100.104' pid='48703'> <txt>01-APR-2025 07:44:07 * (CONNECT_DATA=(CID=(PROGRAM=DBeaver 23?3?3 ? Main)(HOST=__jdbc__)(USER=18389))(SERVICE_NAME=ORCLCDB)(CONNECTION_ID=/VA/VRHGSFSQbai6Yzp+Cg==)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.1)(PORT=47604)) * establish * ORCLCDB * 12514 </txt> </msg> <msg time='2025-04-01T07:44:07.506+00:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='a148f323c4cf' host_addr='192.168.100.104' pid='48703'> <txt>TNS-12514: TNS:listener does not currently know of service requested in connect descriptor </txt> </msg>
顯示:TNS:listener does not currently know of service requested in connect descriptor客戶端請求的服務名 ORCLCDB 未被監(jiān)聽器識別
再次查看監(jiān)聽器狀態(tài):

The listener supports no services意思是監(jiān)聽器當前沒有識別到任何數(shù)據(jù)庫服務?
為了驗證,我修改listener對應/opt/oracle/product/19c/dbhome_1/network/admin/listener.ora配置文件強制綁定我客戶端請求的數(shù)據(jù)庫服務。

新增:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCLCDB) --服務名稱
(ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) --安裝路徑
(SID_NAME = ORCLCDB) --實例名稱
)
)停止lsnrctl stop后重啟lsnrctl start:

dbeaver客戶端嘗試重連:

成功解決!
1. 客戶端無法連接Oracle服務,多半是監(jiān)聽器作祟,優(yōu)先使用lsnrctl status查看其狀態(tài),并多查看監(jiān)聽器日志文件。
總結(jié)
到此這篇關(guān)于dbeaver無法連接Oracle報錯: ORA-17800、ORA-12514解決辦法的文章就介紹到這了,更多相關(guān)dbeaver無法連接Oracle報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows Sever 2012下Oracle 12c安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了Windows Sever 2012下Oracle 12c安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
如何保持Oracle數(shù)據(jù)庫的優(yōu)良性能
如何保持Oracle數(shù)據(jù)庫的優(yōu)良性能...2007-03-03
oracle數(shù)據(jù)庫遷移到MySQL的方法總結(jié)
本文主要總結(jié)了oracle數(shù)據(jù)庫遷移到MySQL的方法,方法包括手動方式導入導出、使用工具Navicat 進行導入、使用工具DBMover 的OracleToMySQL 進行導入和使用工具intelligent-converters 的 oracle-to-mysql 進行導入,需要的朋友可以參考下。2017-03-03
PLSQL?Developer13.0.4最新注冊碼和使用教程詳解
PL/SQL?Developer?13是一個集成開發(fā)環(huán)境,專門用于開發(fā)?Oracle?數(shù)據(jù)庫的存儲程序單元。這篇文章主要介紹了PLSQL?Developer13.0.4注冊和使用教程,需要的朋友可以參考下2021-12-12
Oracle通過正則表達式分割字符串 REGEXP_SUBSTR的代碼詳解
這篇文章主要介紹了Oracle通過正則表達式分割字符串 REGEXP_SUBSTR的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05

