`

使用 DBMS_APPLICATION_INFO 进行实时监控

 
阅读更多
   dbms_application_info 包,用于交换环境中执行处理的时间点信息。
让一个长时间运行的PL/SQL程序提供处理信息。以下代码段每隔1000 行记录就更新应用程序的信息,内容主要是处理的记录数和花费的时间。

conn plsql/plsql
SQL> create table s_employee_test as select * from hr.employees;
 
Table created
SQL> insert into s_employee_test select * from s_employee_test
  2  ;
 
29 rows inserted
...
...
SQL> insert into s_employee_test select * from s_employee_test;
 
237568 rows inserted
 
SQL> commit;
 
Commit complete
SQL> select count(*) from s_employee_test;
 
  COUNT(*)
----------
    475136

SQL> declare
  2    cursor cur_emp is
  3      select employee_id,salary,rowid from s_employee_test;
  4      lv_new_salary_num number;
  5      lv_count_num pls_integer := 0;
  6      lv_start_time_num pls_integer;
  7  begin
  8    lv_start_time_num := dbms_utility.get_time;
  9    for cur_emp_rec in cur_emp loop
 10      lv_count_num := lv_count_num + 1;
 11      lv_new_salary_num := cur_emp_rec.salary;
 12      update s_employee_test set salary = lv_new_salary_num
 13        where rowid=cur_emp_rec.rowid;
 14      if mod(lv_count_num,1000) = 0 then
 15        dbms_application_info.set_module('records Processed:'||lv_count_num,'Elapsed :'||(dbms_utility.get_time-lv_start_time_num)/100||' sec');
 16      end if;
 17    end loop;
 18    commit;
 19    dbms_application_info.set_module('records Processed:'||lv_count_num,'Elapsed :'||(dbms_utility.get_time-lv_start_time_num)/100||' sec');
 20  end;
 21  /
 
PL/SQL procedure successfully completed




通过查询 v$session,可以监控处理过程。

select username,sid,serial#,module,action from v$session where username='PLSQL';


SQL> select count(*) from s_employee_test;
 
  COUNT(*)
----------
    475136

SQL> select username,sid,serial#,module,action from v$session where username='PLSQL';
 
USERNAME                              SID    SERIAL# MODULE                                           ACTION
------------------------------ ---------- ---------- ------------------------------------------------ --------------------------------
PLSQL                                   9        309 PL/SQL Developer                                 SQL Window - select username,sid
PLSQL                                 132         64 PL/SQL Developer                                 Command Window - New
PLSQL                                 192        187 records Processed:74000                          Elapsed :20.37 sec
PLSQL                                 197        239 PL/SQL Developer                                 Main session

SQL> select username,sid,serial#,module,action from v$session where username='PLSQL';
 
USERNAME                              SID    SERIAL# MODULE                                           ACTION
------------------------------ ---------- ---------- ------------------------------------------------ --------------------------------
PLSQL                                   9        309 PL/SQL Developer                                 SQL Window - select username,sid
PLSQL                                 132         64 PL/SQL Developer                                 Command Window - New
PLSQL                                 192        187 records Processed:94000                          Elapsed :25.82 sec
PLSQL                                 197        239 PL/SQL Developer                                 Main session

...
...
SQL> select username,sid,serial#,module,action from v$session where username='PLSQL';
 
USERNAME                              SID    SERIAL# MODULE                                           ACTION
------------------------------ ---------- ---------- ------------------------------------------------ --------------------------------
PLSQL                                   9        309 PL/SQL Developer                                 SQL Window - select username,sid
PLSQL                                 132         64 PL/SQL Developer                                 Command Window - New
PLSQL                                 192        187 records Processed:475136                         Elapsed :130.18 sec
PLSQL                                 197        239 PL/SQL Developer                                 Main session


最后一次查询的时间是在 PL/SQL 程序单元已经完成时。

以上演示了一种特定环境的有价值的技巧,并提供了实时监控的机制,这样能更容易地准确测量出程序已经运行的时间[/color],并可估算出程序还要多长时间才能完成[color=red]
分享到:
评论

相关推荐

    Oracle_Database10g_性能调整与优化-第10章_使用PLSQL提高性能

    使用 DBMS_APPLICATION_INFO 进行实时监控 DBMS_APPLICATION_INFO 包为用户提供了一个强大的机制来交换环境中执行处理的时间点信息。通过这种方式,可以在长时间运行的 PL/SQL 程序中实时地监控进度,例如每处理...

    Oracle PL/SQL常用47个工具包

    15. **DBMS_APPLICATION_INFO**: 用于设置和查询应用程序上下文信息,帮助追踪和监控用户会话。 16. **DBMS_REDEFINITION**: 在线重定义表,允许在不中断应用的情况下更改表结构。 17. **DBMS_CRYPTO**: 提供加密...

    Oracle内置包的使用方法.rar

    `DBMS_APPLICATION_INFO.SET_CLIENT_INFO`设置客户端信息,`DBMS_APPLICATION_INFO.READ_CLIENT_INFO`读取信息。 14. **DBMS_SPACE**: 监控和管理数据库空间,如计算表空间和段的使用情况。`DBMS_SPACE.SPACE_USAGE...

    Oracle运维最佳实践-下.pdf 带书签

    - 使用`DBMS_AIO`包来管理和监控AIO操作。 - **2.1.13 Optimize Connection Performance** - 优化连接性能对于提高多用户环境下的响应速度非常重要。 - 本书提供了多种方法来提高连接性能,包括使用连接池、调整...

    如何在Oracle数据库10g中跟踪SQL

    开发人员可以通过PL/SQL包DBMS_APPLICATION_INFO设置这些信息。服务名称则由连接字符串确定,未指定服务的会话将关联到sys$users服务。 启用跟踪的过程可以分为几个步骤。首先,可以设定user_dump_dest参数来指定...

    Oracle PL SQL BuiltIns - Pocket Reference

    - **DBMS_APPLICATION_INFO**:这个包允许开发者设置和查询应用级别的信息,如应用名称、模块名称和动作名称,这对于跟踪和监控系统性能非常有用。 - **DBMS_AQ**(Advanced Queuing):提供消息队列服务,支持...

    oracle日常维护手册

    这包括查询V$视图(如V$SESSION、V$INSTANCE、V$DATABASE等)来了解系统资源使用情况,以及使用Oracle企业管理器(EM)、SQL*Plus的DBMS_OUTPUT或日志文件进行性能跟踪。 二、性能优化 性能优化是提高数据库效率的...

    oracle dg监控程序、归档日志监控程序

    2. 实现方式:可以通过SQL查询、Oracle Enterprise Manager (OEM)、脚本化工具如DBMS_METADATA、DBMS_SERVER_ALERT等进行监控。 3. 自动化监控:描述中提到的"DG监控程序"可能包含了自定义的PL/SQL脚本,用于定时...

    sql面试题\oracle面试题目

    - 使用`SELECT * FROM v$diag_info`查看诊断信息的位置。 - 使用`SELECT * FROM v$database`和`v$instance`查看实例级的错误信息。 - 使用`DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)`和`DBMS_...

    如何oracle调试存储过程

    在存储过程中添加适当的日志记录语句,如使用`DBMS_APPLICATION_INFO`或`DBMS_LOGMNR`包,可以帮助记录执行过程中的关键信息,对于后期分析问题原因非常有帮助。 ### 调试技巧与最佳实践 1. **代码审查与单元测试*...

    11g_10g_linux_windows_bbed.rar

    11g引入了更多高级功能,如自动存储管理(ASM)、实时应用集群(RAC)的改进、数据泵(Data Pump)的性能提升以及更好的诊断和性能监控工具。而10g则引入了Real Application Clusters (RAC)、Automatic Workload ...

    精通oracle 10g的管理

    11. **数据库监控**:使用AWR(自动工作负载 repository)和ASH(活动会话历史)进行性能分析,以及EM(企业管理器)进行日常监控和维护。 12. **问题诊断**:学习如何使用Oracle的诊断工具,如trace文件、alert ...

    oracle DBA宝典和教程.rar

    10. **监控与维护**:定期进行数据库健康检查,使用DBMS_STATS收集统计信息,进行数据库维护任务,如表空间扩展、归档日志管理等。 这个“Oracle DBA宝典和教程”应该涵盖了以上这些方面,并可能包含实战案例、练习...

    Oracle 10g/11g Data and Database Management Utilities

    Oracle Enterprise Manager是一套全面的管理工具集,包括Grid Control和Database Control,用于监控、配置和管理Oracle环境中的所有组件。 #### 4. Recovery Manager (RMAN) RMAN是Oracle数据库的备份和恢复工具,...

    ORACLE10G基础培训

    例如,使用DBA视图监控数据库性能,使用ALTER TABLE、ALTER SYSTEM等命令调整参数,使用DBMS_SPACE包管理表空间,以及定期执行DBMS_JOB或DBMS_SCHEDULER来安排维护任务。 6. **Oracle 10G新特性**:Oracle 10G引入...

    oracle_dba常用sql脚本分类文档

    升级数据库时,可能涉及到数据泵导入导出(expdp/impdp)或使用RMAN进行数据库迁移。 2. 性能监控与优化: SQL脚本在性能监控中起到关键作用,例如,使用`EXPLAIN PLAN`分析查询执行计划,`V$视图`来检查系统状态...

    Oracle 10g 的系统管理员使用手册

    - **性能监控**:使用Enterprise Manager Cloud Control或SQL*Plus命令监控数据库状态,识别性能瓶颈。 - **数据库维护**:定期执行数据库维护任务,如DBMS_REPAIR检查和修复数据文件错误,DBMS_STATS收集统计信息...

    oracle ocp 071 12c.rar

    理解DBMS_scheduler和DBMS_job的使用,进行自动化任务调度。 8. **数据迁移与升级**:掌握数据迁移的方法,如使用Data Pump、SQL*Loader进行数据迁移,以及数据库从早期版本到12c的升级流程。 9. **故障排查**:...

Global site tag (gtag.js) - Google Analytics