我們知道oracle客戶端連接時涉及用到的幾個配置文件有:sqlnet.ora、tnsnames.ora、listener.ora。其中sqlnet.ora和tnsnames.ora是在客戶端的配置文件,listener.ora則是在服務器端的監聽配置文件。
想要順利的連接上服務器端,首先要確保兩者之間的網絡通暢。其二在服務器上配置好監聽程序。其三是客戶端配置好相應的tnsnames.ora。
在配置服務器端監聽程序時要注意幾點:
1、在服務器上的/etc/hosts文件中需要有127.0.0.1 localhost 這一條.默認情況下是有的。若沒有則在啟動監聽器是會報TNS-12537:TNS:connection closed的錯誤.同時最好添加上你的服務器IP 主機名。
2、配置監聽器時可以使用netca或者直接寫配置文件listener.ora也行
# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
)
其中的HOST最好使用IP,主機名可能會發生改變——影響較多。
客戶端的配置主要的是tnsnames.ora這個文件
CENTOS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
(CONNECT_DATA =
(SID = centos)
(SERVER = DEDICATED)
)
)
其實也沒什么東西
對於sqlnet.ora這個文件中的NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)這個參數,其中EZCONNECT是oracle10G新加的,好像是用來快速連接的。使用主機名Easy的連接掉服務器。不用TNSNAMES的方式連接。
所有的設置都弄好了,如果你還是發現在客戶端(Windows)不能連接到服務器端(Linux),查看服務器上的防火牆對oracle的1521端口是否開放。不是很重要的練習用的機子可以直接將防火牆關閉。
1) 永久性生效,重啟后不會復原
開啟: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啟后復原
開啟: service iptables start
關閉: service iptables stop
最后在說下在排錯時用到的一些命令:lsnrctl (start、stop、status)、tnsping (IP/主機名)、netstat -anp (查看端口)、telnet等。