发表于: 2008.08.29 17:06
分类: RAC&Grid
出处: http://2jliu.itpub.net/post/21805/469805
---------------------------------------------------------------
检查是否启用了跟踪
select sid, serial#, sql_trace, sql_trace_waits, sql_trace_binds from v$session where username = 'HR'
传输 AWR 数据
假设您要尝试解决生产数据库中的某些性能问题。本文有一部分已经说明了 AWR 数据对于分析是很重要的。但在正常的生产期间分析 AWR 数据可能并不合适,甚至是不可行的。相反,您可能希望将数据加载到某个中心位置以进行比较分析。如何完成该任务呢? Oracle 数据库 10g 第 2 版中提供了一个用于此目的的新程序包 DBMS_SWRF_INTERNAL。要将它下载到 Data Pump 转储文件,您将使用过程 AWR_EXTRACT:
1 begin 2 DBMS_SWRF_INTERNAL.AWR_EXTRACT ( 3 dmpfile => 'awr_data.dmp', 4 dmpdir => 'TMP_DIR', 5 bid => 302, 6 eid => 305 7 ); 8* end;我们来更详细地介绍一下以上各行。
| 行 | 说明 |
| 3 | 此处介绍了数据的目标文件名。这是一个 Data Pump 导出文件。如果未提供文件名,则使用默认值 awrdat.dmp。 |
| 4 | 写入转储文件的目录对象。在本示例中,您可能已将目录 TMP_DIR 定义为 /tmp。 |
| 5 | 该时段起始快照的 ID。 |
| 6 | 结束快照 ID。您在此处导出位于 302 和 305 之间的快照。 |
1 begin 2 DBMS_SWRF_INTERNAL.AWR_LOAD ( 3 SCHNAME => 'ARUP', 4 dmpfile => 'awr_data', 5 dmpdir => 'TMP_DIR' 6 ); 7* end;在此代码中,您将转储文件 awr_data.dmp 的内容加载到由目录对象 TMP_DIR 指定的目录中。加载 AWR 数据时,它并不直接加载到 SYS 模式中,而是先进入另一个模式中。参数 SCHNAME 中提供了模式名(如第 3 行中所示)。导入后,该数据移动到 SYS 模式中:
1 begin 2 DBMS_SWRF_INTERNAL.MOVE_TO_AWR ( 3 SCHNAME => 'ARUP' 4 ); 5* end;此处,您将模式 ARUP 中的 AWR 数据移动到 SYS。 正如我在上面指出的,将 AWR 移动到其他数据库具有很多优点和用途。可以在不同的数据库中分析数据而不会对生产造成太大的影响。此外,可以构建一个由从多个数据库中收集的 AWR 数据组成的中心数据库。 所有这些加载步骤都已经放置到一个名为 awrload.sql 的文件(位于 $ORACLE_HOME/rdbms/bin 目录中)中。同样,脚本 awrextr.sql 包含提取过程的所有步骤。 尽管这个将生产 AWR 数据卸载到备用数据库的机制已被外部化,但它在 Oracle 数据库 10g 第 2 版中的主要用途是帮助解决客户报告的任何问题。使用此方法,客户可以发送 AWR 转储文件格式的原始数据,支持人员随后可以将这些数据导入到他们的模式中以帮助重现和诊断问题。











