Oracle
ORA-12514: TNS:listener 目前不知道 linux 上的連接描述符中請求的服務
我已經在 Rhel 7 上配置了 oracle 12c。當我嘗試使用以下命令連接數據庫時,它可以毫無問題地連接:
sqlplus system/Forest123@orcl
當我嘗試將連接字元串放入時遇到問題,
hostname
如下port
所示:sqlplus system/Forest123@localhost:1521/orcl
發生的錯誤是
ORA-12514: TNS:listener 目前不知道連接描述符中請求的服務
我已經解決了之前提出的問題,但沒有一個能幫助我解決這個問題。
以下是我的
tnsnames.ora
,sqlnet.ora
和listener.ora
文件。tnsnames.ora
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_12C.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.localdomain) ) )
監聽器.ora
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_12C.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
主機文件
127.0.0.1 localhost 127.0.0.1 localhost.localdomain 127.0.0.1 localhost4 127.0.0.1 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ::127.0.0.1 localhost.localdomain localhost 172.31.15.86 oracle_12C.localdomain oracle_12C
由於您收到以下錯誤消息,這意味著
hostname
不正確和/或您正在使用的域。如何知道一切是否正常?您需要執行
hostname
命令,假設輸出為oracle_12C
,並執行cat /etc/resolve.con
假設域名mydomain.com
,然後您需要編輯/etc/hosts
如下127.0.0.1 localhost 127.0.0.1 localhost.localdomain 127.0.0.1 localhost4 127.0.0.1 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ::127.0.0.1 localhost.localdomain localhost 172.31.15.86 oracle_12C.mydomin.com oracle_12C
請注意,如果您不使用域,
/etc/hosts/
則應如下所示127.0.0.1 localhost 127.0.0.1 localhost.localdomain 127.0.0.1 localhost4 127.0.0.1 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ::127.0.0.1 localhost.localdomain localhost 172.31.15.86 oracle_12C
現在讓我們移動到
tnsnames.ora
,在此文件中,您需要搜尋您的數據庫部分(在您的問題 orcl 中)將其替換如下(注意您需要在進行任何更改之前從該文件中獲取備份):ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <hostname as /etc/hosts>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
如果您有圓頂,請注意主機
HOST = oracle_12C.mydomain.com
,否則它應該是HOST = oracle_12C
現在保存文件並關閉它。
之後,讓我們移至
listener.ora
,從中獲取備份並進行如下編輯:LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <hostname as /etc/hosts>)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
現在通過執行重新啟動您的偵聽器
lsnrctl stop
,lsnrctl start
然後嘗試使用以下命令連接到數據庫export ORACLE_SID=orcl sqlplus system/Forest123
下面的過程解決了我的問題。
- 使用sqlplus / as sysdba命令連接到伺服器
- 使用SQL> show parameter local_listener命令檢查本地偵聽器是否存在。對我來說 local_listener 值為空
- 使用 SQL 動態設置監聽器> alter system set local_listener=’(ADDRESS=(PROTOCOL=TCP)(HOST=LOCALHOST)(PORT=1521))’ scope=both; 命令
- 然後使用 alter 命令進行註冊SQL> alter system register;
- 現在檢查是否添加了偵聽器SQL> show parameter local_listener。現在使用 Value = (ADDRESS=(PROTOCOL=TCP)(HOST=LOCALHOST)(PORT=1521))成功添加監聽器
- 添加本地偵聽器後,我能夠成功連接。