如何查询oracle数据库在一段时间内执行了哪些查询sql.
并且查到是哪台机器执行的,ip地址是多少。

解决方案 »

  1.   

    select * from v$sqlarea a
           where 1=1
           and a.LAST_ACTIVE_TIME >=  to_date( '2013-02-21 18:23:00','yyyy-MM-dd HH24:mi:ss')
           and a.LAST_ACTIVE_TIME <  to_date( '2013-02-21 18:24:00','yyyy-MM-dd HH24:mi:ss')
           --and a.LAST_ACTIVE_TIME <  to_date('2012-02-21 17:55','yyyy-MM-dd HH24:mi:ss')
           and a.MODULE_HASH <> 0
           and a.MODULE = 'JDBC Thin Client'
           order by a.LAST_ACTIVE_TIME desc建议工具进行查看,TOAD里很方便的查看,也可看到执行抓取SQL的语句,自己改下就可以了当然还可以看审计,比较耗数据库性能
      

  2.   

    可以通过v$session和v$sqlarea试图进行查询。v$session中machine字段记录该session的主机名。、
    以下sql查询当前活跃会话正在执行的sql,如若有误还望高手们指正;
    select q.SQL_TEXT,s.SID,s.SERIAL#,s.MACHINE from v$session s ,v$sqlarea q where s.sql_address=q.ADDRESS and s.status='ACTIVE';你要是查询一段时间内的所有操作,我觉得可以使用oracle的审计功能,你所要的信息基本都有;
      

  3.   

    V$SQL --sql语句
    + v$SESSION  --机器名
    + UTL_INADDR.get_host_address(machine_name) --IP地址