v$sql.cpu_time.
如果用before insert or update or delete on table触发器来做,太消耗系统资源不可取.

解决方案 »

  1.   

    这个 view 能串到 v_$session 吗?
    因为我还需要得到是在哪个 session 中下的 SQL。
      

  2.   

    SQL> SELECT b.* from v$session a, v$sql b where a.sql_address =b.address;SQL_TEXT                                                                         SQL_FULLTEXT SQL_ID        SHARABLE_MEM PERSISTENT_MEM RUNTIME_MEM      SORTS LOADED_VERSIONS OPEN_VERSIONS USERS_OPENING    FETCHES EXECUTIONS PX_SERVERS_EXECUTIONS END_OF_FETCH_COUNT USERS_EXECUTING      LOADS FIRST_LOAD_TIME                        INVALIDATIONS PARSE_CALLS DISK_READS DIRECT_WRITES BUFFER_GETS APPLICATION_WAIT_TIME CONCURRENCY_WAIT_TIME CLUSTER_WAIT_TIME USER_IO_WAIT_TIME PLSQL_EXEC_TIME JAVA_EXEC_TIME ROWS_PROCESSED COMMAND_TYPE OPTIMIZER_MODE OPTIMIZER_COST OPTIMIZER_ENV                                                                    OPTIMIZER_ENV_HASH_VALUE PARSING_USER_ID PARSING_SCHEMA_ID PARSING_SCHEMA_NAME            KEPT_VERSIONS ADDRESS  TYPE_CHK_HEAP HASH_VALUE OLD_HASH_VALUE PLAN_HASH_VALUE CHILD_NUMBER SERVICE                                                          SERVICE_HASH MODULE                                                           MODULE_HASH ACTION                                                           ACTION_HASH SERIALIZABLE_ABORTS OUTLINE_CATEGORY                                                   CPU_TIME ELAPSED_TIME OUTLINE_SID CHILD_ADDRESS    SQLTYPE REMOTE OBJECT_STATUS       LITERAL_HASH_VALUE LAST_LOAD_TIME                         IS_OBSOLETE CHILD_LATCH SQL_PROFILE                                                      PROGRAM_ID PROGRAM_LINE# EXACT_MATCHING_SIGNATURE FORCE_MATCHING_SIGNATURE LAST_ACTIVE_TIME BIND_DATA
    -------------------------------------------------------------------------------- ------------ ------------- ------------ -------------- ----------- ---------- --------------- ------------- ------------- ---------- ---------- --------------------- ------------------ --------------- ---------- -------------------------------------- ------------- ----------- ---------- ------------- ----------- --------------------- --------------------- ----------------- ----------------- --------------- -------------- -------------- ------------ -------------- -------------- -------------------------------------------------------------------------------- ------------------------ --------------- ----------------- ------------------------------ ------------- -------- ------------- ---------- -------------- --------------- ------------ ---------------------------------------------------------------- ------------ ---------------------------------------------------------------- ----------- ---------------------------------------------------------------- ----------- ------------------- ---------------------------------------------------------------- ---------- ------------ ----------- ------------- ---------- ------ ------------------- ------------------ -------------------------------------- ----------- ----------- ---------------------------------------------------------------- ---------- ------------- ------------------------ ------------------------ ---------------- --------------------------------------------------------------------------------
    SELECT b.* from v$session a, v$sql b where a.sql_address =b.address              SELECT b.* f cpxng57j8n0jm        49642          28668       23960          0               1             1             1          0          1                     0                  0               1          2 2006-02-15/21:38:59                                0           1          0             0         156                     0                     0                 0                 0               0              0              0            3 ALL_ROWS                    1 E289FB89A1E49800BA0010006EF9C3E2CFEA33105641455551952110555555154554555859155544               2829153087               0                 0 SYS                                        0 1C9E488C 00            3800695347     2896797038      2709903618            0 orcl                                                                        0 PL/SQL Developer                                                  1190136663 命令窗口 - 新建                                                   1316471608                   0                                                                       30601        30601             1C9E47A8               6 N      VALID                                0 2006-02-15/21:39:43                    N                     1                                                                        2221            34      6.06947805093292E18      6.06947805093292E18 2006-2-15 21:39:
      

  3.   

    用SET TIMING ON 不就可以看语句的执行时间吗?
      

  4.   

    to cenlmmx(学海无涯苦作舟) ,
    感谢!v$sql 里面的资料是动态变的,而我需要把每一笔曾经运行过的 SQL 语句都记录下来,是否还可以有其他办法? 另外,它的 sql_text 栏位长度只有 1000,有些 SQL 不完整。to rouqu(石林#黄果树) ,
    如果用 trigger 的话,能记录到 SELECT 语句吗?怎么做?
      

  5.   

    和v$sql_text再关联,v$sql_text好象是全的(order by piece)
    同时可以看看v$sqlarea
    V$SQLAREA lists statistics on shared SQL area and contains one row per SQL string. It provides statistics on SQL statements that are in memory, parsed, and ready for execution. 用trigger的话
    CREATE OR REPLACE TRIGGER T
    BEFORE INSERT OR UPDATE OR DELETE ON MonitorTable
    FOR EACH ROW
    BEGIN
    If updating Then
    deal with yourlogtable;
    End If;
    IF inserting then
    deal with yourlogtable;
    End If;
    IF deleting then
    deal with yourlogtable;
    End If;
    END;
      

  6.   

    CREATE OR REPLACE TRIGGER T
    BEFORE INSERT OR UPDATE OR DELETE ON MonitorTableMonitorTable 是指什么??
      

  7.   

    不好意思,误解误解。
    但我不是想监控某个 table 啊。
    说清楚一点,我就是想把
    ——曾经在 DB 中执行过的『所有』 SQL 语句——
    都记录下来!
      

  8.   

    不仅仅是 INSERT/UPDATE/DELETE,也包含查询语句。
    不仅仅是当前正在 running 的,也包含所有曾经执行过的。看起来似乎可以设一个 JOB,每隔几分钟跑一次,抓出 v$sql 中的记录,存入另外一个 table但这样子好像效率很差的说
      

  9.   

    select操作通过触发器的办法应该不能实现
    Oracle中有没有类似MSSQL的Profiler?