ITPub博客

首页 > 数据库 > Oracle > AWR数据的导出和导入全过程

AWR数据的导出和导入全过程

原创 Oracle 作者:kuqlan 时间:2011-09-17 01:50:33 0 删除 编辑
导出导入AWR数据,不仅对远程诊断有用,而且对历史数据的对比诊断也是很有价值。例如, 最近某个SQL突然变慢,想看看他过去的这段时间该SQL的执行计划及AWR报告,那也可以利用AWR的导出导入功能(前提是将每个月的AWR数据导出后进行归档)。如下是导出导入的全过程:[@more@]

1、因为在导出(或导入)时,我们需要指出导出(导入)文件存放路径。因首先要建立导出(或导入)路径。

SQL>connect sys/password as sysdba;

SQL>create directory dump_awr as ‘E:DBwork’;

SQL>grant read,write on directory dump_dir to system;

2、通过awrextr.sql脚本进行导出

利用有权限的用户调用$ORACLE_HOME/rdbms/admin/awrextr.sql脚本,并按提示操作就可以导出就可以了。

SQL> @?/rdbms/admin/awrextr.sql

3、利用有权限的用户调用$ORACLE_HOME/rdbms/admin/awrload.sql脚本,并按提示操作就可以实现导入。如果需要导入,则按如下步骤执行

SQL> @?/rdbms/admin/awrload.sql

我在第一次执行时,总是报如下错误。经过仔细观察发现,在按提示输入数据文件名时,一般不需要填写后缀.dmp字样,如E:DBworkawrdat_1737_2443_july而不是E:DBworkawrdat_1737_2443_july.dmp,如下所示:

| *** AWR Load Started ...

|

| This operation will take a few moments. The

| progress of the AWR load operation can be

| monitored in the following directory/file:

| E:DBwork

| awrdat_1737_2443_july.dmp.log

|

Exception encountered in AWR_LOAD

ORA-39001: 参数值无效

ORA-39000: 转储文件说明错误

ORA-31640: 无法打开要读取的转储文件 "E:DBworkawrdat_1737_2443_july.dmp.dmp"

ORA-27041:

无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) The system cannot find the file specified.

ORA-39001: 参数值无效

begin

*

第 1 行出现错误:

ORA-06512: 在 "SYS.DBMS_SWRF_INTERNAL", line 1208

ORA-06512: 在 line 3

begin

*

第 1 行出现错误:

ORA-20106: AWR tables do not exist for the 'AWR_STAGE' user

ORA-06512: 在 "SYS.DBMS_SWRF_INTERNAL", line 1733

ORA-06512: 在 line 3

... Dropping AWR_STAGE user

4、在本地作出刚导入的AWR数据的数据库的AWR报表,则需要调用$ORACLE_HOME/rdbms/admin/awrrpti.sql脚本,按提示操作即可。

SQL> @?/rdbms/admin/awrrpti.sql

Instances in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id Inst Num DB Name Instance Host

------------ -------- ------------ ------------ ------------

3747980894 1 db db1 test-db1

3747980894 2 db db2 test-db2

* 1875960175 1 KUQLAN10 kuqlan10 abc123

输入 dbid 的值: 3747980894 -----在此要选择要刚导入数据所对应的数据库DBid

Using 3747980894 for database Id

输入 inst_num 的值: 1

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 without

specifying a number lists all completed snapshots.

输入 num_days 的值:

….

如上所示,按提示输入即可。

总结:

通过以上方法我们不仅克服时间的限制,也能远程仔细看到数据库健壮性所需的所有关键数据。

我在第一次测试时遇到两个问题:

其一是数据库没有进入打开状态而mount状态原因,导入后制作AWR报告时无法显示snapshot id,打开数据库后重新导入问题被解决了。

其二是制作AWR报告不知存放到(比如HTML格式的)哪一个路径底下,实际上AWR报告就在你的当前目录下存放(即在sqlplus / as sysdba执行前的cmd提示所对应的路径)。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841027/viewspace-1055121/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle技术爱好者,Oracle10g OCM,网名 KUQLAN ,具有7的年Oracle数据库管理实践,曾经参加过BOSS、ERP、云计算(OpenStack+kvm)等项目的一线工作。以前写博客是为了自己,而现在是为了自己和别人。因为领会了帮助别人和分享、沉淀和积累会创造快乐和价值...

注册时间:2009-01-26

  • 博文量
    183
  • 访问量
    1681013