我的系统内存总使用量是1G,但oracle已经占了700M,有可能吗?
请问ORACLE占内存而不释放的原因有什么。怎么解决。 问题点数:100、回复次数:12Top
1 楼flowerofwind(现实很残酷)回复于 2001-11-22 10:31:42 得分 0
又可能,在参数文件里面把她内存和进程改小一点Top
2 楼kks(吃的东西太多,要用ORACLE保存)回复于 2001-11-22 10:35:34 得分 0
但是重起的时候用量很少Top
3 楼IronPromises(铁诺)回复于 2001-11-22 10:39:16 得分 0
这是有可能的.
你用的肯定是Oracle8i
Oracle8i是用Java写的.
Java本身对内存的需求就比较的大.
再加上Java的garbage collect机制有严重的缺陷.
不一定会得到收集.create的object在生命周期结束后仍然驻留内存.
因此导致消耗的内存越来越大.
办法只有在Oracle运行一段时间后将其重启.
要用Oracle,只有忍受它给你带来的不适.
Top
4 楼KingSunSha(弱水三千)回复于 2001-11-22 10:46:56 得分 50
很正常.
ORACLE是由INSTANCE自己来管理数据库的,它先从操作系统中划出一块内存, 在这块内存中的任何分配调度都有ORACLE自身来管理.这种方式和SQL SERVER就完全不相同.Top
5 楼KingSunSha(弱水三千)回复于 2001-11-22 10:50:44 得分 0
这不存在内存释放方面的问题,ORACLE的INSTANCE启动以后,无论你开多少个SESSION,运行多少SQL TRANSACTION, ORACLE本身所占用的内存永远不变. 除非你修改了启动参数中内存参数.
Top
6 楼kks(吃的东西太多,要用ORACLE保存)回复于 2001-11-22 10:51:05 得分 0
现在我的情况是,当内存升到一定的时候,数据库就会停了,我应该怎么调整Top
7 楼jassonlu(虾米)回复于 2001-11-22 11:01:30 得分 0
Oracle又不只是他的sga占用内存,还有PGA啊,你看那些session都在干什么勾当咯,有的session可能在做一些很需要内存的操作,如大表的排序和使用rman backup等。Top
8 楼jassonlu(虾米)回复于 2001-11-22 11:03:27 得分 0
to KingSunSha(弱水三千):知道如何查询 session 占用的pga大小否?Top
9 楼IronPromises(铁诺)回复于 2001-11-22 11:03:58 得分 50
ORACLE本身所占用的内存永远不变.
这句话我不同意.
其实要想证明很简单.
不停地开session去connect.
然后不停close.
我们看看Oracle的内存是不是只上不下就知道了.
不过前提是用Oracle8.16以上版本.
Top
10 楼KingSunSha(弱水三千)回复于 2001-11-22 13:16:02 得分 0
jassonlu(虾米):
PGA确实要占用内存,如果不开多线程的话,PGA里会包含堆栈和会话信息,如果打开多线程,会话信息就在SGA中而不在PGA中.通常来说,考虑服务器资源主要是SGA.
没有注意过查询PGA的状态,找了一下,V$SYSSTAT中只有PGA占用的总共空间而没有GROUP BY SESSION的信息.
SQL> select * from v$sysstat
2 where name like 'session pga%';
STATISTIC# NAME CLASS VALUE
---------- --------------------------- ---------- ----------
20 session pga memory 1 1571427024
21 session pga memory max 1 1571427024
能请教一下这么问题吗?
Top
11 楼kks(吃的东西太多,要用ORACLE保存)回复于 2001-11-23 15:18:46 得分 0
如何查询每个SESSION的内存使用量Top
12 楼flowerofwind(现实很残酷)回复于 2001-11-23 15:52:46 得分 0
弱水
v$sesstat是统计什么信息的?Top




