Oracle 手动生成快照 生成AWR报告及简单分析
此操作在windows 10 上操作,Linux系统类似。
- 登录有dba权限的账号: $ su - oracle $ sqlplus / as sysdba
- 如果有多个数据库,用以下登录: 使用命令“sqlplus”,命令格式:sqlplus 用户名/口令@数据库名 as sysdba $ sqlplus sys/sys@localhost:1521/orcl as sysdba
- 手动生成快照,账号须有dba权限。正常情况下默认1小时生成一个。 SQL>exec dbms_workload_repository.create_snapshot();
- 查看快照,比较多,一般忽略这步。 SQL>select * from dba_hist_snapshot;
- 生成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)。
- 输入 report_type 的值:直接回车则为默认的 html 格式
- 输入 num_days 的值:看今天的则输入:1 。可以看到今天的快照列表,Snap Id 为 6679和6680是手动生成的快照,待会就可以用这两个相邻的id来生成awr报告。也可以使用其他的id,但两个id必须是相邻的,隔一空行也不行,如 6673和6674。
- 输入 begin_snap 的值:6679
- 输入 end_snap 的值:6680
- 输入 report_name 的值:awrrpt_20220214_1530.html 这里为输入报告的名称,爱写啥写啥。 或者直接回车则使用默认名称:awrrpt_1_6679_6680.html,开始id和结束id。 然后就哗啦哗啦一大片… 出现 Report written to … 字样就好了。
- 生成的报告在连接数据库之前的路径。 比如连接之前在路径 C:Usersadmin,那报告就在下面。 Linux 默认在oracle用户的根目录下,执行命令 cd 到根目录,pwd 查看当前路径,用ftp工具下载文件。
简单分析
- Top 5 Timed Events,等待时间在前五位的事件,基本上可以判断出问题在哪。 当 CPU time 出现在这个列表,说明cpu空闲时间较大,基本上就没什么问题。
- SQL Statistics,sql 统计,一般查看 SQL ordered by CPU Time
- SQL ordered by CPU Time,查看耗时靠前的20个sql。点击 SQL id 就能查看具体sql。