oracle执行计划打印
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle执行计划打印相关的知识,希望对你有一定的参考价值。
下班逗猫闲得无聊,写写自己对几种oracle执行计划打印的认识。只是如何打印,对于如何查看执行计划有时间再写,毕竟9 10 6的人不配拥有太多。当然执行计划的打印方式很多,这只是其中几种。废话少说开始吧
方式一:explain plan for
使用explain plan for,这种查询方式适合查看单条执行SQL的执行计划。explain plan for的查看方式也有两种:
1、 plsql的F5快捷键:登录plsql?按F5—>plsql会打开开一个窗口—>编写sql命名并执行—>会有刚执行sql的执行计划打印出
2、 命令窗口或者登录数据库后台执行—>explain plan for sql语句;?再执行select from table(dbms_xplan.display);-->会有执行计划打印出
注意:这种方式的执行计划只是预估值,并非真正的执行计划
方式二set autotrace on
这种方式不能再plsql下进行(目前我发现在不能在plsql下进行),只能在sqlplus下进行。(如果你问我sqlplus是啥,关机睡觉吧)
SQL> set autotrace on
SQL> select from A; #这句是你执行的sql,只能说这么细,再说细点感觉就是你对的侮辱
上一句执行后就会展现你的执行计划信息。
当然是用set autotrace on有时会报Cannot SET AUTOTRACE的错。小弟这里提供一个脚本,脚本的原理自己看内容(估计也没几个人喜欢看,哈哈)。当前脚本在oracle用户下执行。(不知道是小弟眼拙还是真的不能上传文件,脚本上传不了,大致内容如下:
#!/bin/sh
utlxplan_url=find $ORACLE_HOME -name "utlxplan.sql"
plustrce_url=find $ORACLE_HOME -name "plustrce.sql"
sqlplus / as sysdba <<EOFbr/>@${plustrce_url}
@${utlxplan_url}
grant plustrace to scott;
exit;
EOF
)
方式三 视图
通过查询v$sql和V$SQL_PLAN两个视图来查询
第一步:查询v$sql表根据sql_text(执行的SQL)获取sql_id
第二步:根据上一步得到的sql_id查询V$SQL_PLAN表的中对应的执行计划
个人常用方法:简单暴力哈哈
方式四 awrsqrpt.sql
认识的多个大佬常用的方法:
第一步:
使用dba用户登录 sqlplus / as sysdba
第二步:
执行
SQL> @?/rdbms/admin/awrsqrpt.sql
会出现以下页面:
pecify the Report Type
Would you like an html report, or a plain text report?
Enter ‘html‘ for an HTML report, or ‘text‘ for plain text
Defaults to ‘html‘
Enter value for report_type:
这是让你选择输出的文件类型,选html吧,别问为什么,就是喜欢。
第三步:
回车后会出现如下页面:
Instances in this Workload Repository schema
DB Id Inst Num DB Name Instance Host
- 1564708553 1 ORCL orcl wcg
Enter value for dbid:
是让你选择要生成AWR报告的实例DBid:例如我的就选1564708553 然后回车
第四步:
回车会会出现如下页面
Using 1564708553 for database Id
Enter value for inst_num:
是让你选择要生成AWR报告的实例inst_num,例如我则选:1然后回车
第五步:
回车后会出现如下页面
Specify the number of days of snapshots to choose fromEntering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing <return> without specifying a number lists all completed snapshots.
Enter value for num_days:
让你输入打印日志的天数(今天是1)
输入后回车
第六步:
回车后会出现如下页面
Listing the last day‘s Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level
orcl ORCL 9 19 Jun 2020 21:51 1
10 19 Jun 2020 23:00 1
11 19 Jun 2020 23:31 1
Specify the Begin and End Snapshot Ids
Enter value for begin_snap:
让你选择填写要生成报告的begin_snap(也就是开始点)然后回车
第七步:
回车后出现如下页面
Enter value for end_snap:
让你选择填写要生成报告的end_snap(也就是结束点)然后回车
第八步:
回车后出现如下页面:
Specify the Report Name
The default report file name is awrrpt_1_9_10.html. To use this name,
press <return> to continue, otherwise enter an alternative.
Enter value for report_name:
然你输入日志的名称:例如wcg20200619.html 然后回车就会生成相应的执行计划
日志的生成路径一般在你的当前路径。也就是你在/opt/oracle下执行sqlplus / as sysdba 开始的打印之路。Name日志就会生成在/opt/oracle下
以上是关于oracle执行计划打印的主要内容,如果未能解决你的问题,请参考以下文章