Oracle服務(wù)端1521端口無法telnet,服務(wù)名未開啟監(jiān)聽的解決
場景
oracle服務(wù)安裝在windows本地,oracle客戶端在虛擬機(jī)中,使用虛擬機(jī)連接windows的oracle數(shù)據(jù)庫。
問題1:使用虛擬機(jī)telnet我本地oracle1521端口,不通
解決思路:
關(guān)閉虛擬機(jī)linux防火墻(這個方法有點(diǎn)粗暴,建議在只需要修改防火墻的端口允許通過即可)
# 1:查看防火狀態(tài) systemctl status firewalld service iptables status # 2:暫時關(guān)閉防火墻 systemctl stop firewalld service iptables stop # 3:永久關(guān)閉防火墻 systemctl disable firewalld chkconfig iptables off # 4:重啟防火墻 systemctl enable firewalld service iptables restart # 5:永久關(guān)閉后重啟 chkconfig iptables on
防火墻配置規(guī)則 端口 允許得端口
# 查看已打開的端口 netstat -anp # 添加允許的端口 firewall-cmd --add-port=1521/tcp --permanent # 若移除端口 firewall-cmd --permanent --remove-port=1521/tcp # 策略修改完成,請重啟: systemctl restart firewalld
添加windows防火墻對1521的入站允許規(guī)則

問題2:使用sqlplus登錄報錯,ORA-12514: TNS: 監(jiān)聽程序當(dāng)前無法識別連接描述符中請求的服務(wù)
解決思路:關(guān)鍵字監(jiān)聽程序
查看監(jiān)聽服務(wù)狀態(tài)
# 關(guān)閉監(jiān)聽服務(wù) lsnrctl stop # 啟動監(jiān)聽服務(wù) lsnrctl start # 查看監(jiān)聽服務(wù)狀態(tài) lsnrctl stat
查看監(jiān)聽服務(wù)如果出現(xiàn)下列問題

說明監(jiān)聽服務(wù)沒有啟動
去啟動oracle監(jiān)聽服務(wù),監(jiān)聽服務(wù)有兩個,這里只做單監(jiān)聽講,隨便啟動一個即可。

再通過lsnrctl stat查看監(jiān)聽服務(wù),如果出現(xiàn)下圖情況

只看到一個服務(wù)名"CLRExtProc"啟動了,而我們想要的是ORCL服務(wù)名
這是需要修改listener.ora 文件
修改listener.ora 文件
文件路徑,我本地的路徑是:D:\app\niaobulashi\product\11.2.0\dbhome_1\NETWORK\ADMIN
需要添加以下紅色部分代碼,將服務(wù)名為ORCL添加到監(jiān)聽配置文件中

貼出來如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\niaobulashi\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\niaobulashi\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC=
(SID_NAME = ORCL)
(ORACLE_HOME = D:\app\niaobulashi\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\niaobulashi\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-NNDNCEI)(PORT = 1521))
)
ADR_BASE_LISTENER = D:\app\niaobulashi再查看監(jiān)聽服務(wù)狀態(tài),可以看到ORCL有了

修改tnsname.ora的HOST為本地主機(jī)名
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-NNDNCEI)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-NNDNCEI)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)最后使用虛擬機(jī)就可以正常連接本地oracle服務(wù)了

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何把Oracle?數(shù)據(jù)庫從?RAC?集群遷移到單機(jī)環(huán)境
這篇文章主要介紹了把?Oracle?數(shù)據(jù)庫從?RAC?集群遷移到單機(jī)環(huán)境,內(nèi)容包括系統(tǒng)環(huán)境搭建,源數(shù)據(jù)庫的操作及目標(biāo)數(shù)據(jù)庫的操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
oracle數(shù)據(jù)庫導(dǎo)入導(dǎo)出命令解析
這篇文章主要介紹了oracle數(shù)據(jù)庫導(dǎo)入導(dǎo)出命令解析,小編覺得還是比較不錯的,需要的朋友可以參考下。2017-10-10
Oracle dbca時報:ORA-12547: TNS:lost contact錯誤的解決
這篇文章主要給大家介紹了關(guān)于Oracle在dbca時報:ORA-12547: TNS:lost contact錯誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-11-11
Oracle刪除當(dāng)前用戶下所有表的方法適用于有或沒有刪除權(quán)限
如果有plsql客戶端,則可以使用該用戶登錄,選中所有表 右鍵Drop即可,如果有或沒有刪除用戶的權(quán)限都可以使用下面的方法2014-06-06
oracle中l(wèi)eft join和right join的區(qū)別淺談
oracle中l(wèi)eft join和right join的區(qū)別淺談,需要的朋友可以參考一下2013-02-02

