网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.让数据库“安居”到Linux上.
.如何学习Oracle.
.Oracle常用脚本 Script.
.在linux上单机模拟Oracle 10g RA.
.将一台Oracle7数据导入到另一台9.
.oracle817视图中object_type的&#.
.如何查看各个表空间占用磁盘情况.
.Oracle弱智900问一.
.调整Oracle数据库服务器的性能.
.ORACLE9i新特性 索引跳跃式扫描的.
.Oracle如何配置逻辑备用数据库.
.ora-600[12333]错误小结及跟踪方.
.移植Oracle是这样做的.
.如何应对ORACLE面试中的问题技术.
.[Oracle]利用开源工具实现自己的.
.TestKing Oracle 1z0-007 V12.
.尝试一些UNIX的提示和技巧.
.较好的重新启动数据库的步骤.
.JDBC+Hibernate将Blob数据写入Or.
.Oracle诊断案例4-Sql_trace.

Oracle进程导致CPU 100%解决步骤

发表日期:2008-2-9


  Oracle进程导致CPU 100%解决步骤   1-- 检查系统   sar -u 5 5   2-- 看谁在用CPU   topas   ps -ef grep ora #检查第四列,C的大小(unit,100 per cpu)   3-- 检查CPU数量
   
  /usr/sbin/bindprocessor -q
   
  lsattr El proc0
   
  4-- 2种可能:
   
  1) A Background (instance) process
   
  2) An oracle (user) process #此种可能最大。
   
  5-- 假如是用户进程:那么高CPU的主要原因有:
   
  Large Queries, Procedure compilation or execution, Space management and Sorting
   
  5.1-- 查看每个Session的CPU利用情况:     select ss.sid,se.command,ss.value CPU ,se.username,se.program
    from v$sesstat ss, v$session se
    where ss.statistic# in
    (select statistic#
    from v$statname
    where name = 'CPU used by this session')
    and se.sid=ss.sid
    and ss.sid>6
    order by ss.sid   5.2-- 比较上述Session,看那个session的CPU使用时间最多,然后查看该Session的具体情况:     select s.sid, event, wait_time, w.seq#, q.sql_text
    from v$session_wait w, v$session s, v$process p, v$sqlarea q
    where s.paddr=p.addr and
    s.sid=&p and
    s.sql_address=q.address;   5.3-- 得到上述信息后,查看相应操作是否有hash joins 和 full table scans。假如有hash joins 和 full table scans那么必须创建相应的Index或者检查Index是否有效。
   
  另外必须检查是否有并行的查询存在和同一时刻有多个用户在执行相同的SQL语句,假如有必须关闭并行的查询和任何类型的并行提示(hints);假如查询使用intermedia数据,那么为了减少总的Index大小,必须限制使用Intermedia的Worldlist。(try restricting the Wordlist that intermedia uses to help redUCe the total indexsize)。
   
  6-- 上述方案只能根据已经运行完成的操作,对于正在执行的长时间操作只能等操作完成后才能检测得到。因此我们可以通过另外一个很好的工具来检测正在运行的长时间操作语句。v$session_longops,这个视图显示那些操作正在被运行,或者已经完成。每个process完成后会刷新本视图的信息。
   
  7-- 怎样寻找集中使用CPU的Process:
   
  很多时候会发现有N个Process在平均分享着CPU的利用率,这种情况唯一的可能性就是这些Process在执行着相同的Package或者Query.
   
  这种情况:建议通过statspack,在CPU高利用率额时候运行几个快照,然后根据这些快照检查Statspack报告,检查报告中最TOP的Query。然后使用 sql_trace and tkprof 工具去跟踪一下。同时检查buffer cache 的命中率是否大雨95%。
   
  同时在报告中还需要检查一下table scans (long tables),看是否在报告生成期间有存在全表扫描。
   
  8-- 另外还有一些不是非凡重要的,但是也必须关心检查的参数可能消耗CPU。
   
  parallel query 并行查询:
   
  并行查询最好用于数据仓库的环境下,那种情况任何时候只有几个用户在同时使用。在一个联机事务处理环境中,当同时许多用户去并行查询一个数据库的巨大表时候,会导致CPU的爆满。所以最好在数据库的级别关闭并行查询:设置参数如下:     parallel_min_server = 0    parallel_max_server = 0    parallel_automatic_tuning = false;
  在配置上述参数后,假如SQL语句中使用的并行的提示,那么还是有可能会出现并行查询的情况,所以还需要继续监视相关的SQL语句,假如有就去除提示,以达到目的。

上一篇:Oracle SQL内置函数大全(一) 人气:1107
下一篇:oracle使用命令行导入导出方案 人气:832
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐