問題描述,現在有兩台電腦 A 和 B :
1)電腦 A 上有 Oracle11G服務端; ip地址 192.168.1.198; 端口1521;
2)電腦 A 本機連接數據庫正常,可以登錄及操作等;
3)電腦B配置訪問電腦A時報錯:ORA-12541:TNS:無監聽程序
報這種錯的話,網上有說法,說是防火牆沒關,或者是服務端服務沒啟好等,按本人的實際情況解說:因為oracle服務端訪問配置是需要配置訪問地址監聽的,具體見Oracle安裝路徑:% product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora,這個是我的oracle監聽服務的配置文件,內容如下:

# listener.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.190)(PORT = 1521)) ) ) ADR_BASE_LISTENER = E:\app\Administrator
這時候我可以采用兩種方法來解決:
方法一:直接用下面的語句覆蓋掉listener.ora中的內容,之后重啟oracle和監聽器即可。

# listener.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = SKY-20130705VGC)(PORT = 1521)) ) ) ADR_BASE_LISTENER = E:\app\Administrator
方法二:用windows下的oracle的監聽配置工具,把監聽重新配置一次,之后重啟oracle和監聽器即可。重新配置監聽器的方法如下:
參考資料:
http://www.dedecms.com/knowledge/data-base/oracle/2012/1214/17634.html
http://blog.csdn.net/wwbmyos/article/details/11475551