在安装了oracle 11g后,发现遇到问题,总是在隔一天后出现,如果时间相对短,重新用工具连接,那么出现ORA-12518 TNS: 监听程序无法分发客户机连接;原来的已连接的web及应用程序都可以访问相关数据库; 如果时间相对长,重新用工具连接,出现:ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available
原来已连接的web及应用程序仍都可能访问相关数据库,不知如何解决这个问题
运行环境:windows 2003 32位系统, Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Productionlistener.ora
DIRECT_HANDOFF_TTC_LISTENER = OFF
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = E:\app\zhongqi\product\11.1.0\db_1)
      (SID_NAME = orcl)
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
      )
    )
  )SQLNET.oraSQLNET.AUTHENTICATION_SERVICES= (NONE)NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)tnsname.oraORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

解决方案 »

  1.   

    补充一下,echo %ORACLE_HOME% 和echo %ORACLE_SID%都是对的
      

  2.   

    ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-27101两个启动异常了
      

  3.   

    或者查看 show parameter local_listener
    看看 local listener 有没有值 ,如果没有 则如下设置(例子)
    SQL> alter system set local_listener='(ADDRESS =(PROTOCOL=TCP)(HOST=10.238.2.2)(PORT=1521)(SID=orcl))';
      

  4.   

    SGA不够了.
    调高memroy_target参数,
    alter system set memory_target=1024M
    然后重启oracle。
      

  5.   

    我刚看了 memory_max_target=820M:而且是不能修改的,memory_target=820M;改不上去了,sga就是memory_target吗?
      

  6.   

    很明显是内存不够用了。
    每个链接耗掉的内存使得share memery不够用。
    扩一下sga。或者你把链接个数控制下
      

  7.   

    修改memory_max_target参数必须指定scope=spfile,例如
    alter system set memory_max_target=2048M scope=spfile;
    然后需要重启数据库后生效。
    memory_target=sga+pga,oracle会帮你自动分配合适的sga和pga的大小。
      

  8.   

    把oracle的日志文件清理下试一试.
      

  9.   

    我认为可能是sessions和processes分配不足导致此错误。因为应用程序的一些操作可能会导致SESSIONS数暴增,从而使得sessions参数爆满而无法接收新的连接请求。可通过查看sessions和processes的值来确定是否该问题引起
    show parameter sessions;
    show parameter processes;若是该参数引起,则可以将processes适当扩大,sessions一般设置为processes的1.1倍然后重启数据库再看看...