很纠结的导数据问题ora-12524地址被占用

今天从sqlserver2005数据库导入到oracle 10g数据库中,开始报 jvm堆内存不够,修改最大内存后还是报错。

 

报的是网络连接中断,每次只能导4000多条数据,20多2万的数据得手动执行多少次才行啊?手动执行也就罢了,可气的是

 

每次执行中断后还得等一会才能继续导数据,纠结了一个多小时后偶尔发现oracle报错为 ora-12542: tns地址被占用,有个正

 

常的报错提示还算可以,上网找了找原因,重要找到原因。

 

这主要是由于 操作系统的 临时端口 不够用而引起的。 一般系统的 临时端口为 1024-5000,这在多用户的环境下,3000多

 

个oracle链接就用光了。由于每个链接断开以后,还要有一个等待时间,例如在 windows 系统中,这个时间是 120秒。   

 

 这就导致了一个现象: 一会可以联通,一会又出现 ora-12542 address in used 。如果有临时端口可以使用,可以联通

 

oracle;如果暂时端口没有了,就连不通了。  

 

 一下是在 windows 系统下的解决办法。 

 

  1 进入注册表编辑器(regedit),在

 

HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Tcpip\Parameters 里,编译-> 添加->

 

MaxUserPort (类型 REG_DWORD ), 值中填写 65534,(可以的范围是5000-65534). 

 2 退出 注册表编辑器,重新启动机器.  

 

  这样设置, 临时端口的范围从 1024-5000,增大到 1024-65534, 足够一般用户的使用,不会再出现ora-12542.  

 

  其他系统也可以做类似的设置.  

 

 

注意:win7系统默认的临时端口比xp默认的临时端口要多,亲自试过,所以大家都用win7旗舰版吧!!!

你可能感兴趣的:(jvm,oracle,windows,XP)