这几天我查了大量资料发现有三种解决方法1. 设置Oracle的init.ora中设置oracle_trace_enable = true然后....后面知道给我讲讲,我看不懂
2. 有些资料中说用select * from v$sqlText 可以取出执行过的SQL但我看了,都是....#$^@&*%$@ 看不懂的SQL语句,怎么样处理才能得到正常的SQL语句呢?3. 还有人说用Sniffer Pro (一个网管用的网络数据包分析工具)用这个来截获应用程序向Oracle发送的SQL(不会吧....)有知道的吗,指点一下?必有重谢哦 hehe^^

解决方案 »

  1.   

    如果你是想跟踪SQL

    init.ora
    中的
    1.SQL_TRACE=TRUE;
    2.ALTER SESSION SET SQL_TRACE=TRUE
    3.
    SVRMGR> SELECT sid, serial#, osuser 
     2>     FROM v$session
     3>     WHERE osuser = 'jausten';SID        SERIAL#    OSUSER         
    ---------- ---------- ---------------
             8         12 jausten       
    dbms_system.set_sql_trace_in_session(8,12,true)
    最后
    然后用ORACEL\BIN\TKPROF.EXE工具分析
    *.trc有人是这样说的但我从2开始就不明白怎么操作了
    我在init.ora文件中就找不到SQL_TRACE=TRUE这么一句
    ---------
    春困秋乏夏打盹,睡不醒的冬三月 ^^!
      

  2.   


    select * from v$sqlText 可以取出执行过的SQL
    select address,piece,sqltext from v$sqlText  group by  address,piece
    对于每个address所有的sqltext是一个完整的语句
      

  3.   

    SQL_TRACE=TRUE这一句是加进去的,
    需要从新启动数据库。
      

  4.   

    select ... from v$session,v$sqltext where SQL_ADDRESS=ADDRESS
      

  5.   

    救急,请问怎么用c语言编写程序:就是如何将图像以
    blob类型存到oracle里面
      

  6.   

    说得具体点好象应该是:
    1\在init.ora中添加:SQL_TRACE=TRUE;
    注意如此操作前要仔细些,因为这样会产生大量的TRACE文件;
    2\以某个用户登记ORACLE
      执行:
    ALTER SESSION SET SQL_TRACE=TRUE
    3.执行一些SQL语句
    4.用ORACEL\BIN\TKPROF.EXE工具分析  TRACE文件应该是UDUMP目录下的某个ORAXXXXX文件;
    5,在生成的OUTPUTFILE中就可以看到一些SQL语句了,就是你刚才执行的SQL.
      

  7.   

    to  dreamfisher1(梦鱼儿) 2\以某个用户登记ORACLE
      执行:
    ALTER SESSION SET SQL_TRACE=TRUE在那里执行?? ^^! 我可是Oracle菜鸟在SQLplus里执行?
      

  8.   

    还有一点我想说明的是我想实现这样的功能,如果我是数据库管理员,所有连接到我机器上的应用程序呀什么的,只要执行SQL语句,我都能看到,不管是通过什么程序执行的,我不关心是谁执行的,只想得到执行过的真正SQL语句可以吗?我把帖子再加100分,等问题结束后,分给大家 hehe^^
      

  9.   

    呀,我等级太低放不了这么多 :(我是想做个程序来分析所有执行过的SQL语句,SQLServer还有一些工具可以做到但都有局限性,所以想做个这种程序,方便对其它第三方系统库结构,业务流程等进行分析如果解决这个关键问题,我把这个工具放给大家
      

  10.   

    to  CDSoftwareWj(95927) 
    对,用sqlplus 登录,直接执行就可以了.如果是如你所说的,那就不应该设置SQL_TRACE=TRUE;因为会影响数据库效率;用system身份登录,用下面的SQL语句,可以实现你的需要吧:
    select a.username,a.machine,a.logon_time,decode(b.piece,'0','首行'),b.sql_text
    from v$session a,v$sqltext b
    where a.sql_address = b.address
    order by a.logon_time,b.address,b.piece 
      

  11.   

    to  dreamfisher1(梦鱼儿)   我试试,特别谢谢你的热情帮助,给你加分,再次感谢 hehe^^http://expert.csdn.net/Expert/topic/2474/2474727.xml?temp=.4907038
      

  12.   

    1.SQL_TRACE=TRUE;
    综合一下
    2.ALTER SESSION SET SQL_TRACE=TRUE
    3.
    SVRMGR> SELECT sid, serial#, osuser 
     2>     FROM v$session
     3>     WHERE osuser = 'scott';SID        SERIAL#    OSUSER         
    ---------- ---------- ---------------
             8         12 scott
          
    dbms_system.set_sql_trace_in_session(8,12,true)
    TKPROF DLSUN12_JANE_FG_SVRMGR_007.TRC OUTPUTA.PRF EXPLAIN=SCOTT/TIGER TABLE=SCOTT.TEMP_PLAN_TABLE_A INSERT=c:\STOREA.SQL SYS=NO SORT=(EXECPU,FCHCPU)c:\STOREA.SQL 这个脚本就是结果
      

  13.   

    1.SQL_TRACE=TRUE;
    综合一下
    2.ALTER SESSION SET SQL_TRACE=TRUE
    3.
    SVRMGR> SELECT sid, serial#, osuser 
     2>     FROM v$session
     3>     WHERE osuser = 'scott';SID        SERIAL#    OSUSER         
    ---------- ---------- ---------------
             8         12 scott
          
    dbms_system.set_sql_trace_in_session(8,12,true)
    TKPROF DLSUN12_JANE_FG_SVRMGR_007.TRC OUTPUTA.PRF EXPLAIN=SCOTT/TIGER TABLE=SCOTT.TEMP_PLAN_TABLE_A INSERT=c:\STOREA.SQL SYS=NO SORT=(EXECPU,FCHCPU)c:\STOREA.SQL 嘻嘻嘻嘻^^