使用pl/sql監控PROCEDURE執行時間

創建表

CREATE TABLE PROCESS_TIMING_LOG
(
  PROCESS_NAME       VARCHAR2(50 BYTE),
  EXECUTION_DATE     DATE,
  RECORDS_PROCESSED  NUMBER,
  ELAPSED_TIME_SEC   NUMBER
)

創建Procedure

CREATE OR REPLACE PROCEDURE SCOTT.update_salary
AS
   CURSOR cur_employee
   IS
      SELECT empno, sal, ROWID FROM EMPLOYEE_TEST;

   lv_new_salary_num   NUMBER;
   lv_count_num        PLS_INTEGER := 0;
   lv_start_time_num   PLS_INTEGER;
   lv_total_time_num   NUMBER;
BEGIN
   lv_start_time_num := DBMS_UTILITY.GET_TIME;

   FOR cur_employee_rec IN cur_employee
   LOOP
      lv_count_num := lv_count_num + 1;
      lv_new_salary_num := cur_employee_rec.sal;

      UPDATE employee_test
         SET sal= lv_new_salary_num
       WHERE ROWID = cur_employee_rec.ROWID;
   END LOOP;

   lv_total_time_num := (DBMS_UTILITY.GET_TIME - lv_start_time_num) / 100;

   INSERT INTO process_timing_log (process_name,
                                   execution_date,
                                   records_processed,
                                   elapsed_time_sec)
        VALUES (‘update_salary‘,
                SYSDATE,
                lv_count_num,
                lv_total_time_num);

   COMMIT;
END update_salary;
/
運行結果

PROCESS_NAME,EXECUTION_DATE,RECORDS_PROCESSED,ELAPSED_TIME_SEC
update_salary,2016/8/1 下午 02:57:08,4257554,532.28

时间: 2024-12-21 20:56:13

使用pl/sql監控PROCEDURE執行時間的相关文章

【转】Visual Studio單元測試小應用-測執行時間

[转]Visual Studio單元測試小應用-測執行時間 Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單元測試來測,快又簡單. Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單元測試來測,快又簡單. 範例程式:有人說Catch不加Expection,因為不用匹配會比較快,我不相信,就來測測看. { for (i

在oracle RAC 环境下用 PL/SQL Developer debug procedure 出现 hang 的情况

现象描述: 用plsql developer 连接编译procedure 的时候都很正常.一旦开始Test进入Debug模式的时候就Hang住了. 初步猜测是没有权限,可是是DBA角色呀,如果没有权限会直接报没有权限的错误吧. 后面猜测是Oracle 或者PL SQL Developer的版本问题,用同一个PLSQL 在相同版本的不同机器上测试,结果另外一台机器可以Debug. 开始猜测是不是RAC的原因. 搜索到这个解释:http://forums.allroundautomations.co

GitHub for Windows 內建 Git Shell 執行時顏色所代表的意義

在使用指令列版控的過程中,經常有機會用到 Git Shell 這套優異的 Git 版控環境,一來他使用 Windows PowerShell 為核心,其訊息顯示與輸入都支援 Unicode,比較不會有中文字集轉換的問題:二來輸入命令或分支名稱的時候還有 IntelliSense 功能協助,非常貼心的設計:三來在版控的過程中,可以看出當下工作目錄位於哪個分支上,這個提示也很棒:四來常會看到他透過顏色與一些特殊符號提示你目前工作目錄的狀態,但不特別看文件還真的不太容易知道它顏色代表的意義,因此特別撰

PL/SQL 05 存储过程 procedure

--存储过程(不带参数) create or replace procedure 存储过程名as  变量.常量声明;begin  代码;end; --存储过程(带输入参数) create or replace procedure 存储过程名(参数1 类型,参数2 类型,...)   --可以设默认值,如low int:=1000as  变量.常量声明;begin  代码;end; --存储过程(带输出参数) create or replace procedure 存储过程名(参数1 out 类型

PL/SQL(Procedure Language & Structured Query Language)

目前的PL/SQL包括两部分,一部分是数据库引擎部分:另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎.可以将这两部分称为:数据库PL/SQL和工具PL/SQL. PL/SQL中的基本单位是块(Block),所有PL/SQL程序都是由块组成的.PL/SQL中的块由3部分组成:声明部分,程序代码.异常处理代码.如下: DECLARE  /* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */ BEGIN /*  执行部分:  过程及SQL

ORACLE PL/SQL编程详解

ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点.本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

PL/SQL详细介绍,设置oracle相关

1. 实现参照完整性      指若两个表之间具有主从关系(即主外键关系),当删除主表数据时,必须确保相关的从表数据已经被删除.  当修改主表的主键列数据时,必须确保相关从表数据已经被修改.为了实现级联删除,可在定义外部键约束时指定ON DELETE CASCADE关键字  alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno) on delete cascade; 实现级联更新,

PL/SQL存储过程编程

/**author huangchaobiao *Email:[email protected] */ PL/SQL存储过程编程(上) 1. Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用; 4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6) PL/SQL: 存储在数据内运行, 其他