Oracle 手动生成快照 生成AWR报告及简单分析

此操作在windows 10 上操作,Linux系统类似。

  1. 登录有dba权限的账号: $ su - oracle $ sqlplus / as sysdba
  2. 如果有多个数据库,用以下登录: 使用命令“sqlplus”,命令格式:sqlplus 用户名/口令@数据库名 as sysdba $ sqlplus sys/sys@localhost:1521/orcl as sysdba
  3. 手动生成快照,账号须有dba权限。正常情况下默认1小时生成一个。 SQL>exec dbms_workload_repository.create_snapshot();
  4. 查看快照,比较多,一般忽略这步。 SQL>select * from dba_hist_snapshot;
  5. 生成awr报告: windows:D:appadminproduct11.2.0dbhome_1 是Oracle的安装路径。 SQL>@D:appadminproduct11.2.0dbhome_1RDBMSADMINawrrpt.sql; linux: SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql; 或者 SQL> @/u01/oracle/product/10.2.0/db_1/rdbms/admin/awrrpt.sql; /u01/oracle/product/10.2.0/db_1 是Oracle的安装路径(不知道或找不到的执行命令 whereis oracle 或 which oracle)。
  6. 输入 report_type 的值:直接回车则为默认的 html 格式
  7. 输入 num_days 的值:看今天的则输入:1 。可以看到今天的快照列表,Snap Id 为 6679和6680是手动生成的快照,待会就可以用这两个相邻的id来生成awr报告。也可以使用其他的id,但两个id必须是相邻的,隔一空行也不行,如 6673和6674。
  8. 输入 begin_snap 的值:6679
  9. 输入 end_snap 的值:6680
  10. 输入 report_name 的值:awrrpt_20220214_1530.html 这里为输入报告的名称,爱写啥写啥。 或者直接回车则使用默认名称:awrrpt_1_6679_6680.html,开始id和结束id。 然后就哗啦哗啦一大片… 出现 Report written to … 字样就好了。
  11. 生成的报告在连接数据库之前的路径。 比如连接之前在路径 C:Usersadmin,那报告就在下面。 Linux 默认在oracle用户的根目录下,执行命令 cd 到根目录,pwd 查看当前路径,用ftp工具下载文件。

简单分析

  1. Top 5 Timed Events,等待时间在前五位的事件,基本上可以判断出问题在哪。 当 CPU time 出现在这个列表,说明cpu空闲时间较大,基本上就没什么问题。
  2. SQL Statistics,sql 统计,一般查看 SQL ordered by CPU Time
  3. SQL ordered by CPU Time,查看耗时靠前的20个sql。点击 SQL id 就能查看具体sql。
经验分享 程序员 微信小程序 职场和发展