RT。。要看当前 单次 活动中 sql已经执行多久。。

解决方案 »

  1.   

    如果只跑了这么一次,可以查下v$sql.elapsed_time字段,否则怕是很难了,除非事先做了设置,并且等跑完才能知道总时间多少了。
    注:elapsed_time字段的单位是毫秒
      

  2.   

    对了,如果你的sql打开了并行,那么这么做也不行了
      

  3.   

    那么有没有字典可以记录sql开始执行的时间呢
      

  4.   


    动态性能视图记录的都只会是累积值,不会有单次的记录的,所以说,需要第一次执行才能获得你想要的信息,其实如果这是个程序的需求,你完全可以用程序来实现这个功能,当然程序为SQL计时的话可能会稍微多点时间
      

  5.   


    呃,我上面的回帖有点文不对题。你要SQL开始的时间,也需要SQL第一次执行,v$sql中有两个字段:first_load_time(父游标生成时间)和last_load_time(执行计划生成时间),这两个时间一个与你发sql给数据库的时间接近,一个与sql实际进入执行阶段的时间接近(这里都有前提,需要SQL第一次执行),都可以参考。实际上到现在还不知道你真实的需求是什么,应该不是只想知道SQL已经执行了多长时间这种问题吧?
      

  6.   


    动态性能视图记录的都只会是累积值,不会有单次的记录的,所以说,需要第一次执行才能获得你想要的信息,其实如果这是个程序的需求,你完全可以用程序来实现这个功能,当然程序为SQL计时的话可能会稍微多点时间不看总时间,没有那个字典是记录当前的sql开始执行的那个时间点吗?是时间点。。除了开启sql跟踪以外
      

  7.   


    呃,我上面的回帖有点文不对题。你要SQL开始的时间,也需要SQL第一次执行,v$sql中有两个字段:first_load_time(父游标生成时间)和last_load_time(执行计划生成时间),这两个时间一个与你发sql给数据库的时间接近,一个与sql实际进入执行阶段的时间接近(这里都有前提,需要SQL第一次执行),都可以参考。实际上到现在还不知道你真实的需求是什么,应该不是只想知道SQL已经执行了多长时间这种问题吧?有个监控系统想弄个界面显示当前活动SQL执行时间超过5分钟。。现在就是sql有可能不是第一次运行。。我是想如果有能记录sql开始执行的时间点,用sysdate-sql开始的时间点 就是sql已执行时间了。。
      

  8.   

    楼主,上面是我经验主义了,我查了下v$session的定义,发现有个字段可能是你想要的: