202101 如何查询存储过程调用的历史记录

本文介绍了如何通过Oracle的调度工具监控存储过程的执行情况。通过查询`user_scheduler_jobs`、`user_scheduler_job_log`和`user_scheduler_job_run_details`视图,可以获取存储过程的调用历史、执行时间和性能数据。此外,`dba_objects`表用于查看存储过程的创建时间,为数据库管理和性能优化提供了便利。

自己的见解

如果存储过程需要多次执行(重复被调用)
那么,一般会以 jobs的形式 来 调用 存储过程。

select * from user_scheduler_jobs;

可以看到 哪个job 调用了哪个存储过程。

select * from user_scheduler_job_log;

可以查看jobs 被调用的时间点。间接地可以查询到存储过程被调用的历史记录。

select * from user_scheduler_job_run_details;

还可以看到每个job 到底花费了多长时间来执行。
这点对我来说也非常重要。此前都用表来记录。
现在才发现,系统里早就帮你想好了。

非常开心。

PS:

select * from dba_objects where object_type = 'PROCEDURE'

可以查看到 存储过程的创建时间。

要查看数据库中存储过程的历史执行记录,具体方法取决于所使用的数据库管理系统(DBMS)。以下是几种常见数据库系统的实现方式: ### SQL Server 中的实现 SQL Server 提供了动态管理视图 `SYS.dm_exec_procedure_stats` 和 `SYS.procedures` 来获取存储过程的执行统计信息。以下是一个查询示例,用于检索某个存储过程的执行历史记录[^3]: ```sql SELECT TOP 100 db_name(d.database_id) AS DBName, s.name AS 存储名称, s.type_desc AS 存储类型, d.cached_time AS SP添加到缓存的时间, d.last_execution_time AS 上次执行SP的时间, d.last_elapsed_time AS [上次执行SP所用的时间(微妙)], d.total_elapsed_time AS [完成此SP的执行所用的总时间(微妙)], d.total_elapsed_time / d.execution_count AS [平均执行时间(微妙)], d.execution_count AS 自上次编译以来所执行的次数 FROM SYS.procedures S JOIN SYS.dm_exec_procedure_stats D ON S.object_id = D.object_id WHERE S.NAME = 'SP_Name' ORDER BY D.total_elapsed_time / D.execution_count DESC; ``` 通过上述查询可以获取存储过程的执行次数、执行时间、平均执行时间等信息。 ### MySQL 中的实现 MySQL 的事件调度器(Event Scheduler)可以用来定时执行存储过程。虽然它主要用于调度任务,但结合日志功能可以间接记录存储过程的执行情况。可以通过开启慢查询日志或通用查询日志来捕获存储过程的执行记录。此外,也可以在存储过程中手动插入执行记录到日志表中,以实现更精确的跟踪。 ### Oracle 中的实现 Oracle 数据库没有直接提供存储过程执行历史的系统视图,但可以通过启用审计功能(Audit)来记录存储过程的执行情况。例如,使用以下命令启用对特定存储过程的审计: ```sql AUDIT EXECUTE ON schema_name.procedure_name; ``` 启用后,可以通过查询 `DBA_AUDIT_TRAIL` 视图来查看存储过程的执行记录。 ### PostgreSQL 中的实现 PostgreSQL 没有内置的存储过程执行历史记录功能,但可以通过扩展模块(如 `pg_stat_statements`)来实现类似的功能。该模块可以记录所有 SQL 语句的执行统计信息,包括存储过程调用次数和执行时间。 ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值