ORACLE 10g CPU占用率100%

eason2000 2011-04-29 01:50:22
客户原来用的9I,将数据库移植到10G上后,同时在线人数多了之后,CPU资源占用率100%,系统超慢。
请问各位大师有何方法能查找原因?
...全文
300 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
njlywy 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vber1010 的回复:]
共享一下:

SQL code

--发现那些SQL运行了大量的PARSE
  select sql_text, parse_calls, executions from v$sqlarea order by parse_calls desc;
  --SYS的总的PARSE情况
  select name, value from v$sysstat where name like ……
[/Quote]
好东西…
eason2000 2011-04-29
  • 打赏
  • 举报
回复
哪位大师能帮忙远程看看不??
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vber1010 的回复:]

共享一下:
SQL code

--发现那些SQL运行了大量的PARSE
  select sql_text, parse_calls, executions from v$sqlarea order by parse_calls desc;
  --SYS的总的PARSE情况
  select name, value from v$sysstat where name like 'pars……
[/Quote]

nice
vber1010 2011-04-29
  • 打赏
  • 举报
回复
共享一下:

--发现那些SQL运行了大量的PARSE
  select sql_text, parse_calls, executions from v$sqlarea order by parse_calls desc;
  --SYS的总的PARSE情况
  select name, value from v$sysstat where name like 'parse count%';
  --CPU空间及繁忙情况
  select * from v$osstat;
  --查看每个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 CPU desc;
  --比较一下哪个session的CPU使用时间最多,然后查看该Session的具体情况:
  select s.sid, s.event, s.MACHINE,s.OSUSER,s.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;
  ---占用CPU最高的10个Session及其SQL语句
  select s.sid,w.wait_time,w.seconds_in_wait,w.state,w.wait_time_micro,w.time_remaining_micro,w.time_since_last_wait_micro,p.USERNAME,
  status,server,schemaname,osuser,machine,p.terminal,p.program,logon_time,w.event,w.wait_class,tracefile,sql_text,last_active_time
  from v$session_wait w, v$session s, v$process p, v$sqlarea q
  where s.paddr=p.addr and
  s.sid
  in
  ( select sid from
  (
  select ss.sid
  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.value desc
  )where rownum<11
  )
  and s.sql_address=q.address;


  • 打赏
  • 举报
回复
服务器什么配置?
同时在线的用户一般是多少?
每天数据的增长量多大?
开归档了么?
……
换个服务器

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧