PLSQL Developer 分析存储过程

因公司需求编写Oracle存储过程后,需分析各语句执行时间以优化。网上手工应用Profiler方法繁杂,本文详细介绍在PLSQL Developer中应用Profiler的步骤,包括右键测试、创建概览图报告、执行存储过程等,还说明了各列意义及Profiler面板工具栏和配置对话框,助于存储过程分析优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近应公司需要,需要编写ORACLE存储过程。本人新手,在完成存储过程的编写后,感觉需要对存储过程中各个语句的执行时间进行分析,以便

对整个存储过程进行优化。

  由于用的是PLSQL Developer 客户端工具,而网上大多介绍的是通过手工方法应用Profiler,使用相对比较烦杂,大致是通过命令行,以SYS用户

首先创建dbms_profiler包,而且还要创建一个用于存放跟踪信息的用户,及其prof表和序列的同义词,最后用profiler用户创建prof表和序列,并赋权。

这里对这种方法就不做介绍了。(如有需要,将会另写一篇关于此方法的介绍)

 

下面将详细介绍在PLSQL DEVELOPER 应用Profiler:

1、右键存储过程,单击测试

2、单击测试后,会弹出一个测试窗口,如下图,此时点击"创建概览图报告"

3、点击"执行" 或者  F8 执行存储过程

 

4、执行完后 点击"测试窗口" 上的 概览图 会出现如下:

每列的详细意义如下:
unit        --单元名称,即执行的存储过程,包括其调用的过程
line        --代码行号
total time    --此行执行时间(颜色长度表示本行代码的执行时间与最长代码执行时间的百分比图)
occurrences    --此行执行次数
text        --对应代码行,对于加密的代码,将不能显示
Average time    —平均运行时间
maximum time    --最大运行时间
minimum time    --最小运行时间(以上三个时间默认不显示,可以通过配置对话框选择显示,参加4.4)

列表中显示的源代码只显示一行,如果要定位则可以在对应的行中打开右键,选择[Go to unit line] ,这样就会直接跳到对应的源代码位置。

Profiler面板的工具栏说明:
a、显示配置对话框
b、刷新
c、删除当前运行号的数据
d、Run 显示当前的系统的所有Profiler列表,缺省为当前的跟踪
e、Unit 显示本次跟踪的单元列表信息(执行时间),缺省为所有单元的执行时间

5.4、Profiler配置对话框

这样 就可以对存储过程做一个很好的分析,从而对其进行优化。

 

### 如何在 PL/SQL Developer 中创建存储过程 要在 PL/SQL Developer 中创建存储过程,可以通过以下方式实现: #### 1. 打开 SQL Window 编写存储过程 在 PL/SQL Developer 的主界面中,选择 `File` 菜单下的 `New` → `SQL Window` 来打开一个新的 SQL 查询窗口。在此窗口中,可以编写完整的存储过程代码。 以下是创建存储过程的一个基本模板: ```sql CREATE OR REPLACE PROCEDURE procedure_name ( param1 IN datatype, param2 OUT datatype ) AS BEGIN -- 存储过程逻辑部分 NULL; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20001, 'An error occurred'); END; / ``` 完成代码编辑后,可以直接点击工具栏上的执行按钮(绿色三角形),如果存储过程语法无误,则会显示 `Compiled Successfully` 提示[^1]。 --- #### 2. 使用 Procedures 目录直接新建存储过程 另一种更直观的方式是在左侧浏览器面板中的 `Procedures` 下右键单击,选择 `New Procedure`。这将自动弹出一个预设格式的存储过程模板供用户填写具体内容。 例如: ```sql CREATE OR REPLACE PROCEDURE my_procedure ( input_param IN VARCHAR2, output_param OUT NUMBER ) IS BEGIN DBMS_OUTPUT.PUT_LINE('Input Parameter: ' || input_param); output_param := LENGTH(input_param); -- 示例逻辑:计算字符串长度 END; / ``` 保存并编译此存储过程后,可以在右侧的结果区域查看状态反馈。 --- #### 3. 测试已创建的存储过程 为了验证存储过程的功能是否正常,建议对其进行测试。具体操作如下: - 在左侧面板的 `Procedures` 列表中定位到目标存储过程; - 右键单击该存储过程名称,选择 `Test` 功能; - 进入 Test 窗口后,针对每个输入参数(IN 类型)提供具体的值; - 配置完毕后,点击顶部工具栏中的 `Run` 按钮或按下快捷键 `Ctrl+R` 启动测试流程[^3]。 如果一切顺利,输出结果将在下方日志区展示出来;若有异常情况发生,则需依据报错信息调整原始代码直至问题解决为止。 --- #### 注意事项 - **SQL 大小写习惯**:虽然 Oracle 数据库本身不区分大小写,但从可读性和维护角度考虑,推荐保持关键字全大写的编码风格。可通过 Tools -> Preferences -> Editor -> Keyword Case 将其设置为默认转换模式[^2]。 - **错误排查**:即使存储过程能够成功编译,也可能因运行时逻辑缺陷而导致实际调用失败。因此务必提前做好单元测试工作以减少后续麻烦。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值