之前也修改过oracle的处理线程数,
orastack oracle.exe  500000
orastack tnslsnr.exe 500000
orastack svrmgrl.exe 500000
orastack sqlplus.exe 500000 还对oracle的dispatcher进行过修改,还对window的boot.ini设置过内存。等等,用过好多方法,还是出这个TNS错误,请教大家有什么好的建议和解决办法?谢谢了

解决方案 »

  1.   

    以前有碰过这个TNS-12518: TNS: 监听程序无法分发客户机连接 错误是因为 ,oracle 的内存超出了 系统的要求
    32位window系统下, 通过修改配置,单个进程能支撑到3g左右的内存
      

  2.   

    select  a.SID, a.PROGRAM,b.PGA_USED_MEM/1024/1024||'M' as "占用内存",a.MACHINE,a.MODULE,a.USERNAME,b.PGA_USED_MEM,b.PGA_ALLOC_MEM,b.PGA_FREEABLE_MEM,b.PGA_MAX_MEM   from v$session a ,v$process b where a.PADDR= b.ADDR and a.USERname is not null
    order by b.PGA_USED_MEM desc;
     看看占用内存情况
      

  3.   

    两个实例都启动了吗
    你这里给的参数是哪个实例的?
    如果两个实例的sga+pga都是1.5G
    操作系统要占掉将近1G空间,连接也需要内存的,内存相当吃紧
      

  4.   


    是两个实例都启动的。
    这些参数是分实例的吗?我怎么觉得是两个实例共用的?还是我查看的方法不对啊?
    如果是分开设置的,应该如何指定实例从而设定其下的pga/sga啊?
      

  5.   

    在cmd中,给环境变量ORACLE_SID设不同的值,可以使用sqlplus来访问各自的实例
    如果监听正常,可以使用不同的服务名或sid来连接到对应实例
    或者数据库用的参数文件是Initfile,可以直接用记事本打开查看不过看起来基本可以定位到内存问题上。解决方法要么打开win32的3gb限制,增加内存,要么降低sga和pga的大小
    其实我觉得把其中一个数据库移到别的机器上运行更靠谱一些
      

  6.   

    把两个的alert的日志贴上来吧。