-----怪了
SQL> set serveroutput on
SQL> set timing on
SQL> EXEC DBMS_LOCK.SLEEP(5);PL/SQL 过程已成功完成。已用时间:  00: 00: 10.03
SQL> 
-----怪了

解决方案 »

  1.   

    这有什么奇怪的呢?cpu时间休息5秒,plsql_execute_time有网络上的延迟,耗费了10秒。。很正常呀
      

  2.   


    ............网络环境还真配合.
    SQL> EXEC DBMS_LOCK.SLEEP(10);PL/SQL 过程已成功完成。已用时间:  00: 00: 20.17
    SQL> EXEC DBMS_LOCK.SLEEP(20);PL/SQL 过程已成功完成。已用时间:  00: 00: 40.35
      

  3.   

    --在服务器上执行结果Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    连接到:
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Productionsys@MYDB> set timing on;
    sys@MYDB> exec dbms_lock.sleep(5);PL/SQL 过程已成功完成。已用时间:  00: 00: 05.02
    sys@MYDB> exec dbms_lock.sleep(5);PL/SQL 过程已成功完成。已用时间:  00: 00: 05.01
    sys@MYDB>
      

  4.   


    咱俩的版本不一样.
    SQL> select * from v$version;BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for Linux: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production已用时间:  00: 00: 00.10
    SQL> 
      

  5.   


    咱俩的版本不一样.
    SQL> select * from v$version;BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE 10.2.0.1.0 Production
    TNS for Linux: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production已用时间: 00: 00: 00.10
    SQL> 
      

  6.   

    sys@MYDB> col time new_value last_time;
    sys@MYDB> select dbms_utility.get_time time from dual;      TIME
    ----------
        195126sys@MYDB> select count(*) from dba_objects;  COUNT(*)
    ----------
         29548sys@MYDB> select dbms_utility.get_time-&last_time 用时 from dual;
    原值    1: select dbms_utility.get_time-&last_time 用时 from dual
    新值    1: select dbms_utility.get_time-    195126 用时 from dual      用时
    ----------
            12
      

  7.   

    直接查询下v$sql和v$sqlarea的时间就行了,一个客户端怎么能够看出准确的时间,说不定执行花了1s,传到你客户端花了10s也是有可能的。。
      

  8.   

    建议这么测试.
    --先创建表
    create table t_test_sleep
    (id number,
     time date);
    --再执行测试过程
    begin
     insert into t_test_sleep
     values(1,sysdate);
     dbms_lock.sleep(5);
     insert into t_test_sleep
     values(2,sysdate);
     commit;
    end;SQL> begin
      2   insert into t_test_sleep
      3   values(1,sysdate);
      4   dbms_lock.sleep(5);
      5   insert into t_test_sleep
      6   values(2,sysdate);
      7   commit;
      8  end;
      9  /
     
    PL/SQL procedure successfully completed
     
    SQL> select id,to_char(time,'yyyy-mm-dd hh24:mi:ss') from t_test_sleep;
     
            ID TO_CHAR(TIME,'YYYY-MM-DDHH24:M
    ---------- ------------------------------
             1 2010-12-26 09:27:54
             2 2010-12-26 09:27:59
     
    SQL> 
      

  9.   

    估计是你的机子配置问题 scott@ORCL> set serveroutput on
    scott@ORCL> set timing on
    scott@ORCL> EXEC DBMS_LOCK.SLEEP(5)PL/SQL 过程已成功完成。已用时间:  00: 00: 05.01
      

  10.   


    scott@ORCL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
      2  /会话已更改。已用时间:  00: 00: 00.00
    scott@ORCL> ed
    已写入 file afiedt.buf  1  declare
      2  dt1 date;
      3  dt2 date;
      4  begin
      5  dt1:=sysdate;
      6  DBMS_LOCK.SLEEP(5);
      7  dt2:=sysdate;
      8  dbms_output.put_line(dt1);
      9  dbms_output.put_line(dt2);
     10* end;
    scott@ORCL> /
    2010-12-27 09:55:12
    2010-12-27 09:55:17PL/SQL 过程已成功完成。已用时间:  00: 00: 05.00
      

  11.   


    ------直接查询v$sqlarea
    SQL> set timing on;
    SQL>  EXEC DBMS_LOCK.SLEEP(5);PL/SQL procedure successfully completedExecuted in 5 secondsSQL> 
    SQL> select i.PLSQL_EXEC_TIME, i.CPU_TIME
      2    from v$sqlarea i
      3   where sql_text like '%DBMS_LOCK.SLEEP(5)%'
      4   order by i.FIRST_LOAD_TIME desc
      5  ;PLSQL_EXEC_TIME   CPU_TIME
    --------------- ----------
                  0       1435
                  0       2835
               9661       2532Executed in 0 secondsSQL> 
      

  12.   

    原因我已经找到了。因为上面没有答对的。第一个贴出下列操作结果的给100分。感谢各位。SQL> show parameter cpu_count
    SQL> alter system set cpu_count=4 scope=both;
    SQL> EXEC DBMS_LOCK.SLEEP(5);
      

  13.   

    SQL> show parameter cpu_count
    SQL> alter system set cpu_count=4 scope=both;
    SQL> EXEC DBMS_LOCK.SLEEP(5);
      

  14.   

    我觉得我的答案有点像呀。。我叫你去差v$sqlarea的cpu_time呀。
      

  15.   

    楼主,查了好些帖子,没有看出这个参数对SQL的运行或者系统包的调用有什么影响,能说说么,请指教,如果可以的话,能给个帖子或者资料?
      

  16.   

    呵呵,really?
    单位服务器不是什么4核的,但也至少是双核的,貌似没发现楼主所说的情况。
    按wkc168的方法测试下看看,能确认在更改cpu_count参数前后数值有变化?
      

  17.   

    开始以为是 cpu_count 参数有影响.因为改过这参数后,有一台机器正常了.不过今又发现别的机器也有这个问题..ai...怪异了.无限郁闷中....