问题是这样:客户端想访问不在同一网段上的数据库服务器,中间有一防火墙。在防火墙里加上规则限制,需要哪些服务就开哪些端口。打开了1521端口,但是连接数据库失败。如果防火墙不加规则,全部打开,那么连接数据库成功。
.....后来经查证发现是这样:Oracle客户端连接服务器(win2000 sever,oracle9i),首先去找1521端口,服务器的1521端口再向server process进程发出请求,并返回一个随机端口,返回给客户端,客户端再来连接这个端口。这样就给服务器上的防火墙设置带来了麻烦,这个端口是随机的,如何开放?然后我们查了很多资料,说是要用connection manger,还要修改客户端的TNSNAMES.ORA文件,还有服务器端的cman.ora文件,还有什么来着........,东西很多,而且都是英文的,很晦涩,不是非常明白.
朋友,如果你会的话一定要可怜可怜我啊........
.....后来经查证发现是这样:Oracle客户端连接服务器(win2000 sever,oracle9i),首先去找1521端口,服务器的1521端口再向server process进程发出请求,并返回一个随机端口,返回给客户端,客户端再来连接这个端口。这样就给服务器上的防火墙设置带来了麻烦,这个端口是随机的,如何开放?然后我们查了很多资料,说是要用connection manger,还要修改客户端的TNSNAMES.ORA文件,还有服务器端的cman.ora文件,还有什么来着........,东西很多,而且都是英文的,很晦涩,不是非常明白.
朋友,如果你会的话一定要可怜可怜我啊........
这个问题只会在WIN平台出现,UNIX平台会自动解决。
解决方法:
在服务器端的SQLNET.ORA应类似
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
TRACE_LEVEL_CLIENT = 16
注册表的HOME0加[HKEY_LOCAL_MACHINE]
USE_SHARED_SOCKET=TRUE
检查一下防火墙关于ftp的设置把。有些防火墙有这种特殊端口设置的。具体要问问厂家才行。
你说的这种方法是适用于oracle8i的阿,对于9i并不适用
在防火墙中应该有一组sql net的选项的,将之开放就可以了.
在防火墙中应该有一组sql net的选项的,将之开放就可以了.
在防火墙中应该有一组sql net的选项的,将之开放就可以了.
不过应该都有sql net这种类似的选项的
你说的这种方法适用于oracle8i,也就是共享套接字USE_SHARED_SOCKET方法,对于9i并不适用,
“需要在MTS模式下(共享模式) ”及其后面文字是对USE_SHARED_SOCKET的补充还是另一种解决这个问题的方法,请明示。万分感谢......
USE_SHRED_SOCKET=TRUE,即可
方法二:1、首先将数据库实例改为SHARE SERVER模式
2、以SYSDBA登录SQLPLUS,通过SQLPLUS生成系统当前的参数设置文件pfile:create pfile='d:\init.ora' from spfile;
3、修改d:\init.ora文件,在其中增加(用editplus编辑):*.service_names='your service name'和*.dispatchers='(address=(protocol=tcp)(host=localhost)(port=1521)(dispatchers=1)'
4、生成新的SPFILE:create spfile from pfile='d:\init.ora';
5、重启动数据库。
6、在防火墙中开放1521端口。
cmantest = (description = (address_list = (address = <- first address is to CMAN (protocol=tcp) (host=hostname or ip of cman) (port=1610) ) (address= <- second address is to Listener (protocol=tcp) (host=hostname or ip of listener) (port=1521) ) ) (connect_data = (sid = sidname)) (source_route = yes)
回来的端口是动态的,像ftp一样。大多数fw都支持ftp,但支持oracle的不是大家都有。
连接公网上的一个oracle数据库,客户端再一个公司内网里,对数据库的连接如果2-3分钟没有操作就提示通道文件已经结束。请教各位应该如何解决???是不是防火墙的问题????这样写数据库连接部分用啥办法能让这个连接一直有效??