@?/rdbms/admin/addmrpt
awr报告:
@?/rdbms/admin/awrrpt
awr比较报告:
@?/rdbms/admin/awrddrpt.sql
ash报告:
@?/rdbms/admin/ashrpt
RAC 环境 AWR 信息的对比展现
@?/rdbms/admin/spawrrac.sql
oracle11g 实时监控
v$session
SQL_EXEC_START:SQL执行的开始时间
SQL_EXEC_ID:执行ID
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select sid,username,sql_exec_start,sql_exec_id from v$session where sql_exec_id is not null;
在oracle11g之前,长时间运行的SQL可以通过v$session_longops来观察某个操作执行时间超过6秒
而在oracle11g中,当SQL并行执行时,会立即被实时监控到,或者当SQL单进程运行时,如果消耗超过5秒的
CPU或IO时间,它也会监控到,监控记录到v$session_monitor
SQL> show parameter control_manage
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access string DIAGNOSTIC+TUNING
实时 SQL 监控需要 statistics_level 初始化参数设置为 TYPICAL 或 ALL
show parameter statistics_level
同时 CONTROL_MANAGEMENT_PACK_ACCESS 参数必须是 DIAGNOSTIC+TUNING
set long 10000000
set longchunksize 10000000
set linesize 200
select dbms_sqltune.report_sql_monitor from dual;
通常情况下,提供SQL_ID等少数参数,即可生成报告
首先:select sql_id from v$sql_monitor;
生成报告:
set long 10000000
set longchunksize 10000000
SET LINESIZE 1000
SET PAGESIZE 0
SET TRIM ON
SET TRIMSPOOL ON
SET ECHO OFF
SET FEEDBACK OFF
SELECT DBMS_SQLTUNE.report_sql_monitor(
sql_id => 'g5g3vmv6dvwa6',
type => 'HTML',
report_level => 'ALL') AS report
FROM dual;
从 V$SQLTEXT 中追踪
select sid,event,p1,p1text from v$session_wait;
捕获相关 SQL
SELECT sql_text FROM v$sqltext a
WHERE a.hash_value = (SELECT sql_hash_value FROM v$session b WHERE b.SID = '&sid')
ORDER BY piece ASC;
观察系统状况,原大量等待消失:
select sid,event,p1,p1text from v$session_wait where event not like 'SQL%';
简单总结一下:
l? V$SESSION 代表数据库活动的开始,是为源起;
l? V$SESSION_WAIT 视图用以实时记录活动 SESSION 的等待情况,是当前信息;
l? V$SESSION_WAIT_HISTORY 是对 V$SESSION_WAIT 的简单增强,记录活动
SESSION 的最近 10 次等待;
l? V$ACTIVE_SESSION_HISTORY 是 ASH 的核心,用以记录活动 Session 的历史等待
信息,每秒采样 1 次,这部分内容记录在内存中,期望值是记录 1 个小时的内容;
l? WRH$_ACTIVE_SESSION_HISTORY 是 V$ACTIVE_SESSION_HISTORY 在 AWR
的存储地,V$ACTIVE_SESSION_HISTORY 中记录的信息会被定期(每小时 1 次)
地刷新到负载库中,并缺省保留一个星期用于分析;
l? DBA_HIST_ACTIVE_SESS_HISTORY 视图是 WRH$_ACTIVE_SESSION_HISTORY
视图和其他几个视图的联合展现,我们通常通过这个视图进行历史数据的访问。
AWR 的信息需要独立存储占用空间:
select OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,SPACE_USAGE_KBYTES/1024 "MB"
from V$SYSAUX_OCCUPANTS WHERE OCCUPANT_NAME LIKE '%AWR%';
顶级等待事件
SELECT * FROM (SELECT event, time_waited FROM v$system_event ORDER BY time_waited DESC)
WHERE ROWNUM < 11;
select event,count(*) from gv$session gropu by event;