实际工作中,存在这么一种场景。客户现场分析问题,无法立即得出结论,且无法远程服务器,因此对于服务器中的awr信息,如何提取是一个问题,oracle有脚本可以对服务器中以db为单位导出awr基表的dump文件
测试操作流程:
1.10.2.0.4 测试库,awr dump导出
2.11.2.0.4测试库,awr dump导入
3.11.2.0.4测试库,使用脚本创建awr报告
1.10.2.0.4 测试库,awr dump导出
SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH
--------------------------------------------------------------------------------
SYS DUMP /10.2.0.4/dump
SQL> @?/rdbms/admin/awrextr.sql
--根据脚本,输入导出天数,begin end snap id ,使用指定转储路径,输入dump文件名称
使用数据泵sqlfile,导出逻辑sql,发现均为oracle awr基表信息
impdp system/oracle dumpfile=10204_awr_dump.dmp sqlfile=awr_dump.sql directory=DUMP -- CONNECT SYSTEM
-- new object type path is: TABLE_EXPORT/TABLE/TABLE
CREATE TABLE "SYS"."WRH$_FILESTATXS"
( "SNAP_ID" NUMBER NOT NULL ENABLE,
"DBID" NUMBER NOT NULL ENABLE,
"INSTANCE_NUMBER" NUMBER NOT NULL ENABLE,
"FILE#" NUMBER NOT NULL ENABLE,
"CREATION_CHANGE#" NUMBER NOT NULL ENABLE,
"PHYRDS" NUMBER,
"PHYWRTS" NUMBER,
"SINGLEBLKRDS" NUMBER,
"READTIM" NUMBER,
"WRITETIM" NUMBER,
"SINGLEBLKRDTIM" NUMBER,
"PHYBLKRD" NUMBER,
"PHYBLKWRT" NUMBER,
"WAIT_COUNT" NUMBER,
"TIME" NUMBER
) PCTFREE PCTUSED INITRANS MAXTRANS
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "SYSTEM"
PARTITION BY RANGE ("DBID","SNAP_ID")
(PARTITION "WRH$_FILEST_3049682047_49" VALUES LESS THAN (, MAXVALUE)
2.11.2.0.4测试库,awr dump导入
根据脚本内容,输入转储目录,及dump文件名称,导入使用默认的用户即可 或者新创建一个普通用户,授予必要的权限。
create directory test_dir as '/10.2.0.4/dump';
SQL> @?/rdbms/admin/awrload.sql
导入完毕后,通过如下视图,可以发现不同的dbid
SQL> select snap_id,dbid,instance_number,to_char(begin_interval_time,'yyyy-mm-dd hh24:mi:ss.ff') from dba_hist_snapshot where begin_interval_time >sysdate-;
SNAP_ID DBID INSTANCE_NUMBER TO_CHAR(BEGIN_INTERVAL_TIME,'YYYY-MM-DDHH24:MI:SS.FF')
---------- ---------- --------------- ----------------------------------------------------------
-- ::33.134
-- ::31.920
-- ::45.065
-- ::43.205
-- ::11.662
-- ::06.282
-- ::08.506
rows selected.
3.11.2.0.4测试库,使用脚本创建awr报告
选用如下脚本,核心是可以选择不同的dbid,例如awrrpt.sql仅选择当前实例,无法选择其它dbid
@$ORACLE_HOME/rdbms/admin/awrrpti.sql