当前位置: 首页 > Oracle, oracle 10g, oracle 11g > 正文

AWR(二)-迁移AWR数据之导出AWR收集数据

之前写过一篇关于AWR基本配置的文章(详见:http://www.dbdream.com.cn/2011/12/01/awr%E4%B8%80-%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE/),今天说下AWR数据的迁移操作。
ORACLE从10g开始,推出AWR工具,使我们可以更方便更直观的分析数据库的性能和状态,有些时候,我们无法去客户现场,只能远程采集或者由客户方采集分析数据,然后导入本地数据库进行分析,还好AWR支持这部分数据的迁移。
1. 在导出数据之前,一般需要创建以下路径:

DATA_PUMP_DIR
EXP
IMP
DATA_FILE_DIR
SQL> create directory data_file_dir as 'd:dir';
SQL> create directory exp as 'd:exp';

2. 导出AWR数据
在$ORACLE_HOME/rdbms/admin目录下,我们会看到很多以awr开头的sql脚本。

2006-12-01  19:31             1,189 awrblmig.sql
2005-05-23  20:13            21,618 awrddinp.sql
2009-05-13  19:08             7,600 awrddrpi.sql
2005-05-27  20:22             2,069 awrddrpt.sql
2009-03-24  10:38            11,490 awrextr.sql
2008-03-13  16:01            17,051 awrgdinp.sql
2009-05-13  19:08             7,551 awrgdrpi.sql
2009-04-29  17:53             1,958 awrgdrpt.sql
2008-03-13  16:01             7,719 awrginp.sql
2009-04-29  17:53             1,578 awrgrpt.sql
2008-03-13  16:01             6,526 awrgrpti.sql
2004-09-01  18:38            50,507 awrinfo.sql
2005-01-05  15:25             2,542 awrinpnm.sql
2006-03-03  17:47             8,901 awrinput.sql
2009-03-24  10:38            10,458 awrload.sql
2003-10-24  14:20             2,069 awrrpt.sql
2005-04-18  13:00             7,801 awrrpti.sql
2005-01-05  15:25             6,919 awrsqrpi.sql
2005-01-05  15:25             1,528 awrsqrpt.sql

可以使用awrextr.sql脚本导出AWR数据到dmp文件,实现AWR数据的迁移。步骤大致如下:

SQL> @?/rdbms/admin/awrextr
~~~~~~~~~~~~~
AWR EXTRACT
~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~  This script will extract the AWR data for a range of snapshots  ~
~  into a dump file.  The script will prompt users for the         ~
~  following information:                                          ~
~     (1) database id                                              ~
~     (2) snapshot range to extract                                ~
~     (3) name of directory object                                 ~
~     (4) name of dump file                                        ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Databases in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id     DB Name      Host
------------ ------------ ------------
* 1520519778 STREAM       STREAM
  1645778343 B1ACDB       acdbm
  1645778343 B1ACDB       acdbs
The default database id is the local one: '1520519778'.  To use this
database id, press  to continue, otherwise enter an alternative.
输入 dbid 的值:

输入DBID,本机的DBID是1520519778。

输入 dbid 的值:  1520519778
Using 1520519778 for Database ID
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  without
specifying a number lists all completed snapshots.
输入 num_days 的值:

系统提示导出多少天的AWR数据,本文模拟7天也就是一周。

输入 num_days 的值:  7
Listing the last 10 days of Completed Snapshots
DB Name        Snap Id    Snap Started
------------ --------- ------------------
STREAM             571 30 11月 2011 17:40
                   572 30 11月 2011 21:47
                   573 01 12月 2011 11:02
                   574 01 12月 2011 12:00
                   575 01 12月 2011 13:00
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入 begin_snap 的值:

由于昨天对AWR数据进行了清理,目前数据库里没有多少AWR快照,模拟从SNAP_ID:571到SNAP_ID:575(也只有这么多的快照)。

输入 begin_snap 的值:  571
Begin Snapshot Id specified: 571
输入 end_snap 的值:  575
End   Snapshot Id specified: 575
Specify the Directory Name
~~~~~~~~~~~~~~~~~~~~~~~~~~
Directory Name                 Directory Path
------------------------------ ---------------------------------------------
DATA_FILE_DIR                  D:dir
DATA_PUMP_DIR                  D:oracleadminstreamdpdump
EXP                            d:exp
IMP                            d:imp
ORACLECLRDIR                   D:oracleproduct11.2.0dbhome_1binclr
ORACLE_OCM_CONFIG_DIR          D:oracleproduct11.2.0dbhome_1ccrstate
SQLLDR                         d:test
XMLDIR                         D:oracleproduct11.2.0dbhome_1rdbmsxml
Choose a Directory Name from the above list (case-sensitive).
输入 directory_name 的值:

到这里就用到了刚才创建的目录DATA_FILE_DIR了,如果没有这个目录就会报错,而且DATA_FILE_DIR一定要大写,小写也报错,坑爹啊。

输入 directory_name 的值:  DATA_FILE_DIR
Using the dump directory: DATA_FILE_DIR
Specify the Name of the Extract Dump File
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The prefix for the default dump file name is awrdat_571_575.
To use this name, press  to continue, otherwise enter
an alternative.
输入 file_name 的值:

输入你要将AWR数据保存成dmp文件的名字,注意不能加后缀,否则就会杯具。

输入 file_name 的值:  AWR_571-575
Using the dump file prefix: AWR_571-575
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|  The AWR extract dump file will be located
|  in the following directory/file:
|   D:dir
|   AWR_571-575.dmp
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|  *** AWR Extract Started ...
|  This operation will take a few moments. The
|  progress of the AWR extract operation can be
|  monitored in the following directory/file:
|   D:dir
|   AWR_571-575.log

此时,后台已经开始导出AWR数据了,上面已经提示,导出的路径是D:dir,导出的文件名是AWR_571-575.dmp,还提示可以参考D:dir目录下的AWR_571-575.log日志,还挺人性化的。
如果看到下面的提示,AWR数据导出完成。

End of AWR Extract

可以到D:dir目录下去查看生成的文件。

D:dir>
D:dir>DIR awr_571*
2011-12-01  14:13         9,003,008 AWR_571-575.DMP
2011-12-01  14:13            14,864 AWR_571-575.log

下面摘录部分AWR_571-575.log日志信息。

启动 "SYS"."SYS_EXPORT_TABLE_01":
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 909.6 MB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
     已完成 128 TABLE 个对象, 用时 14 秒
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
     已完成 121 CONSTRAINT 个对象, 用时 2 秒
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
     已完成 1 REF_CONSTRAINT 个对象, 用时 1 秒
. . 导出了 "SYS"."WRH$_SQL_PLAN"                       1.195 MB    3052 行
. . 导出了 "SYS"."WRH$_SQLTEXT"                        336.3 KB     336 行
. . 导出了 "SYS"."WRH$_SYSMETRIC_SUMMARY"              70.41 KB     790 行
. . 导出了 "SYS"."WRH$_WAITCLASSMETRIC_HISTORY"        23.61 KB     177 行
. . 导出了 "SYS"."WRH$_SYSMETRIC_HISTORY"              187.4 KB    3540 行
. . 导出了 "SYS"."WRH$_ENQUEUE_STAT"                   27.20 KB     365 行
. . 导出了 "SYS"."WRH$_SEG_STAT_OBJ"                   66.22 KB     584 行
. . 导出了 "SYS"."WRH$_SQLSTAT":"WRH$_SQLSTA_1645778343_0" 36.64 KB     0 行
. . 导出了 "SYS"."WRH$_LATCH":"WRH$_LATCH_1645778343_0"  10.99 KB       0 行
. . 导出了 "SYS"."WRH$_BG_EVENT_SUMMARY"               15.17 KB     219 行
. . 导出了 "SYS"."WRH$_SEG_STAT":"WRH$_SEG_ST_1645778343_0"  22.76 KB       0 行
. . 导出了 "SYS"."WRH$_SQL_BIND_METADATA"              131.6 KB    2177 行
. . 导出了 "SYS"."WRH$_SYSSTAT":"WRH$_SYSSTA_1645778343_0"  6.593 KB       0 行
... ...
已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TABLE_01"
******************************************************************************
SYS.SYS_EXPORT_TABLE_01 的转储文件集为:
  D:DIRAWR_571-575.DMP
作业 "SYS"."SYS_EXPORT_TABLE_01" 已于 14:13:54 成功完成

细心的人可能会发现,怎么导出的都是以WRH$开头的表,这一堆表都是AWR存放统计信息的表,AWR的内存统计收集组件收集的统计信息最终会由MMON进程写入到这一堆表中,这些表的默认存放在SYSAUX表空间,这些表ORACLE隐藏的比较好,传说中是不提供用户直接访问,但那也只是传说。

SQL> select table_name from dict where table_name like 'WRH$%';

未选定行
SQL> select table_name from dict where table_name like 'SYS.WRH$%';

未选定行
SQL> select table_name from dict where table_name='WRH$_SQL_PLAN';

未选定行

看,数据字典的数据字典都查不到这些表的信息,但是DBA_TABLES视图里还是可以查到的。

SQL> select table_name,owner,tablespace_name from dba_tables where table_name like 'WRH%';

TABLE_NAME                               OWNER      TABLESPACE_NAME
---------------------------------------- ---------- --------------------
WRH$_FILESTATXS_BL                       SYS        SYSAUX
WRH$_TEMPSTATXS                          SYS        SYSAUX
WRH$_DATAFILE                            SYS        SYSAUX
WRH$_TEMPFILE                            SYS        SYSAUX
... ...

还有一些视图也可以查到AWR的信息,比如以DBA_HIST开头的表。

SQL> select table_name from dict where table_name like '%DBA_HIST%';

TABLE_NAME
----------------------------------------
DBA_HIST_ACTIVE_SESS_HISTORY
DBA_HIST_ASH_SNAPSHOT
DBA_HIST_BASELINE
DBA_HIST_BASELINE_DETAILS
DBA_HIST_BASELINE_METADATA
DBA_HIST_BASELINE_TEMPLATE
DBA_HIST_BG_EVENT_SUMMARY
DBA_HIST_BUFFERED_QUEUES
DBA_HIST_BUFFERED_SUBSCRIBERS
DBA_HIST_BUFFER_POOL_STAT
DBA_HIST_CLUSTER_INTERCON
... ...

一共有100多个以DBA_HIST开头的视图,生成AWR报告的时候,有些查询的就是这些视图,有兴趣的人可以分析下$ORACLE_HOME/rdbms/admin/awrrpt.sql脚本。

本文固定链接: http://www.dbdream.com.cn/2011/12/awr%e4%ba%8c-%e8%bf%81%e7%a7%bbawr%e6%95%b0%e6%8d%ae%e4%b9%8b%e5%af%bc%e5%87%baawr%e6%94%b6%e9%9b%86%e6%95%b0%e6%8d%ae/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2011年12月01日发表在 Oracle, oracle 10g, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: AWR(二)-迁移AWR数据之导出AWR收集数据 | 信春哥,系统稳,闭眼上线不回滚!
关键字:

AWR(二)-迁移AWR数据之导出AWR收集数据:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter