编者按:留存一下供自己需要时查找。
【免责声明】本号文章仅代表个人观点,与任何公司无关,仅供参考。
编辑|SQL和数据库技术(ID:SQLplusDB)
1. 查看当前的AWR配置情况
SQL> set linesize 200
SQL> col SRC_DBNAME format a20
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL CON_ID SRC_DBID SRC_DBNAME
---------- ----------------------------- --------------------------------- -------------------- ---------- ---------- --------------------
1605927728 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT 0 1605927728 orcl
修改配置:
--每隔30分钟收集一次,保存1天execute
dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>14000);
--关闭AWR自动收集
SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>0,retention=>24*60);
2. 创建AWR快照
SQL> exec dbms_workload_repository.create_snapshot();
3. 生成AWR报告
--本实例AWR
@?/rdbms/admin/awrrpt;
--RAC中选择实例号
@?/rdbms/admin/awrrpti;
--AWR对 比报告
@?/rdbms/admin/awrddrpt;
--RAC全局AWR报告
@?/RDBMS/admin/awrgrpt;
4. 生成AWR SQL 报告
可以通过AWR脚本awrsqrpt.sql 和awrsqrpi.sql,来取得历史SQL 报告。
例:
--<查看SQL 信息>
SQL> select sql_id,sql_text from DBA_HIST_SQLTEXT where upper(sql_text) like '%EMP E%' and command_type=3;
SQL_ID
-------------
SQL_TEXT
--------------------------------------------------------------------------------
9ba377xqpau28
select e.empno,e.ename,d.dname from emp e, dept d where e.deptno=d.deptno
通过awrsqrpt.sql 生成AWR SQL报告,按照提示输入信息。
SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
SQL> conn / as sysdba
SQL> alter system set "_AWR_RESTRICT_MODE"=TRUE scope=spfile;
《重启数据库》
SQL> exec dbms_swrf_internal.cleanup_database(cleanup_local => true);
SQL> alter system set "_AWR_RESTRICT_MODE"=false scope=spfile;