暂无图片
分享
卢春龙
2019-08-06
ORACLE 可以跟踪某一用户的每个session吗?

想知道某一用户执行过的SQL

收藏
分享
9条回答
默认
最新
文成

v$active_session_history 可以嘛

暂无图片 评论
暂无图片 有用 0
陈伟

这个问题百度上很多的

select PARSING_SCHEMA_NAME,COUNT(DISTINCT T.SQL_TEXT) from v$sqlarea t
WHERE T.LAST_ACTIVE_TIME >= TRUNC(SYSDATE)
GROUP BY PARSING_SCHEMA_NAME

暂无图片 评论
暂无图片 有用 0
章芋文

可以创建一个登录触发器,如果判断是这个用户,就开启10046trace

CREATE OR REPLACE TRIGGER trace_user_steven AFTER LOGON ON DATABASE
BEGIN
  IF USER := 'STEVEN' THEN
    EXECUTE IMMEDIATE 'ALTER SESSION SET timed_statistics=true';
    EXECUTE IMMEDIATE 'ALTER SESSION SET max_dump_file_size=unlimited';
    EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 trace name context forever, level 12'' ';
  END IF;
END;
/
暂无图片 评论
暂无图片 有用 0
Albert

(1)

exec dbms_support.start_trace_in_session(SID,SERIAL#); --跟踪OTHER SESSION
exec dbms_support.stop_trace_in_session(SID,SERIAL#); --停止跟踪OTHER SESSION


(2)

exec dbms_system.set_ev(SID, SERIAL#, 10046, 12, '');
exec dbms_system.set_ev(SID, SERIAL#, 10046, 0, '');


(3)

begin

dbms_monitor.session_trace_enable(session_id =>,

                                  serial_num =>,

                                  binds =>TRUE,

                                  waits =>TRUE,

                                  plan_stat =>'all_executions');


(4)dbms_system.SET_BOOL_PARAM_IN_SESSION 无bind 无wait信息

(5)dbms_system.set_sql_trace_in_session 无bind无wait信息


详情测试方案:http://albertdba.com/?p=626

暂无图片 评论
暂无图片 有用 0
卢春龙

show parameter user_dump_dest; trace 文件很多怎么查看这个用户的TRACE文件呢

暂无图片 评论
暂无图片 有用 0
卢春龙

有报错

Skipped error 4098 during the execution of SYS.TRACE_USER_STEVEN 


*** 2019-08-06 09:27:53.946

dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=0, mask=0x0)

----- Error Stack Dump -----

ORA-04098: trigger 'SYS.TRACE_USER_STEVEN' is invalid and failed re-validation


*** 2019-08-06 09:28:13.954

*** SESSION ID:(1388.42735) 2019-08-06 09:28:13.954

*** SERVICE NAME:(SYS$USERS) 2019-08-06 09:28:13.954

 

Skipped error 4098 during the execution of SYS.TRACE_USER_STEVEN 


*** 2019-08-06 09:28:13.954

dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=0, mask=0x0)

----- Error Stack Dump -----

ORA-04098: trigger 'SYS.TRACE_USER_STEVEN' is invalid and failed re-validation


暂无图片 评论
暂无图片 有用 0
Albert

oradebug setmypid 

oradebug tracefile_name   --回显为TRACE文件

执行.....



暂无图片 评论
暂无图片 有用 0
卢春龙

触发器有问题?

Redo thread mounted by this instance: 1

Oracle process number: 84

Unix process pid: 27399, image: oracle@YL-XMK3DB2-DEV (J000)



*** 2019-08-06 11:33:16.316

*** SESSION ID:(564.16911) 2019-08-06 11:33:16.316

*** CLIENT ID:() 2019-08-06 11:33:16.316

*** SERVICE NAME:(SYS$USERS) 2019-08-06 11:33:16.316

*** MODULE NAME:() 2019-08-06 11:33:16.316

*** ACTION NAME:() 2019-08-06 11:33:16.316

 

Skipped error 4098 during the execution of SYS.TRACE_USER_STEVEN 


*** 2019-08-06 11:33:16.316

dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=0, mask=0x0)

----- Error Stack Dump -----

ORA-04098: trigger 'SYS.TRACE_USER_STEVEN' is invalid and failed re-validation


暂无图片 评论
暂无图片 有用 0
卢春龙
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏