oracle ip 执行了sql,谁能帮帮忙哇 ~如何监控某个ip执行的所有sql语句

我定义了一个触发器

CREATE OR REPLACE TRIGGER LOGON_HISTORY

AFTER LOGON ON DATABASE --WHEN (USER='EQSP') --ONLY FOR USER 'EQSP'

declare

m_path varchar2(200);

v_sql varchar2(50);

client_ip varchar2(20);

v_pkid number(10);

BEGIN

IF userenv('sessionid')!=0 THEN

select SYS_CONTEXT('USERENV','IP_ADDRESS') into client_ip from dual;

if client_ip = '10.10.3.99' then

begin

insert into session_history

select session_history_id.nextval pkid, username,sid,AUDSID,OSUSER,ACTION,SYSDATE,null,SYS_CONTEXT('USERENV','IP_ADDRESS'),TERMINAL,PROGRAM,null

from v$session s

where audsid = userenv( 'sessionid' )

and  s.USERNAME NOT IN ('SYSTEM','SYS')

AND S.USERNAME IS NOT NULL;

select session_history_id.currval  into v_pkid from dual;

select rtrim(c.value, '/') || '/' || d.instance_name || '_ora_' ||ltrim(to_char(a.spid)) || '.trc' into m_path

from sys.v_$process a, sys.v_$session b, sys.v_$parameter c, sys.v_$instance d

where a.addr = b.paddr

and b.audsid = sys_context('userenv', 'sessionid')

and c.name = 'user_dump_dest';

update session_history

set path=m_path

where pkid=v_pkid;

commit;

EXECUTE IMMEDIATE 'Alter session set tracefile_identifier =''miniyal''';

EXECUTE IMMEDIATE 'alter session set timed_statistics=true';

EXECUTE IMMEDIATE 'alter session set sql_trace = true' ;

end;

else

null;

end if;

else

null;

end if;

END;

客户端 ip是通过pl/sql登录的 在指定路径下没找到trace文件 是不是触发器的session 和 pl/sql登录进去的session 不是同一个?

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值