Oracle 导出 ASH的dump信息

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

使用下面的语句打到对应的trace文件
sys@ORA11G>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
[oracle@rhel7 ash]$ sed -n '1,/^Step 2:/d;/^Step 3:/,$d;p' ora11g_ora_7556.trc |sed '/^-/d' > ashldr.ctl

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

数据导入成功后就可以根据具体的问题现在做近一步的分析。
其实导出和导入的步骤非常简单,Oracle直接给出了步骤,难的是拿到数据后如何使用这些数据进行近一步的分析,从而找出问题的根本原因。
如下分析每个sampletime的会话数量

猜你喜欢

转载自www.linuxidc.com/Linux/2017-11/148748.htm