我被Oracle監聽器配置卡住了。它正在監聽本地主機,但我無法通過外部機器訪問它。網絡工作正常,Oracle安裝在虛擬機上,我正在通過ssh工作。配置Oracle監聽器進行外部監聽
我listener.ora
文件:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.110)(PORT = 1530))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
和tnsnames.ora
:
QSYSTEM =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.110)(PORT = 1530))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = QSYSTEM)
)
)
其中QSYSTEM
是數據庫的SID,並192.168.10.110
是主機的netstat輸出的地址。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:50904 0.0.0.0:* LISTEN 9650/ora_d000_QSYST
tcp 0 0 192.168.10.110:22 10.48.202.125:63350 ESTABLISHED 2994/sshd: oracle [
tcp 0 0 127.0.0.1:14468 127.0.0.1:1521 ESTABLISHED 9618/ora_pmon_QSYST
udp 0 0 127.0.0.1:60990 0.0.0.0:* 9652/ora_s000_QSYST
udp 0 0 127.0.0.1:20566 0.0.0.0:* 9650/ora_d000_QSYST
udp 0 0 0.0.0.0:21371 0.0.0.0:* 9646/ora_mmon_QSYST
udp 0 0 127.0.0.1:58024 0.0.0.0:* 9618/ora_pmon_QSYST
lsnrctl status
輸出:
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-MAR-2016 13:57:16
Copyright (c) 1991, 2011, Oracle. All rights reserved.
TNS-01150: The address of the specified listener name is incorrect
NL-00303: syntax error in NV string
我使用Oracle 11g標準的RHEL 7
解決方案: 當我換成本地主機與IP地址和適當的改變和格式化listener.ora
和tnsnames.ora
我建立了連接。
192.168.10.110不是本地主機...是你用於ssh的地址嗎? (我可以在netstat中看到它,但它可能由VM進行NAT)。是否有防火牆允許端口22而不是端口1521? –
是的,即時通訊使用此地址進行SSH連接。我讀過HOST = localhost它只監聽本地機器,並且此參數需要是另一個地址。大多數情況下,我已經看到它是主機名稱,但我不確定DNS配置是否正確,並將直接地址。 關閉防火牆以確保它不會干擾,但仍然沒有連接 –
您的netstat輸出不包含端口1521,您能否檢查某些內容正在偵聽?你可以將'lsnrctl status'的輸出添加到問題中嗎?如果監聽程序已啓動並處於該地址,並且可以從該VM連接到該端口(例如,通過telnet),但不是從您的ssh連接到的計算機上,則它們在網絡中的某些內容會阻止它 - 服務器上的防火牆排除了一些其他網絡限制,甚至是客戶端計算機上的出站防火牆。 –