这几天碰到一个头痛的问题,用户那边反映oracle在重新启动时很快,但运行几天下来速度就变得越来越慢,不知道是什么问题?各位有没有碰到相同的现象?
运行环境:hp-lh6000 内存512m,硬盘9G+18G
操作系统:scounix 7.3.4
数据库 :shared pool size 100m
db_block_buffers*db_block_size=100m
回滚段 :4个,合计100m
数据量 :exp的文件600m
其中有三个表容量一百多万条记录,别的表不大.
大概就这些了.
运行环境:hp-lh6000 内存512m,硬盘9G+18G
操作系统:scounix 7.3.4
数据库 :shared pool size 100m
db_block_buffers*db_block_size=100m
回滚段 :4个,合计100m
数据量 :exp的文件600m
其中有三个表容量一百多万条记录,别的表不大.
大概就这些了.
1。把表分区
2。或者建议客户升级硬件(买高速SCSI硬盘,做RAID)
硬件若不想更换,只能每隔一段时间进行表空间整理,先将数据库导出再导入。
多半是 share_pool 的问题 看见好多的相似情况都和share_pool 有关
重新启动时块 一会儿慢 用 alter system flush shared_pool; 会不会快点
表空间不足;
ORACLE的后台任务过多
select * from v$session_wait where event not like '%SQL%';
合计100M少了,照你的数据量,怎么也得4个100M啊(恐怕也少了)
硬盘9 + 18 ,估计没有raid吧,性能差了
hp-lh6000,如果我没记错的话,cpu应该是2 x 至强550MHz 吧,比P4慢多啦,不过CPU不是主要问题,还是硬盘和内存,还有回滚段。
2,SHARED_POOL_SIZE 已经够大了,可以减小到40m看看,100m有些大,你的内存有1G吗?
3,数据才百万,你的系统足够了,肯定不是硬件问题。
楼上很多建议不错,查出原因才好解决。
1、sql语句,在某个客户端打开sql plus,分别执行insert、update、delete和select(加条件和不加任何条件)如果发现执行insert、update、delete时,速度明显慢,则需要仔细察看索引、视图、触发器等是否合理,不合理的改掉;
如果发现select语句慢,说明索引或回滚段有问题,或者索引设置不合理,如重复建立索引;或者回滚段太小,并发用户多时,影响了速度。2、调整数据库参数
shared pool size和db_block_buffers*db_block_size按参考值中的中型或大型去值,参数配置文件中有参考值。
回滚段多设,如4个100m,再加一个large的,如1024m,oracle会自己管理这些空间的,不会造成浪费的。不必担心。