1
我正在開發一個使用Oracle數據庫的應用程序,我肯定希望有一個可以跟蹤會話和進程語句的SQL語句跟蹤器 - 例如Toad的SQL跟蹤器/監視器。但是因爲好的一個花了很多錢,所以我正在考慮自己創建一個小的。 任何ideeas關於這將是跟蹤oracle sql語句的最佳解決方案?跟蹤oracle語句
我正在開發一個使用Oracle數據庫的應用程序,我肯定希望有一個可以跟蹤會話和進程語句的SQL語句跟蹤器 - 例如Toad的SQL跟蹤器/監視器。但是因爲好的一個花了很多錢,所以我正在考慮自己創建一個小的。 任何ideeas關於這將是跟蹤oracle sql語句的最佳解決方案?跟蹤oracle語句
Sql Plus + tkprof。
alter session set timed_statistics = true;
alter session set sql_trace = true;
show parameter user_dump_dest
tkprof <trc-файл> <txt-файл>
如果您需要跟蹤任何會話(不僅是你自己的):
select sid,serial# from v$session
看會話的SID和
begin
sys.dbms_system.set_ev(sid, serial#, 10046, 12, '');
end;
否則,您可以使用登錄觸發器:
CREATE OR REPLACE TRIGGER SYS.TRACE_A_USER
AFTER
LOGON ON <some_db_user>.SCHEMA
DECLARE
user_sid NUMBER;
user_serial# NUMBER;
user_program VARCHAR2(48);
BEGIN
-- Collect the current user session details.
SELECT sid, serial#, UPPER(program)
INTO user_sid, user_serial#, user_program
FROM v$session
WHERE audsid = USERENV('SESSIONID');
-- Start tracing if the user is running the identified application.
IF user_program = 'SOMECODE.EXE' THEN
-- Enable tracing. Note level 12 tracing includes bind variable
-- and wait statistics.
sys.dbms_system.set_ev(user_sid, user_serial#, 10046, 12, '');
END IF;
END;
僅供參考,現在不建議使用sql_trace:http://docs.oracle.com/c d/B19306_01/server.102/b14237/initparams205.htm#REFRN10208 – Snorex 2017-01-09 19:32:04
我的答案創建於6年前.... – demas 2017-01-09 20:38:37
這就是爲什麼我有「現在」這個詞。你是否說這是對舊帖子發表評論的錯誤形式? – Snorex 2017-01-09 20:52:08