此操作在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:\app\admin\product\11.2.0\dbhome_1 是Oracle的安装路径。
SQL>@D:\app\admin\product\11.2.0\dbhome_1\RDBMS\ADMIN\awrrpt.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:\Users\admin,那报告就在下面。
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。