重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Oracle中的IO问题及其解决思路
创新互联建站长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为浮山企业提供专业的成都网站制作、做网站,浮山网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
对于负载偏重点不同,我们可以简单的将数据库系统分为CPU负载系统(CPU Bound System)和IO负载系统(IO Bound System)。顾名思义,CPU负载系统的资源瓶颈在于CPU,而IO负载系统的瓶颈在于磁盘IO。
我们可以通过操作系统的一些命令来确认一个系统是否是存在IO负载。在UNIX下,可以使用"iostat"或者"sar -d"来看系统的IO情况;在windows下,可以通过系统的性能监视器查看,但由于性能监控器中看到的IO是静态的IO总量信息,并不直观,因此也可以用本站的TopShow工具来查看实时的IO信息。
在UNIX系统下,发现CPU IDEL很低并不一定代表这是一个CPU负载系统。一个IO负载系统在表面上看CPU的IDEL值也可能很低
两个办法:一、优化硬件(CPU、内存和硬盘等),优化I/O子系统,增强IO读写能力;第二、优化SQL语句。第一种办法治标不治本,建议用第二种办法,你的截图里边那几个几百秒的SQL语句是有问题的,要进一步优化。查看一下执行这些语句是在哪些页面,查询了什么数据,数据量多大,判断一下业务逻辑,然后再去优化。
(如有帮助,请采纳,谢谢)
有!只不过不是你的思路,查询条件是不定的,所以你组合索引使得建立的索引直接满足所有查询条件肯定是不现实的。
那么就从你要的目的着手。你想减少表的I/O访问。使用Lucene (你自己可以研究下)来把oracle的表创建成索引文件。以后直接使用这个索引文件就行了,不用再访问oracle了。
希望可以帮到你
当在 Oracle Database 10g 中回滚长期运行的事务时,无论是并行实例恢复会话还是用户执行的回滚语句。您所需做的一切就是查看视图 V$SESSION_LONGOPS 并评估还需要多少时间。
项目中该数据库每月定期要导入大量数据。通过对导入数据期间LGWR switch出现频率的观察,发现LGWR switch切换过于频繁,需要对redo File进行优化,建议设置16个group,每个group member大小为200M。
另外,需要对导入脚本进行优化,
imp dw/cnfj_bts_dw file=call_gaa_551_200906.dmp full=y ignore=y feedback=50000 buffer=10240000 commit=y indexes=n log=’/home/imp200909.log’;附录:
1、停止并行回滚,减少IO请求,快速提升系统响应能力
如果你没时间等待回滚进程完成回滚操作,可根据如下提示进行操作。
最后在google上根据ora_p001, wait for a undo record 的关键字,找到了一些信息,以下信息引起了我的注意:
Oracle工程师首先怀疑是临时表空间空间不足导致,经检查临时表空间没有空间不足的情况,仔细观察日志发现重做日志文件不断切换,分析应该是有较多的事务没有完成提交或者有较多没有提交的事务完成回滚。现在面临的问题是我们没有很多时间去等待所有的事务去完成回滚或提交。解决问题的思路就是如何尽快结束这些事务的回滚或提交。
1) 查看spfile文件中是否有fast_start_parallel_rollback参数的设置,检查结果G网数据库没有设置该参数。如果没有显式设置,则该参数的默认值为low。修改该参数值为false
2) 将数据库启动到nomount状态:startup nomount
3) 修改改参数值:alter system set fast_start_parallel_rollback = FALSE scope=spfile
4) shutdown immediate关闭数据库
5) startup启动
6) 查看该参数是否生效:show parameter fast_start_parallel_rollback
7) 等待一段时间
8) shutdown immediate数据库可以关闭