如何查询执行的sql
在日常的开发过程中,我们经常需要查询执行过的sql语句以便进行调试和优化。这篇文章将介绍几种查询执行过的sql语句的方法。
1. 使用Oracle SQL Developer
Oracle SQL Developer是一款功能强大的IDE,提供了许多实用的工具和功能。其中一个非常有用的功能是查询分析器,通过该功能可以查看执行过的sql语句和相应的参数值。
使用方法如下:
打开Oracle SQL Developer,连接到相应的数据库实例。
点击菜单栏上的“查询”选项,再点击“打开查询窗口”。
在查询窗口中输入以下sql语句:
SELECT SQL_TEXT, LAST_LOAD_TIME, EXECUTIONS, ELAPSED_TIME, CPU_TIME, DISK_READS, BUFFER_GETS, ROWS_PROCESSED
FROM V$SQL
WHERE (LAST_LOAD_TIME IS NOT NULL)
AND (SQL_TEXT LIKE 'SELECT%' OR SQL_TEXT LIKE 'UPDATE%' OR SQL_TEXT LIKE 'DELETE%')
ORDER BY LAST_LOAD_TIME DESC;
点击“执行查询”按钮。
在结果窗口中查看执行过的sql语句和相应的执行情况。
通过该方法,我们可以查看到执行过的sql语句、执行时间、占用CPU时间、磁盘读取、Buffer Gets等信息,有助于我们定位性能问题。
2. 使用Oracle AWR报告
Oracle AWR(自动工作负载存储库)是一个非常有用的性能调优工具。其中一个功能是生成性能报告,通过该报告可以查看执行过的sql语句和相应的性能情况。
使用方法如下:
登录到数据库实例。
在SQL Plus中执行以下命令:
SELECT output FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(SYSDATE - 7, SYSDATE));
该命令将生成一个AWR报告,包含了大量的性能信息,包括SQL统计信息。
我们可以通过搜索“SQL Statistics”来查找执行过的sql语句,其中包括执行时间、占用CPU时间、磁盘读取、Buffer Gets等信息。
3. 使用Oracle Trace文件
Oracle Trace文件记录了数据库实例执行的所有SQL语句以及相应的性能信息。通过分析Trace文件,我们可以查看执行过的所有SQL语句以及相应的执行情况。
使用方法如下:
打开sqlnet.ora文件(通常位于$ORACLE_HOME/network/admin目录下)。
在文件中添加以下行并保存:
DIAG_ADR_ENABLED = ON
TRACE_LEVEL_SERVER = 16
TRACE_FILE_SERVER = SERVER
TRACE_DIRECTORY_SERVER = /tmp
上述配置将Trace文件输出到/tmp目录中。
3. 重启数据库服务。
4. 执行SQL语句。
5. 执行以下命令查找Trace文件:
ls -l /tmp/*SERVER*.trc
6. 执行以下命令分析Trace文件:
tkprof /tmp/<Trace文件名>.trc /tmp/output.txt
该命令将分析Trace文件,并将结果输出到/tmp/output.txt文件中。
我们可以通过搜索“SQL ID”来查找执行过的sql语句,其中包括执行时间、占用CPU时间、磁盘读取、Buffer Gets等信息。
总结
以上介绍的三种方法都可以查询执行过的sql语句以及相应的性能情况。其中,Oracle SQL Developer和AWR报告比较方便,适用于日常开发和性能调优。而Trace文件对于一些特殊情况,比如其他方法无法定位的性能问题,提供了非常有效的手段。