`
wuhuizhong
  • 浏览: 682536 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

Oracle ASH和Session Tracing

阅读更多

1.認識V$ACTIVE_SESSION_HISTORY视图

 

   从Oracle10g开始引入了V$ACTIVE_SESSION_HISTORY视图,用于查询用户活动会话的历史信息。

 

1.1.相關參數設置

 

ASH缺省每一秒收集一下活动会话的情况,间隔时间由_ash_sampling_interval 参数确定。

V$ACTIVE_SESSION_HISTORY中的数据在被新数据周期性地覆盖前保留30 分钟,当数据从这个动态性能视图中清除时,这些数据被送到活动工作负载信息库(Active Workload Repository,AWR)中,它是一个基于磁盘的信息库。被清除的ASH(活动会话历史)数据可以在 DBA_HIST_ACTIVE_SESSION_HIST视图中看到,能够看到过去的会话的等待事件,在默认状态下,AWR中的数据7天后即被清除。

 

SQL> show parameter statistics;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_use_pending_statistics boolean FALSE
statistics_level string TYPICAL
timed_os_statistics integer 0
timed_statistics boolean TRUE

 

1.2.包含的內容

 

V$ACTIVE_SESSION_HISTORY包含top wait events, top SQL, top SQL command types,top sessions等等对于诊断故障非常有用的信息。

 

SQL> desc v$active_session_history;
Name Null? Type
----------------------------------------- -------- ----------------------------
SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3) --统计数字采集的时间
SESSION_ID NUMBER
SESSION_SERIAL# NUMBER
SESSION_TYPE VARCHAR2(10)
FLAGS NUMBER
USER_ID NUMBER
SQL_ID VARCHAR2(13)
SQL_CHILD_NUMBER NUMBER
SQL_OPCODE NUMBER
FORCE_MATCHING_SIGNATURE NUMBER
TOP_LEVEL_SQL_ID VARCHAR2(13)
TOP_LEVEL_SQL_OPCODE NUMBER
SQL_PLAN_HASH_VALUE NUMBER
SQL_PLAN_LINE_ID NUMBER
SQL_PLAN_OPERATION VARCHAR2(30)
SQL_PLAN_OPTIONS VARCHAR2(30)
SQL_EXEC_ID NUMBER
SQL_EXEC_START DATE
PLSQL_ENTRY_OBJECT_ID NUMBER
PLSQL_ENTRY_SUBPROGRAM_ID NUMBER
PLSQL_OBJECT_ID NUMBER
PLSQL_SUBPROGRAM_ID NUMBER
QC_INSTANCE_ID NUMBER
QC_SESSION_ID NUMBER
QC_SESSION_SERIAL# NUMBER
EVENT VARCHAR2(64)
EVENT_ID NUMBER
EVENT# NUMBER
SEQ# NUMBER
P1TEXT VARCHAR2(64)
P1 NUMBER
P2TEXT VARCHAR2(64)
P2 NUMBER
P3TEXT VARCHAR2(64)
P3 NUMBER
WAIT_CLASS VARCHAR2(64)
WAIT_CLASS_ID NUMBER
WAIT_TIME NUMBER
SESSION_STATE VARCHAR2(7)
TIME_WAITED NUMBER
BLOCKING_SESSION_STATUS VARCHAR2(11)
BLOCKING_SESSION NUMBER
BLOCKING_SESSION_SERIAL# NUMBER
CURRENT_OBJ# NUMBER
CURRENT_FILE# NUMBER
CURRENT_BLOCK# NUMBER
CURRENT_ROW# NUMBER
CONSUMER_GROUP_ID NUMBER
XID RAW(8)
REMOTE_INSTANCE# NUMBER
IN_CONNECTION_MGMT VARCHAR2(1)
IN_PARSE VARCHAR2(1)
IN_HARD_PARSE VARCHAR2(1)
IN_SQL_EXECUTION VARCHAR2(1)
IN_PLSQL_EXECUTION VARCHAR2(1)
IN_PLSQL_RPC VARCHAR2(1)
IN_PLSQL_COMPILATION VARCHAR2(1)
IN_JAVA_EXECUTION VARCHAR2(1)
IN_BIND VARCHAR2(1)
IN_CURSOR_CLOSE VARCHAR2(1)
SERVICE_HASH NUMBER
PROGRAM VARCHAR2(48)
MODULE VARCHAR2(48)
ACTION VARCHAR2(32)
CLIENT_ID VARCHAR2(64)

 

1.3.生成ASH报表

 

V$ACTIVE_SESSION_HISTORY是生成ASH报表的来源,可以通过OEM来生成report,也可以通过Oracle新提供的一个脚本来完成这个工作,这个脚本是:$ORACLE_HOME/rdbms/admin/ashrpt.sql

 

1.4.查詢用戶在最近1小時內等待了多长时间

 

SELECT s.sid,
       s.username,
       SUM(h.wait_time + h.time_waited) "total wait time" 
  FROM v$active_session_history h, v$session s, v$event_name e
 WHERE h.sample_time BETWEEN sysdate - 1 / 24 AND sysdate
   AND h.session_id = s.sid
 group by s.sid, s.username;

 

1.5.查詢用戶在最近1小時內执行SQL等待了多长时间

 

SELECT h.user_id,
       u.username,
       sql.sql_text,
       SUM(h.wait_time + h.time_waited) "total wait time" 
  FROM v$active_session_history h,
       v$sqlarea                sql,
       dba_users                u,
       v$event_name             e
 WHERE h.sample_time BETWEEN sysdate - 1 / 24 AND sysdate
   AND h.sql_id = sql.sql_id
   AND h.user_id = u.user_id
 group by h.user_id, u.username, sql.sql_text

 

1.6.查詢在最近1小時內引起最多等待时间的資料庫物件

 

SELECT o.owner,
       o.object_name,
       o.object_type,
       SUM(h.wait_time + h.time_waited) "total wait time" 
  FROM v$active_session_history h, dba_objects o, v$event_name e
 WHERE h.sample_time BETWEEN sysdate - 1 / 24 AND sysdate
   AND h.current_obj# = o.object_id
   AND e.event_id = h.event_id
 group by o.owner, o.object_name, o.object_type

 

2.Oracle Session Tracing

 

2.1.建立用户登陆触发器设置客户端标识符

 

CREATE OR REPLACE TRIGGER LOGON_TRIGGER
AFTER LOGON ON DATABASE
DECLARE
  v_user_identifier varchar2(64);
BEGIN
  SELECT SYS_CONTEXT('USERENV', 'OS_USER') || ':' ||
         SYS_CONTEXT('USERENV', 'IP_ADDRESS')
    INTO v_user_identifier
    FROM dual;
  DBMS_SESSION.SET_IDENTIFIER(v_user_identifier);
END;
/

 

2.2.查詢會話

 

SELECT SID, CLIENT_IDENTIFIER, SERVICE_NAME, ACTION, MODULE FROM V$SESSION;

SID CLIENT_IDENTIFIER        SERVICE_NAME ACTION          MODULE
--- ---------------------------    ------------ ---------------- --------------------
150 Administrator:172.18.17.181    orcl                      PlSqlDev.exe
143 Administrator:172.18.17.181    orcl         SQL Window - New PL/SQL Developer
142 Administrator:172.18.17.181    orcl         Main session     PL/SQL Developer
 

2.3.事件的等待時間

 

select session_id,
       client_id,
       event,
       sum(wait_time + time_waited) ttl_wait_time
  from v$active_session_history active_session_history
 where sample_time between sysdate - 60 / 2880 and sysdate
 group by session_id, client_id, event
 order by 2;

SESSION_ID CLIENT_ID                    EVENT                    TTL_WAIT_TIME
---------- --------------------------- ----------------------- -------------
150       Administrator:172.18.17.181                       36493
150       Administrator:172.18.17.181 db file sequential read 8632
142       Administrator:172.18.17.181                       7372

 

2.4.總的等待時間

 

select client_id, event, sum(wait_time + time_waited) ttl_wait_time
  from v$active_session_history active_session_history
 where sample_time between sysdate - 60 / 2880 and sysdate
 group by client_id, event
 order by 1;

CLIENT_ID                EVENT                TTL_WAIT_TIME
--------------------------- ----------------------- -------------
Administrator:172.18.17.181 db file sequential read 8632
Administrator:172.18.17.181                    3865
 

2.5.查看客户端标识符

 

SQL> SELECT SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') CLIENT_IDENTIFIER
  2    FROM DUAL;

CLIENT_IDENTIFIER
-----------------------------
Administrator:172.18.17.181 

 

2.6.清除客户端标识符

 

DBMS_SESSION.CLEAR_IDENTIFIER
 

 

 

 

 

分享到:
评论

相关推荐

    Oracle 导出某时间段AWR与ASH性能报告操作日志

    ##### 1.2 ASH (Active Session History) ASH是Oracle提供的一种实时会话监控机制,它记录了数据库中的所有活跃会话的详细信息,如执行的SQL语句、等待时间、CPU使用率等。通过对ASH数据的分析,可以深入了解数据库...

    Oracle AWR与ASH性能报告深入解析

    Oracle AWR(Automatic Workload Repository,自动工作负载存储库)和ASH(Active Session History,活动会话历史)是Oracle数据库中用于性能分析和诊断的重要工具。它们为DBA提供了宝贵的性能数据,帮助优化数据库...

    Oracle 性能分析利器ASH报告收集与简析.pdf

    Oracle的Active Session History(ASH)报告是性能分析的重要工具,尤其在Oracle 11g数据库环境中。ASH报告提供了对数据库实例中活动会话的详细历史记录,帮助DBA(数据库管理员)快速定位性能问题,优化数据库操作...

    oracle报表生成器,生成AWR,ASH等报告

    Oracle报表生成器是一款专为Oracle数据库管理员设计的实用工具,它能够自动收集并分析数据库性能数据,生成AWR(Automatic Workload Repository)和ASH(Active Session History)等关键报告。这些报告对于理解...

    Oracle 10g用ASH生成性能报告

    Oracle 10g用ASH生成性能报告 Oracle 10g用ASH生成性能报告

    ash-total.sql-收集Oracle ash统计信息

    @ash_total.sql 第一个参数:几个小时之前开始的,即开始时间。 第二个参数:收集多久的ash,即收集多长时间。 第三个参数:按多少分钟分类展示。

    Oracle ASH Simulation-开源

    Oracle ASH(Active Session History)是Oracle数据库性能分析的关键组件,尤其在10g版本之后引入,用于收集关于数据库会话活动的详细信息。然而,它通常只在Oracle Enterprise Edition中提供,且需要额外的许可证。...

    awr_ash 详解

    总之,ASH和AWR作为Oracle 10g的重要特性,为DBA提供了前所未有的性能监控和调优能力,极大地提升了数据库管理的效率和效果。通过对这两个工具的深入了解和熟练运用,DBA能够更好地应对日益复杂的数据库环境,保障...

    Oracle_授权审计表Truncate权限.docx

    Oracle 授权审计表 Truncate 权限 Oracle 数据库中的授权审计表是指系统自动生成的审计表,用于记录数据库中各种...这些语句可以用于实现 Oracle 数据库中的授权审计表 Truncate 权限,提高数据库的安全性和可靠性。

    Oracle模拟ASH___下载.zip

    Oracle模拟ASH___下载.zip

    myash:简单的Oracle ASH在线查看器

    简单的Oracle ASH查看器 安装 克隆存储库 npm install && npm --prefix ./client install ./client 如果未安装Oracle客户端:从下载Instant Client Basic或Basic Light软件包并解压缩 设置LD_LIBRARY_PATH环境变量...

    ASH-Viewer:ASH Viewer提供了Oracle和PostgreSQL DB中活动会话历史记录数据的图形视图

    支持的数据库:Oracle,PostgreSQL目录快速开始 为您的数据库下载JDBC驱动程序( , ) 解压缩二进制存档并运行ASH-Viewer.jar 打开连接对话框,并用数据填充它们(Oracle数据库的URL: jdbc:oracle:thin:@host...

    Oracle_审计表_sys.aud$_授权给用户Truncate权限.docx

    ASH.SESSION_TYPE) SESSION_INFO, COUNT(*) COUNTS, ROUND(COUNT(*) / SUM(COUNT(*)) OVER (), 2) PCTLOAD, DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) RANK_ORDER FROM GV$ACTIVE_SESSION_HISTORY ASH ...

    oracle DBA宝典和教程.rar

    此外,了解数据库的性能监控工具,如V$视图、AWR(Automatic Workload Repository)和ASH(Active Session History)报告。 5. **安全性**:设置用户权限,理解角色和权限的概念,学习如何创建和管理用户,以及如何...

    Oracle常用技术资料合集.zip

    二、《Oracle数据库SQL执行计划的取得和解析》PPT(附SQL文件) 三、Oracle 常用脚本 2pc_clean.txt ash_sql_line_id.txt ash_top_sql_event.txt ash_used awr_db_time.txt awr_event_histogram.txt awr_metric_...

    oracle跟踪工具

    Oracle提供了一系列内置的跟踪工具,如TKPROF、SQL Trace、10046事件、Automatic Workload Repository (AWR) 和 ASH (Active Session History) 等。 1. **TKPROF**:这是一个早期的Oracle跟踪分析工具,用于格式化...

    oracle学习资料,我搜集和总结的大量oracle学习资源

    另外,了解Oracle的自动性能诊断工具,如ADDM(Automatic Database Diagnostic Monitor)和ASH(Active Session History),有助于快速定位性能问题。 Oracle的安全性管理是另一个重要主题。你需要理解用户权限、...

Global site tag (gtag.js) - Google Analytics