ITPUB??ì3
ITPUB论坛 » Oracle开发 » 使用DBMS_PROFILER 调试存储过程

标题: [笔记] 使用DBMS_PROFILER 调试存储过程
离线 grwdpy
中级会员



精华贴数 0
个人空间 0
技术积分 1102 (1606)
社区积分 1 (37239)
注册日期 2005-4-6
论坛徽章:2
2008北京奥运纪念徽章:跆拳道生肖徽章2007版:鸡    
      

发表于 2008-7-16 10:39 
使用DBMS_PROFILER 调试存储过程

下面是我使用DBMS_PROFILER 调试存储过程一个实例,记录在这里,需要的朋友可以参考下,大家共同进步...

1、以dba身份登录,安装DBMS_PROFILER package(下面所用到的sql文件都在Eracleproduct10.2.0db_1RDBMSADMIN目录下)
SQL> start E:Informationoracle学习专题文档ProcedureTraceprofload.sql;
注意,在运行的时候,必须包含dbmspbp.sql、prvtpbp.plb两个文件

2、创建用户并赋权(专门用来针对pro调试信息的)
SQL> CREATE USER profiler IDENTIFIED BY profiler DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
SQL> GRANT connect TO profiler;

3、创建同义词
SQL> CREATE PUBLIC SYNONYM plsql_profiler_runs FOR profiler.plsql_profiler_runs;
SQL> CREATE PUBLIC SYNONYM plsql_profiler_units FOR profiler.plsql_profiler_units;
SQL> CREATE PUBLIC SYNONYM plsql_profiler_data FOR profiler.plsql_profiler_data;
SQL> CREATE PUBLIC SYNONYM plsql_profiler_runnumber FOR profiler.plsql_profiler_runnumber;

4、连接Profiler用户并且运行proftab.sql
SQL> connect
[email=profiler/profiler@rsdb]profiler/profiler@rsdb[/email]
SQL> start E:Informationoracle学习专题文档ProcedureTraceproftab.sql;
5、连接相关用户,调试存储过程
SQL> conn
[email=sis_test/sis_test@rsdb]sis_test/sis_test@rsdb[/email]
已连接。
SQL> Declare
  2   l_result binary_integer;
  3  begin
  4   l_result :=DBMS_PROFILER.start_profiler(run_comment => 'P_RandomChange:' || sysdate);
  5   P_RandomChange();
  6   l_result := DBMS_PROFILER.stop_profiler;
  7  end;
  8  /
以上代码中,P_RandomChange就是我所调试的存储过程。
  
6、查看结果:
SQL> set linesize 1000;
SQL> set trimout on
SQL> column runid format 99999
SQL> column run_comment format A50
SQL> select runid,to_char(run_date,'yyyy-mm-dd hh24:mi:ss') run_date ,run_comment,run_total_time
  2  from plsql_profiler_runs order by runid;

RUNID RUN_DATE       RUN_COMMENT                                        RUN_TOTAL_TIME
------ -------------- -------------------------------------------------- --------------
     1 21-5月 -08     P_RandomChange:21-5月 -08                               337749000

SQL> Column runid FORMAT 99999
SQL> column unit_number format 99999
SQL> column unit_owner format A20   --设置列unit_owner显示的字符宽度(以字符格式显示,每行20个字符)
SQL> column unit_name format A20
SQL> select u.unit_owner,u.unit_name,d.line#,d.total_occur,d.total_time,d.min_time,d.max_time from p
lsql_profiler_units u right join plsql_profiler_data d
  2  on u.runid=d.runid and u.unit_number=d.unit_number
  3  where lower(unit_name)='p_randomchange' order by unit_name,line#;

UNIT_OWNER           UNIT_NAME                 LINE#   TOTAL_OCCUR TOTAL_TIME   MIN_TIME    MAX_TIME
-------------------- -------------------- ---------- ----------- ---------- ---------- ------------------------------ -------------------- ---------- ----------- ---------- ---------- ----------
SIS_HIS_TEST         P_RANDOMCHANGE                1            1         5000        5000        5000
SIS_HIS_TEST         P_RANDOMCHANGE                4            1            0            0              0
SIS_HIS_TEST         P_RANDOMCHANGE                5          1001      983000       1000        7000
SIS_HIS_TEST         P_RANDOMCHANGE                7          1000      1278000        1000        6000
SIS_HIS_TEST         P_RANDOMCHANGE               12          1000    88196000        1000      309000
SIS_HIS_TEST         P_RANDOMCHANGE               14            1          0            0            0
SIS_HIS_TEST         P_RANDOMCHANGE               15            1       283000      283000      283000
SIS_HIS_TEST         P_RANDOMCHANGE               16            1         3000       3000        3000
-------------------- -------------------- ---------- ----------- ---------- ---------- ------------------------------ -------------------- ---------- ----------- ---------- ---------- ----------
已选择8行。


从上面的结果可以看出总的调试时间,以及耗时最长的行的执行时间。也可以直接登录profiler用户(密码也是profiler)直接查看结果,只有第一次才需要运行以上的sql文件,以后便可以直接调试。




只看该作者    顶部
在线/呼叫 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 4758 (275)
社区积分 32620 (25)
注册日期 2007-9-10
论坛徽章:25
金色在线徽章每日论坛发贴之星生肖徽章:猪   
      

发表于 2008-7-16 10:41 
支持


__________________
马无夜草不肥,人无外财不富。
只看该作者    顶部
离线 fishforwater
初级会员



精华贴数 0
个人空间 0
技术积分 120 (14237)
社区积分 1 (42423)
注册日期 2007-1-12
论坛徽章:0
      
      

发表于 2008-7-16 10:45 
回复 #1 grwdpy 的帖子

这个我喜欢!


__________________
如鱼饮水,冷暖自知
只看该作者    顶部
离线 zhangfengh
老狐狸


精华贴数 3
个人空间 0
技术积分 11905 (96)
社区积分 5047 (280)
注册日期 2002-10-12
论坛徽章:79
现任管理团队成员2008北京奥运纪念徽章:曲棍球2008北京奥运纪念徽章:帆船2008年新春纪念徽章  
      

发表于 2008-7-16 10:59 
不错,支持一下


__________________
=======================================
接受以下奥运徽章赞助
黄色:篮球、田径、体操
红色:铁人三项、射击
=======================================
接受鲜花赞助
蓝色妖姬
紫蜘蛛
九尾狐狸
玉兔
=======================================
狐狸在这个世界上是凭借聪明而得到生存的,并且在这个世界上占有一席之地,学习狐狸的聪明,少走弯路。
=======================================
聪明的人,能把别人的经验吸收过来,使之成为自己的经验!
=======================================
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问