ORACLE AWR报告生成过程出现多个实例记录分析

在一次生成AWR报告中,发现在“Instances in this Workload Repository schema”部分,出现了多个实例记录信息(host敏感信息被用host1,host2,host3替换)。具体信息如下截图所示:

SQL> @?/rdbms/admin/awrrpt
 
Current Instance
~~~~~~~~~~~~~~~~
 
   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
 3990839260 SCM2                1 SCM2
 
 
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: html
 
Type Specified:  html
 
 
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
  3990839260        1 SCM2         SCM2         host1
* 3990839260        1 SCM2         SCM2         host2
  3990839260        1 SCM2         SCM2         host3
 
Using 3990839260 for database Id
Using          1 for instance number
 
 
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing <return> without
specifying a number lists all completed snapshots.

 

其实这几个hostname对于我来说,非常熟悉,一个是数据库迁移前的hostname,一个是hostname修改前的名称,一个是hostname修改后的名称。那么为什么出现这个情况呢?我们先从$ORACLE_HOME/rdbms/admin/awrrpt.sql脚本开始,看看这些记录是怎么获取的。

[oracle@MyOracle admin]$ more awrrpt.sql 
 
Rem $Header: awrrpt.sql 24-oct-2003.12:04:53 pbelknap Exp $
Rem
Rem awrrpt.sql
Rem
Rem Copyright (c) 1999, 2003, Oracle Corporation.  All rights reserved.  
Rem
Rem    NAME
Rem      awrrpt.sql
Rem
Rem    DESCRIPTION
Rem      This script defaults the dbid and instance number to that of the
Rem      current instance connected-to, then calls awrrpti.sql to produce
Rem      the Workload Repository report.
Rem
Rem    NOTES
Rem      Run as select_catalog privileges.  
Rem      This report is based on the Statspack report.
Rem
Rem      If you want to use this script in an non-interactive fashion,
Rem      see the 'customer-customizable report settings' section in
Rem      awrrpti.sql
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    pbelknap    10/24/03 - swrfrpt to awrrpt 
Rem    pbelknap    10/14/03 - moving params to rpti 
Rem    pbelknap    10/02/03 - adding non-interactive mode cmnts 
Rem    mlfeng      09/10/03 - heading on 
Rem    aime        04/25/03 - aime_going_to_main
Rem    mlfeng      01/27/03 - mlfeng_swrf_reporting
Rem    mlfeng      01/13/03 - Update comments
Rem    mlfeng      07/08/02 - swrf flushing
Rem    mlfeng      06/12/02 - Created
Rem
 
--
-- Get the current database/instance information - this will be used 
-- later in the report along with bid, eid to lookup snapshots
 
set echo off heading on underline on;
column inst_num  heading "Inst Num"  new_value inst_num  format 99999;
column inst_name heading "Instance"  new_value inst_name format a12;
column db_name   heading "DB Name"   new_value db_name   format a12;
column dbid      heading "DB Id"     new_value dbid      format 9999999999 just c;
 
prompt
prompt Current Instance
prompt ~~~~~~~~~~~~~~~~
 
select d.dbid            dbid
     , d.name            db_name
     , i.instance_number inst_num
     , i.instance_name   inst_name
  from v$database d,
       v$instance i;
 
@@awrrpti
 
undefine num_days;
undefine report_type;
undefine report_name;
undefine begin_snap;
undefine end_snap;
--
-- End of file

 

如上所示,其实awrrpt.sql里面没有多少料,主要功能还是在awrrpti.sql中实现的。在awrrpti.sql里面,看到通过下面部分信息,定位到AWR里面的信息来源于awrinput.sql

 

检查awrinput.sql脚本,发现AWR那段数据来自于下面SQL语句

--
-- Request the DB Id and Instance Number, if they are not specified
 
column instt_num  heading "Inst Num"  format 99999;
column instt_name heading "Instance"  format a12;
column dbb_name   heading "DB Name"   format a12;
column dbbid      heading "DB Id"     format a12 just c;
column host       heading "Host"      format a12;
 
prompt
prompt
prompt Instances in this Workload Repository schema
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select distinct
       (case when cd.dbid = wr.dbid and 
                  cd.name = wr.db_name and
                  ci.instance_number = wr.instance_number and
                  ci.instance_name   = wr.instance_name   and
                  ci.host_name       = wr.host_name 
             then '* '
             else '  '
        end) || wr.dbid   dbbid
     , wr.instance_number instt_num
     , wr.db_name         dbb_name
     , wr.instance_name   instt_name
     , wr.host_name       host
  from dba_hist_database_instance wr, v$database cd, v$instance ci;
 
prompt
prompt Using &&dbid for database Id
prompt Using &&inst_num for instance number

 

最后发现原因是:视图dba_hist_database_instance里面存放的历史记录,记录了host的变化,所以上面SQL,出现了三条记录。

dba_hist_database_instance视图脚本

select dbid, instance_number, startup_time, parallel, version,
       db_name, instance_name, host_name, last_ash_sample_id
from WRM$_DATABASE_INSTANCE

 

使用下面脚本找到对应的记录,然后删除那些历史数据就可以了。但是手工删除这个表的数据是否会有问题呢? 也在测试环境测试了一下,没有任何问题,和同事讨论了一下,觉得这个数据的删除,不会出现什么问题。

SQL> SELECT HOST_NAME, MAX(STARTUP_TIME) FROM dba_hist_database_instance
  2  GROUP BY HOST_NAME;
 
 
SQL> DELETE FROM dba_hist_database_instance WHERE STARTUP_TIME <=TO_DATE('2016-05-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS');
COMMIT;
266 rows deleted.
 
SQL>COMMIT;
时间: 2024-10-11 13:10:04

ORACLE AWR报告生成过程出现多个实例记录分析的相关文章

Oracle AWR报告详细分析 (文档 ID 1523048.1)

Oracle AWR报告详细分析  (文档 ID 1523048.1) AWR 是 Oracle  10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分. WORKLOAD REPOSITORY report for  DB Name DB Id Instance Inst num Release RAC Host ICCI 13140

ORACLE AWR报告数据的导入导出实践

关于AWR的快照数据可以导出.导入,一直没有亲手实践过.今天动手测试了一下如何导出.导入AWR数据,将AWR的数据从一测试服务器,导入到另外一台测试服务器.   SQL> @?/rdbms/admin/awrextr.sql ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Disclaimer:

【深度长文】循序渐进解读Oracle AWR性能分析报告

作者介绍 韩锋,宜信技术研发中心数据库架构师.精通多种关系型数据库,曾任职于当当网.TOM在线等公司,曾任多家公司首席DBA.数据库架构师等职,多年一线数据库架构.设计.开发经验.著有<SQL优化最佳实践>一书.   Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库.它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时)为其所有重要的统计信息和负载信息执行一次快照,并将快照存放入AWR中.这些信息

ORACLE 10g AWR报告设置总结

  1:查看.修改AWR报告快照数据的采样间隔.保存策略 SQL> COL DBID FOR 999999999999 SQL> COL SNAP_INTERVAL FOR A26 SQL> COL RETENTION FOR A26 SQL> COL TOPNSQL FOR A10 SQL> select * from dba_hist_wr_control;            DBID SNAP_INTERVAL              RETENTION     

Oracle:分析AWR报告的方法

AWR的数据主要有两部分组成: 1)保存在内存中的系统负载和性能统计数据,主 要通过v$视图查询 : 2)mmon进程定期以快照(snapshot)的方式将内存中的AWR数据 保存到SYSAUX表空间中,主要通过DBA_*视图访问. 1. AWR快照的生成 默认情 况下,每隔一小时自动产生一个快照,保存最近7天的信息,可以通过以下语句查询: SQL>select SNAP_INTERVAL,RETENTION from dba_hist_wr_control; SNAP_INTERVAL    

[Oracle] 分析AWR报告的方法介绍

因为AWR报告非常长,不可能从头到尾一字不漏的去看,要有选择的去看重点部分.最好能对照的来读,即和系统正常情况下的AWR报告对比,找差异.以下就是对分析AWR报告的方法进行了介绍,需要的朋友参考下   AWR的数据主要有两部分组成:1)保存在内存中的系统负载和性能统计数据,主要通过v$视图查询 : 2)mmon进程定期以快照(snapshot)的方式将内存中的AWR数据保存到SYSAUX表空间中,主要通过DBA_*视图访问. 1. AWR快照的生成默认情况下,每隔一小时自动产生一个快照,保存最近

[Oracle] 分析AWR报告的方法介绍_oracle

AWR的数据主要有两部分组成:1)保存在内存中的系统负载和性能统计数据,主要通过v$视图查询 :2)mmon进程定期以快照(snapshot)的方式将内存中的AWR数据保存到SYSAUX表空间中,主要通过DBA_*视图访问. 1. AWR快照的生成默认情况下,每隔一小时自动产生一个快照,保存最近7天的信息,可以通过以下语句查询:SQL>select SNAP_INTERVAL,RETENTION from dba_hist_wr_control; SNAP_INTERVAL       RETE

AWR报告提取 ORACLE10G RAC+AIX53

ORACLE10G RAC+AIX53 AWR报告提取(ORACLE10G RAC+AIX53) 1.如果不在oracle用户下请切换到oracle用户    su - oracle 2.以sysdba权限登录数据库    sqlplus "/as sysdba" 3.执行awrprt命令    SQL> @?/rdbms/admin/awrrpt 4.出现选择awr的输出格式界面(默认选HTML比较直观)    ---------------------------------

生成AWR报告的方法步骤

1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/admin/awrgrpt.sql 3.生成 RAC 环境中特定数据库实例的 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpti.sql 4.生成 Oracle RAC 环境中多个数据库实例的 AWR 报告的方法: @$ORACLE_HOME/rdbms/admin/awr