监控oracle系统的性能

来源:互联网 发布:测试网络ping 编辑:程序博客网 时间:2024/05/29 16:43
监控系统的性能  ---oracle database 11g 性能优化攻略
1.awr报告
把数据库的历史性能信息保存起来,要开启awr报告,必须设置参数statistics_level为typical或all
存储在awr报告中的信息类型包括如下:
与对象访问和使用相关的统计信息
时间模型统计信息
会话统计信息
系统统计信息
sql语句
2.修改awr保留时间和信息收集时间间隔
查询保留时间和时间间隔:
SELECT EXTRACT(day from retention) || ':' ||
       EXTRACT(hour from retention) || ':' ||
       EXTRACT (minute from retention)  awr_snapshot_retention_period,
       EXTRACT (day from snap_interval) *24*60+
       EXTRACT (hour from snap_interval) *60+
       EXTRACT (minute from snap_interval) awr_snapshot_interval
FROM dba_hist_wr_control;
修改保留时间和收集时间间隔
exec dbms_workload_repository.modify_sanpshot_setting(retention=>43200,interval=>30)
3.手动生成awr报告
通过执行$ORACLE_HOME/rdbms/admin/awrrpt.sql脚本或者通过调用oracle提供api中的dbms_workload_repository中的awr_report_text或者awr_report_html
4.通过企业管理器生成一份awr报告
5.为一条sql生成一个awr报告
执行$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
6.为数据库创建统计基线
固定基线
移动基线
7.通过企业管理器创建awr管理基线
8.管理awr统计信息库
通过dbms_workload_repository包管理统计信息库
重命名一个基线
删除一个基线
删除一个快照范围
exec dbms_workload_repository.rename_baseline('oldname','newname');
exec dbms_workload_repository.drop_baseline('name')
exec dbms_workload_repository.drop_snapshot_range(num1,num2)
9.自动创建基线
10.快速分析awr报告输出
数据库时间
实例效率
耗时排在前5的等待时间
top sql
11.手工获取会话的信息
ASH(活动会话历史)通过执行ashrpt.sql
12.从企业管理器获取ash信息
13.从数据库字典中获取ash信息
v$active_session_history视图可以用来获取当前或者最近数据库中的会话
v$dba_hist_active_sess_history用来存取ash历史信息

过去15分钟内数据库中的所有等待事件以及他们总的等待时间
SELECT s.event, sum(s.wait_time + s.time_waited) total_wait
  FROM v$active_session_history s
 WHERE s.sample_time between sysdate - 1 / 24 / 4 AND sysdate
 GROUP BY s.event
 ORDER BY 2 desc;

过去15分钟内使用最多cpu资源的前5位会话
column username format a12 
column module format a30
  SELECT *
    FROM (SELECT s.username, s.module, s.sid, s.serial#, count(*)
            FROM v$active_session_history h, v$session s
           WHERE h.session_id = s.sid
             AND h.session_serial# = s.serial#
             AND session_state = 'ON CPU'
             AND sample_time > sysdate - interval '15' minute
           GROUP BY s.username, s.module, s.sid, s.serial#
           ORDER BY count(*) desc)
   where rownum <= 5;

过去15分钟内使用最多cpu资源的前5位数据库对象列表
SELECT *
  FROM (SELECT o.object_name,
               o.object_type,
               s.event,
               SUM(s.wait_time + s.time_waited) total_waited
          FROM v$active_session_history s, dba_objects o
         WHERE s.sample_time between sysdate - 1 / 24 / 4 and sysdate
           AND s.current_obj# = o.object_id
         GROUP BY o.object_name, o.object_type, s.event
         ORDER BY 4 desc)
 WHERE rownum <= 5;

过去一天中使用资源最多的用户
SELECT *
  FROM (SELECT u.username,
               h.module,
               h.session_id sid,
               h.session_serial# serial#,
               count(*)
          FROM dba_hist_active_sess_history h, dba_users u
         WHERE h.user_id = u.user_id
           AND session_state = 'ON CPU'
           AND (sample_time between
               to_date('2011-05-15:00:00:00', 'yyyy-mm-dd:hh24:mi:ss') AND
               to_date('2011-05-15:23:59:59', 'yyyy-mm-dd:hh24:mi:ss'))
           AND u.username != 'SYS'
         GROUP BY u.username, h.module, h.session_id, h.session_serial#
         ORDER BY count(*) desc)
 where rownum <= 5;
使用最多的对象
SELECT *
  FROM (SELECT o.object_name,
               o.object_type,
               s.event,
               SUM(s.wait_time + s.time_waited) total_waited
          FROM dba_hist_active_sess_history s, dba_objects o
         WHERE s.sample_time between
               to_date('2011-05-15:00:00:00', 'yyyy-mm-dd:hh24:mi:ss') AND
               to_date('2011-05-15:23:59:59', 'yyyy-mm-dd:hh24:mi:ss')
           AND s.current_obj# = o.object_id
         GROUP BY o.object_name, o.object_type, s.event
         ORDER BY 4 desc)
 WHERE rownum <= 5;
0 0
原创粉丝点击