怎样看oracle查询语句执行计划

老实说,查看Oracle实施计划主要有两种方法,PL/SQL Developer和SQLPlus。
后者更灵活但更难使用。

为了扩展,PL/SQL Developer 简单易用,只需转到 File->New->ExplainPlanWindow。
去年我们跑了一个有几千万数据的项目,依靠它来快速发现问题。
成本的单位是n%,基数是估计的行数,相当于rows。
不过,使用这个工具有一个问题——不支持开启自动跟踪,而且信息不完整。
一些细节需要使用sqlplus来查找。

还有一点就是sqlplus中设置的自动跟踪是一种暴力破解的方法。
当你在特定的测试环境中运行一个运行到凌晨的复杂查询时,说实话是相当尴尬的,因为它会等到 SQL 运行完毕才部署计划,直接拉长了优化周期。
后来我发现不对劲。
事实上,您可以使用 DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATSLAST')。
比如上次优化3 000级的SQL报表,我们就靠它提前看到计划,不用等结果。
等等,还有一件事。
这些 DBMS_XPLAN 命令的参数包括 ALLSTATSLAST 和 TYPICAL。
第一个是已经实施的理想计划,第二个是估计的理想计划,具体取决于场景。

起初我以为自动跟踪只是运行 SQL。
事实上,它还有一个SQL_EXPLAIN模式,该模式只创建计划但不执行它们。
很多人没有注意到这一点。

建议首先尝试作为 PL/SQL 开发人员。
如果不行,删除sqlplus和DBMS_XPLAN,但切记不要选错参数。

oracle查看历史执行语句

哦,其实Oracle可以通过很多方法来检查执行语句的历史记录。
例如,一种方法是使用 AUDIT 功能。
此审核功能就像您家中的摄像头。
您可以监控您想监控的人。
例如,如果要监视所有 SELECT 语句,请编写“AUDITSELECT;”。
确保相关操作记录在审计日志中。
审计记录隐藏在 SYS.AUD$ 表中。
您可以使用 SELECT 语句来检查这一点,但直接检查该表确实很麻烦。
我需要根据时间等进行过滤。

第二种方法是使用 SQL_TRACE 函数。
就像在家里安装了一台显示器一样。
开启该功能后,后续的SQL语句都会被记录。
要设置此项,请使用 ALTERSESSION 命令,例如“ALTERSESSIONSETSQL_TRACE=TRUE;”有关于此的记录文件在哪里?这取决于参数 USER_DUMP_DEST。
如果找到该文件,它包含详细信息,例如执行的 SQL 语句。
不过,该文件包含大量信息,应仔细查找。

第三种方法是使用 PL/SQLDeveloper 等工具。
这个工具就像一个小助手。
按该按钮可以查看当前会话或指定时间段内执行的 SQL 语句。
操作非常简单,只需几个菜单选项或单击按钮即可。

不管怎样,这些方法可以让你有效地查看Oracle中执行语句的历史记录,这对于数据库操作的审计、故障排除和性能分析非常有用。