数据库是oracle8i,客户端上跑了一个企业的应用程序(无源码),想跟踪软件中某一步所执行的sql语句,该如何做?
能否做到只跟踪某一台客户机上(比如:pc1)所执行的sql语句? 请高手指教,先谢了!
能否做到只跟踪某一台客户机上(比如:pc1)所执行的sql语句? 请高手指教,先谢了!
解决方案 »
- 服务里没有TNSListener监听器和iSQL*Plus的解决办法。(Oracle 10g)
- 求一oracle日期类型转换
- oracle 更改数据表的空间
- 关于oracle数据库jdbc驱动的问题
- 本人初次接触orcle,问一个很弱的问题:如何在vc6下通过OO4O访问orcle ?
- 请问,我错在那里?
- 游标附值问题
- 用OCI如何插入LONG字段?每次都提示:00CFE264 "Error - ORA-01704: string literal too long\n"
- 在oracle存储过程中,怎样才能返回一数据集呢
- 各位大侠谁能帮我解决这个问题?????????急
- dbca创建第二个数据库和例程
- 请问各位大侠,oracle中如何计算minus的总数
步骤如下:
1.当应用程序运行时,通过v$session的terminal=PC1字段查询出指定客户机上应用程序连接oracle的会话sid,serial#
2.exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
3.待应用程序查询结束后,exec dbms_system.set_sql_trace_in_session(sid,serial#,false);
4.查看trc跟踪文件,结束。
1.上面的那个过程是SYS用户的。如果你用别的用户执行,则需要授权;
2.生成的跟踪文件,如果你主要目的是看SQL情况,则需要用tkprof工具格式化。
执行以下SQL获取trc文件位置:
SELECT d.VALUE
|| '/'
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| '_ora_'
|| p.spid
|| '.trc' trace_file_name
FROM (SELECT p.spid
FROM v$session s, v$process p
WHERE p.addr = s.paddr and s.sid=&sid) p,
(SELECT t.INSTANCE
FROM v$thread t, v$parameter v
WHERE v.NAME = 'thread'
AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
(SELECT VALUE
FROM v$parameter
WHERE NAME = 'user_dump_dest') d;
1.建立个独立测试环境。
2.到oracle的udump目录下把所有的.trc文件drop
3.执行:alter system set events '10046 trace name context forever,level 1';
4.一个用户,执行你的企业应用程序。
5.执行:alter system set events '10046 trace name context off';
6.到oracle的udump目录下看生成的.trc文件就可以了