为什么我的oracle占用内存过高特别高

解决oracle服务占用内存过高的问题
解决oracle服务占用内存过高的问题,通常我们在自己电脑上搭建项目环境时,都免不了要安装。不管你硬件多强悍,都会发现,Oracle服务一旦启用,内存立马吃紧。笔者内存8G,启动一个VS,启动一个Eclipse,启动一个,开一个Tomcat,再开一个PL/SQL,内存基本就耗去了一大半。再启用Oracle服务,内存马上飙升五六百兆,程序便会频繁出现假死。 其实这是因为安装Oracle时,为了均衡电脑性能和性能,默认内存大小为物理内存的1/8,自身内存比较大时,oracle所占的内存也会变大。而通常,我们自己的环境并不需要分配那么大的内存来支持Oracle,这种情况下,我们可以通过修改sga值来减少中oracle占用内存过大问题。
用dba身份进入oracle,本人使用sqlplus修改(sqlplus sys/密码 as sysdba),若使用PL/SQL,可以在Command Window执行:
(1) --显示内存分配情况
(2)alter system set sga_max_size=200m scope= --修改占用内存的大小
修改后重启Oracle服务,再查看资源管理器,Oracle占用资源便会降至200M以下。不过如此修改所付出的代价就是数据库性能的下降,因此修改时不宜调得太小。博客访问: 4440528
博文数量: 642
博客积分: 10821
博客等级: 上将
技术积分: 11441
注册时间:
认证徽章:
专注与操作系统相关的云计算,linux,openstack,spark, hadoop
分类: Oracle 18:26:00
1、操作 (oracle使用内存约等于 SGA+PGA,所以可以减少SGA与PGA解决你的问题,生产库慎用)
alter system set sga_max_size=100m scope= --减少SGA大小,静态参数,重启后生效
alter system set sga_target=80m scope= --动态参数;oracle推荐:启动时修改此参数,不要动态设置此参数
alter system set pga_aggregate_target=40m sope= ---减少pga大小
SGA_MAX_SIZE的大小不是随意指定的,必须满足一定条件的。
sga_max_size=100M,必须满足SGA所有组件的最小和;至少满足db_cache_size,log_buffer,shared_pool_size,large_pool_size,java_pool_size总和的大小)
oracle内存结构介绍:
Introduction to Oracle Memory Structures
Oracle uses memory to store information such as the following:
Program code
Information about a connected session, even if it is not currently active
Information needed during program execution (for example, the current state of a query from which rows are being fetched)
Information that is shared and communicated among Oracle processes (for example, locking information)
Cached data that is also permanently stored on peripheral memory (for example, data blocks and redo log entries)
The basic memory structures associated with Oracle include:
System Global Area (SGA), which is shared by all server and background processes.
Program Global Areas (PGA), which is private to each server an there is one PGA for each process.
1.sqlplus “/ as sysdba"& 2. 3.create pfile='d:/cj.ora'& 然后去你的oracle安装目录
  找一个init数据库名。ora这样一个文件
  把几个oracle内存参数改小点
  一个2G的内存是如下配置的:
  *.sga_max_size=712M
  *.large_pool_size=8M
  *.shared_pool_size=250M
  *.sort_area_size=0.5M
  *.db_cache_size=350M
  然后shutdown数据库
  1.& 2. 3.create spfile from pfile='d:/cj2.ora';& 4. 5.& 然后启动,就可以了。
  以上就是调整oracle内存参数,减少数据库内存占用的方法介绍。
阅读(13235) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。oracle进程一直占内存问题 - ITeye问答
服务器内存2G,orable版本817,, 客户端用delphi写了一个测试程序,循环往一个表中insert数据, 循环5分钟左右,查看了一下服务器的oracle进程内存值一直在增长,基本每秒几十K的速度增长,等停止后退出程序,oracle进程占用内存占用值基本没变,等占到800M左右的时候对数据库执行查询操作都会很慢,请问是因为内存没释放的问题吗???我想程序写的肯定没问题的,该释放的都释放了。
问题1,为什么退出客户端程序后oracle进程内存还占那么多??如何释放??
问题2,当进程内存占用800M之前任何查询速度都很快,等过了800M之后查询会变的很慢,为什么
请解答,谢谢。。。
1.循环5分钟,确认数据库连接是否释放
2.在不做插入动作的前提下,看内存增长情况.如果和插入一样说明,说明没问题.
3.800M之后查询会变的很慢
& 可能ORACLE对内存的一些设定,不太清楚
很可能是数据库连接没释放的问题啊导致占资源
已解决问题
未解决问题oracle 占用内存怎么这么高_百度知道
oracle 占用内存怎么这么高
我有更好的答案
可以登录SYS用户修改Oracle的SGA等相关参数,降低内存占用,如下:按Window键和R键,输入SQLPLUS,输入 sys as sysdba,回车,接着回车。SQL&alter system set sga_max_size = 1024M scope=SQL&alter system set sga_target=1024M scope=SQL&alter system set pga_aggregate_size=256M scope=SQL&shutdown immediateSQL&startup
采纳率:62%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。oracle.exe一直占很大内存,正常服务时将近7G,服务器内存才12G,是什么原因? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。81被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答3810 条评论分享收藏感谢收起3010 条评论分享收藏感谢收起

我要回帖

更多关于 oracle占用内存很大 的文章

 

随机推荐