我一般的做法是在中间用DBMS_OUTPUT.PUT_LINE的方法显示执行的位置,有好多工具可以跟踪SQL执行:)

解决方案 »

  1.   

    DBMS_OUTPUT.PUT_LINE
    好象也试过。一直不怎么稳定的好象.还有其他的吗.大家介绍点啊??
      

  2.   

    不知道oracle根目录下的admin/数据库名/bdump和udump里面的那些*.trc文件是不是?
    好像oracle的事件跟踪一直都不清楚,也望高人指点。
      

  3.   

    lz做跟踪还是做调试
    调试的话用pl/sql developer挺好的
      

  4.   

    put_line不稳定?不可能吧!
    调试的话可以使用一些第三方的工具。
    比如楼上所说。
      

  5.   

    用一个小工具把,DebugView.exe 
    可以看到执行的过程和参数
      

  6.   

    再用pl/sql developer进去一步步跟踪
      

  7.   

    lz做跟踪还是做调试
    调试的话用pl/sql developer挺好的
      

  8.   

    也可以用toad,它可以分步调试的。
      

  9.   

    很晚才上来真不好意思.一下午都在忙.哎.蛤蟆也用过的啊.调试是知道的.是跟踪.就像SQLSERVER里面事件跟踪一样的.可以跟踪应用程序所执行的SQL代码.
    pl/sql developer一直用的.有人做过跟踪没啊
      

  10.   

    呵呵.那你可以用sql_trace或者10046呀.
      

  11.   

    That's so easy.procedure test
      -- write_log...    call_fn1(..);  -- write_log...    call_fn2(..);  -- write_log...  end test;if want debug in sqlplus; well, you need set the 'serverout' before,
    for example:
    SQL>set serveroutput on;in procedure and use job to run. use write log to table.if want to know which line had error when exception occur, add following:EXCEPTION
      WHEN OTHERS THEN
        ROLLBACK;
        v_sqlText:= SQLERRM|| ';' ||substr(dbms_utility.format_error_backtrace, 1, 100);
        --write v_sqlText to log
        COMMIT;
      

  12.   

    btw: dbms_utility.format_error_backtrace in 10g. ^_^
      

  13.   

    用TOAD自带的SQLMonitor工具就可以实现可以实现类似Microsoft SQL Server Profiler 的功能
      

  14.   

    SQL_TRACE跟踪SQL语句,要使用SQL_TRACE,必须使用SYS用户,使用SYSDBA身份登录,下列的命令使用SQL*PLUS或pl/sql developer的Command窗口。 以跟踪INTOOLS为例,首先使用如下SQL语句获取INTOOLS的SESSION信息select sid, serial#, username from v$session;假设取到的INTOOLS登录session的sid = 9, serial# = 71,则执行下列命令对该session进行监听exec dbms_system.set_sql_trace_in_session(9,71,true)然后操作INTOOLS,操作完成后使用下面命令关闭监听exec dbms_system.set_sql_trace_in_session(9,71,false)则在%ORACLE_HOME%\ADMIN\[服务名]\udump目录下生成最新的.trc跟踪文件,可使用ORACLE提供的工具程序tkproc将.trc文件解析为更易读的文件:tkproc [.trc文件路径] [目标文件路径] 后面还可加上如下一些参数,其中比较有用的一个排序选项是fchela,即按照elapsed time fetching来对分析的结果排序(记住要设置初始化参数time_statistics=true),生成的.prf文件将把最消耗时间的sql放在最前面显示。另外一个有用的参数就是sys, 这个参数设置为no可以阻止所有以sys用户执行的sql被显示出来,这样可以减少分析出来的文件的复杂度,便于查看。
      

  15.   

    可以把oracle的trace功能打开,这样每一个操作 包括 select update delete 等操作就都可以看到了。绝对真实可靠。
      

  16.   

    在PL/SQL中用TEST工具可以调试存储过程
    例如,在PL/SQL中找到你的存储过程右键->TEST就OK了
    记得先加断点