ORACLE过一天后,已有的连接有效,但新连接有问题
在安装了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 - Production
listener.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.ora
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsname.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
[最优解释]
很明显是内存不够用了。
每个链接耗掉的内存使得share memery不够用。
扩一下sga。或者你把链接个数控制下
[其他解释]
修改memory_max_target参数必须指定scope=spfile,例如
alter system set memory_max_target=2048M scope=spfile;
然后需要重启数据库后生效。
memory_target=sga+pga,oracle会帮你自动分配合适的sga和pga的大小。
[其他解释]
SGA不够了.
调高memroy_target参数,
alter system set memory_target=1024M
然后重启oracle。
[其他解释]
ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-27101两个启动异常了
[其他解释]
或者查看 show parameter local_listener
看看 local listener 有没有值 ,如果没有 则如下设置(例子)
SQL> alter system set local_listener='(ADDRESS =(PROTOCOL=TCP)(HOST=10.238.2.2)(PORT=1521)(SID=orcl))';
[其他解释]
补充一下,echo %ORACLE_HOME% 和echo %ORACLE_SID%都是对的
[其他解释]
不知有用没,改了下
[其他解释]
修改本地listener是不行的
------其他解决方案--------------------
我刚看了 memory_max_target=820M:而且是不能修改的,memory_target=820M;改不上去了,sga就是memory_target吗?
[其他解释]
把oracle的日志文件清理下试一试.
[其他解释]
我认为可能是sessions和processes分配不足导致此错误。因为应用程序的一些操作可能会导致SESSIONS数暴增,从而使得sessions参数爆满而无法接收新的连接请求。可通过查看sessions和processes的值来确定是否该问题引起
show parameter sessions;
show parameter processes;
若是该参数引起,则可以将processes适当扩大,sessions一般设置为processes的1.1倍
然后重启数据库再看看...