PLSQL查询查询过的SQL语句的快捷方式Ctrl+E

博客介绍了PLSQL中查询已查询过的SQL语句的快捷方式,即使用Ctrl+E,为PLSQL使用者提供了便利,提高查询效率。

PLSQL查询查询过的SQL语句的快捷方式Ctrl+E

在 Oracle 数据库中,可以通过多种方式查询 SQL 的执行记录,尤其是在 PL/SQL 开发环境中,结合系统视图和内置工具可以实现高效的查询与分析。以下是几种常用的方法: ### 1. 使用 `V$SQL` 视图查询最近执行的 SQL 语句 `V$SQL` 是 Oracle 提供的一个动态性能视图,记录了所有最近在数据库中执行的 SQL 语句及其执行统计信息。可以使用如下查询来查看执行过的 SQL: ```sql SELECT sql_id, sql_text, executions, elapsed_time, cpu_time, disk_reads, buffer_gets FROM v$sql WHERE sql_text LIKE '%关键字%'; ``` 该视图中的字段提供了丰富的信息,例如执行次数、耗、CPU 间、磁盘读取和缓冲区获取等,适用于性能分析和问题排查[^1]。 ### 2. 查询 `V$SQLAREA` 获取聚合信息 `V$SQLAREA` 提供了按 SQL 文本分组的聚合信息,适用于查看不同 SQL 的总体执行情况: ```sql SELECT sql_text, executions, elapsed_time, cpu_time FROM v$sqlarea ORDER BY elapsed_time DESC; ``` 此视图可以快速识别出执行间较长或执行频率较高的 SQL 语句,有助于优化数据库性能[^1]。 ### 3. 使用 `DBA_HIST_SQLSTAT` 查询历史执行记录(需 AWR 支持) 如果需要查询更早的历史 SQL 执行记录,可以使用 `DBA_HIST_SQLSTAT` 视图,它记录了通过 AWR(Automatic Workload Repository)快照捕获的 SQL 执行统计信息: ```sql SELECT snap_id, sql_id, sql_text, executions_delta, elapsed_time_delta FROM dba_hist_sqlstat WHERE sql_text LIKE '%关键字%'; ``` 使用该视图需要数据库启用了 AWR 功能,并且通常用于长期性能监控和趋势分析[^1]。 ### 4. 使用 PL/SQL Developer 的 SQL 历史功能 在 PL/SQL Developer 工具中,用户可以通过其内置的“SQL 历史”功能查看最近执行过的 SQL 语句。打开方式如下: 1. 在 PL/SQL Developer 主界面中点击菜单栏的 **Tools**。 2. 选择 **History** 或使用快捷键 **Ctrl+Shift+H**。 3. 查看所有已执行的 SQL 记录,并支持搜索和过滤。 这一功能特别适合开发人员在调试过程中快速回顾和复用 SQL 语句[^2]。 ### 5. 使用日志表记录 SQL 执行情况 如果希望长期记录特定 SQL 的执行情况,可以在应用程序或 PL/SQL 过程中显式地将 SQL 语句插入到日志表中。例如: ```sql CREATE TABLE sql_log ( log_id NUMBER PRIMARY KEY, sql_text VARCHAR2(4000), exec_time DATE ); -- 在 PL/SQL 过程中插入日志 BEGIN INSERT INTO sql_log (log_id, sql_text, exec_time) VALUES (1, 'SELECT * FROM employees', SYSDATE); -- 执行实际 SQL FOR rec IN (SELECT * FROM employees) LOOP DBMS_OUTPUT.PUT_LINE(rec.employee_id || ' ' || rec.first_name); END LOOP; END; ``` 这种方法适用于需要精确控制 SQL 日志记录的场景,例如审计或调试关键业务逻辑。 ### 6. 使用 `SQL Trace` 和 `TKPROF` 工具 对于更深入的 SQL 执行分析,可以启用 `SQL Trace` 来记录特定会话的 SQL 执行细节,然后使用 `TKPROF` 工具生成可读性更强的报告: ```sql -- 启用当前会话的 SQL Trace ALTER SESSION SET sql_trace = TRUE; -- 执行需要跟踪的 SQL 语句 SELECT * FROM employees WHERE department_id = 10; -- 关闭 SQL Trace ALTER SESSION SET sql_trace = FALSE; ``` 生成的跟踪文件位于数据库的 `user_dump_dest` 目录下,使用 `TKPROF` 工具进行格式化: ```bash tkprof tracefile.trc output.txt ``` 此方法适用于性能调优和复杂 SQL 的深入分析[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值