监听这个东西,没接触过还真不知道是什么用的,一个软件装好之后,不应该自动配置好本地和远程的监听吗?配置监听的什么参数在软件中是获取不到的吗?以我微末的经验来看(后面是胡说八道),配置监听的过程中,主要是下一步,下一步,然后输个host,端口,计算机名,SID,这些东西在软件都可以获取到,不就是在host的时候,可以用计算机名,localhost,和ip,对应本地和远程的客户端,但是都有ip就可以达到这个目的了。计算机名,端口号,SID,完全可以在系统和软件中获取到的,为什么要搞个这么复杂的东西。 -----吐槽完毕---- 在windows上,配置监听,有窗口应用程序Net Manager的,直接双击,选好listener,配上host和sid,本地就好了,不过需要到%ORACLE_HOME%/network/admin/tnsnames.ora,配上远程的监听,重启监听服务就好了。
VENN = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = global.server.name) ##也可以换成(SID =**SID.name**) ) )
看到几个教程说,这个文件不能有空格和空行,不然会出错,我没遇到过
一般来说oracle数据库是装在Linux上的,Linux系统不要桌面环境,会比windows 快、安全、稳定,这是Linux和Unix占领服务器市场的最大原因,当然这些也是数据库的追求。还有就是oracle本来就很占资源,装在windows上,加上系统,占的资源就更多了。 --今天好冷,手指很冰,为什么废话还是这么多--
重点到了
oracle 配置监听运行 > netca 命令 后面是图像界面的操作,除了在选择你要做什么的界面,注意一下是要 “add” “reconfigure” “delete” “rename”,其他都是下一步,端口不建议换。 接下来就是修改%ORACLE_HOME%/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBANAME = global.server.name) (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1) # oracle 安装路径 (SID_NAME = sid.name) ) )
和 文件%ORACLE_HOME%/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. LISTENER_VENN = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) VENN = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = global.server.name) ) )
注意把ip、SERVICE_NAME 、SID_NAME 和ORACLE_HOME 换成你本地的。 记得把oracle客户端目录下的tnsnames.ora 文件中加上:
venn = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = global.server.name) ) )
注意ip和SERVICE_NAME,如果服务器端的CONNECT_DATA配的是SID,那客户端也要配SID
还有一个需要注意的是防火墙,忘了开放指定端口(1521)或者关闭防火墙,远程客户端一直连不上oracle数据库也是一件很悲剧的事情。 windows怎么关防火墙或开发指定端口(1521)就不说了
CentOS6.5 查看防火墙状态(以下命令都是在root下执行) # service iptables status 启动防火墙 # service iptables start 关闭防火墙 # service iptables stop 重启防火墙 # service iptables restart
我这边开了1521端口还是提示连接超时,执行了一下命令 # /etc/rc.d/init.d/iptables save,然后/etc/sysconfig/iptables文件变成这样了:
# Generated by iptables-save v1.4.7 on Fri Oct 28 04:27:35 2016 *filter :INPUT ACCEPT [30:2166] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [19:2108] COMMIT
规则全变了,跟关了防火墙没什么区别了,不可取。
###科普一下oracle客户端: 就我用过的,除了oracle自己的客户端,sql developer 本身就是oracle的客户端以外,pl/sql developer 、toad和navicat 本身只是sql工具,是不能直接连数据库的,需要oracle客户端来连接oracle数据库。