暂无图片
update语句在v$session里查不到记录
我来答
分享
陈先生
2020-12-03
update语句在v$session里查不到记录

最近在编写一个触发器,记录别人修改表时update记录。
在虚拟机搭建的环境中测试脚本时,
发现update scott.dept这张表,在v$session查不到记录,不知道何解。

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
冯守东

vsession 是记录回话信息的,具体sql执行情况查看vsql

暂无图片 评论
暂无图片 有用 0
陈先生

1.创建一个表来存储操作日志

create table trig_sql(
LT DATE not null primary key,
SID NUMBER,
  SERIAL# NUMBER,
USERNAME VARCHAR2(30),
OSUSER VARCHAR2(64),
MACHINE VARCHAR2(32),
TERMINAL VARCHAR2(16),
PROGRAM VARCHAR2(64),
SQLTEXT VARCHAR2(2000),
STATUS VARCHAR2(30),
CLIENT_IP VARCHAR2(60),
);
2.创建索引(可能已经自动创建,如果已经创建则忽略此步骤)

create index idx_time on trig_sql (LT);
3.创建触发器
IN_FIRST_PAGE_OTHER:我们要监控的表

create or replace trigger pri_test
after insert or update or delete on IN_FIRST_PAGE_OTHER for each row
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF inserting THEN
INSERT INTO trig_sql
select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
‘INSERT’,
sys_context(‘userenv’,‘ip_address’)
from vsqlq,vsql q, vsession s
where s.audsid=(select userenv(‘SESSIONID’) from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
ELSIF deleting then
INSERT INTO trig_sql
select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
‘DELETE’,
sys_context(‘userenv’,‘ip_address’)
from vsqlq,vsql q, vsession s
where s.audsid=(select userenv(‘SESSIONID’) from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
ELSIF updating then
INSERT INTO trig_sql
select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
‘UPDATE’,
sys_context(‘userenv’,‘ip_address’)
from vsqlq,vsql q, vsession s
where s.audsid=(select userenv(‘SESSIONID’) from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
END IF;
END;
4.测试时
update scott.dept set 表字段修改
发现vsql找得到语句,但是vsession没找到。
发现下面两个字段关联,查询不出来。
select *
from vsqlq,vsql q, vsession s
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏