Oracle 导出 ASH的dump信息

最近在看一些Oracle分享的时候,经常提到导出ASH的dump给另外的人来做分析,但我没有什么相关的操作,不知道是怎样的一个操作流程,于是上网看了各种博文。于是自己动手做实验做一次导出导入。

实验环境:Oracle 11.2.0.4+rhel 7.2

执行下面的语句对ASH信息做dump操作

[email protected]>alter system set events ‘immediate trace name ashdump level 10‘;

上面的语句中level的意思是dump出ASH buffer中最近n分钟的数据,这里以10分钟为例。

使用下面的语句打到对应的trace文件

[email protected]>SELECT value FROM v$diag_info WHERE name = ‘Default Trace File‘;

VALUE
-------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_7556.trc

先简单查看一下trace文件中的内容:

从上面的两个图中可以看到trace文件中包含了三类信息:trace的基本信息、导入dump的方法和ash的实际数据,其实只要按照trace中的文件给出的方法就可以很容易的把dump数据导入到数据库中。

1、创建临时表

CREATE TABLE ashdump AS
SELECT * FROM SYS.WRH$_ACTIVE_SESSION_HISTORY WHERE rownum < 0;

2、生成sqlldr的control file

[[email protected] ash]$ sed -n ‘1,/^Step 2:/d;/^Step 3:/,$d;p‘ ora11g_ora_7556.trc |sed ‘/^-/d‘ > ashldr.ctl

3、使用sqlldr工具把trace文件中的数据导入到临时表中

[[email protected] ash]$ sqlldr zx/zx control=ashldr.ctl data=ora11g_ora_7556.trc errors=1000000

SQL*Loader: Release 11.2.0.4.0 - Production on Sat Sep 23 17:16:40 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 19
Commit point reached - logical record count 37
Commit point reached - logical record count 55
Commit point reached - logical record count 73
Commit point reached - logical record count 91
Commit point reached - logical record count 109
Commit point reached - logical record count 127
Commit point reached - logical record count 145
Commit point reached - logical record count 163
Commit point reached - logical record count 181
Commit point reached - logical record count 199
Commit point reached - logical record count 217
Commit point reached - logical record count 235
Commit point reached - logical record count 253
Commit point reached - logical record count 271
Commit point reached - logical record count 289
Commit point reached - logical record count 307
Commit point reached - logical record count 325
Commit point reached - logical record count 343
Commit point reached - logical record count 361
Commit point reached - logical record count 379
Commit point reached - logical record count 397
Commit point reached - logical record count 415
Commit point reached - logical record count 433
Commit point reached - logical record count 451
Commit point reached - logical record count 469
Commit point reached - logical record count 487
Commit point reached - logical record count 505
Commit point reached - logical record count 523
Commit point reached - logical record count 541
Commit point reached - logical record count 559
Commit point reached - logical record count 577
Commit point reached - logical record count 595
Commit point reached - logical record count 613
Commit point reached - logical record count 631
Commit point reached - logical record count 649
Commit point reached - logical record count 651

[email protected]>select count(*) from ashdump;

  COUNT(*)
----------
       650

数据导入成功后就可以根据具体的问题现在做近一步的分析。

其实导出和导入的步骤非常简单,Oracle直接给出了步骤,难的是拿到数据后如何使用这些数据进行近一步的分析,从而找出问题的根本原因。

如下分析每个sampletime的会话数量

参考:http://www.eygle.com/archives/2009/08/howto_dump_ashinfo.html

https://antognini.ch/2017/07/offline-analysis-of-ash-data-with-ashdump/

时间: 2024-11-02 00:37:28

Oracle 导出 ASH的dump信息的相关文章

Oracle导出excel

oracle导出excel(非csv)的方法有两种,1.使用sqlplus  spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件:sql脚本文件和格式设置文件. 去除冗余信息,main.sql --main.sql 注意,需要在sqlplus下运行 非plsql命令行下 set linesize 200 set term off verify off feedback off pagesize 999 set markup h

[转]Oracle数据库ASH和AWR的简单介绍

在Oracle数据库中,有时我们可能会遇到这样的术语:ASH和AWR,那么它们是怎样产生的呢?它们的作用又是什么呢?本文我们就来介绍这一部分内容.       1.10g之前 用户的连接将产生会话,当前会话记录保存在v$session中:处于等待状态的会话会被复制一份放在v$session_wait中.当该连接断开后,其原来的连接信息在v$session和v$session_wait中就会被删除.这是10g之前的状况.       2.v$session_wait_history与ASH 若是一

Oracle数据泵(Data Dump)错误汇集

Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一些自己使用数据泵(Data Dump)过程当中遇到的问题以及解决方法.都是在使用过程中遇到的问题,以后陆续遇到数据泵(Data Dump)的错误案例,都会补充在此篇. 错误案例1: ORA-39065: DISPATCH 中出现意外的主进程异常错误:ORA-44002: 对象名无效 Windows 平台错误提示: Linux平台错误提示 解决方法: [[email protected] admin]$

oracle导出多CSV文件的靠谱的

oracle导出多CSV文件的问题 ---------------------------------------------------------------------- 用ksh脚本从oracle数据库中导出80w数据到csv文件,如用户给定名字为a.csv(文件最大4000行记录),则自动生产文件为a_1.csv,a_2.csv,...., a_200.csv 我已经实现了一个方法,但80w要导5小时,用户没法接受.如下: sqlplus -s user/pwd @${SqlDir}/

关于Oracle导出数据的几个错误EXP-00008,ORA-00904,ORA-01003,EXP-00091

首先说明数据库的版本 服务器:10.2.0.5.0 客户端:11.2.0.1.0 导出会报错 EXP-00008: 遇到 ORACLE 错误 1003 ORA-01003: no statement parsed 和 EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier 这小样问题,怎么也不会想到是客户端不能向下兼容吧,困了我很久.我决定试下是不是客户端不兼容问题,果然是这样的. 装了个虚拟机,客户端版

Oracle EBS-SQL (PO-14):检查供应商信息sql

select pvs.org_id, pvs.vendor_id, pvs.vendor_site_id, hou.name                                 经营组织, flv.meaning                            供应商类型, pv.segment1                          供应商编码, pv.vendor_name                    供应商名称, pv.vendor_name_alt

Oracle EBS-SQL (MRP-3):检查例外信息查询_建议取消_采购订单.sql

select msi.segment1                                    编码 ,msi.description                                   描述 ,mr.old_order_quantity                        数量 ,mr.old_schedule_date             订单需求日期 ,mipo.po_number                             订单号

用批处理在windows中导出/导入无线网络信息,复制保存为bat即可

@echo offtitle 在windows中导出/导入无线网络信息:Beginecho ========================echo 请选择操作:echo 1 查看可用的无线网络echo 2 导出无线网络配置echo 3 导入无线网络配置echo 0 退出echo ========================set /p choice=选择:if %choice%==1 goto ListWifiif %choice%==2 goto ExportWifiif %choice

Oracle 导出导入数据

最近用到Oracle导出导入数据,在网上看了别人的一些文章,总结如下: Oracle导出导出有两中方式:一.利用exp imp导出导入:二.利用Oracel数据泵expdp impdp导出导入. 一.利用exp imp导出导入 exp imp 语法如下: exp: 1) 将数据库orcl完全导出 exp system/[email protected] file=d:\orcl_bak.dmp full=y 2) 将数据库中system用户的表导出 exp system/[email prote