如,我想对t_dept表进行监控,当insert update delete时我就把操作语句保存到日志中,我知道用trigger可以实现 create or replace trigger TableChange after insert or update or delete on t_dept
for each row begin sql = select sql_text from v$sqltext where 。怎么确定是某个用户刚才执行insert or update or delete取出执行的sql
insert into log (ora_user,sql_content) values(user,sql); end TableChange;请问这个完整的怎么写,我只知道此方法应该能行的通。谢谢了!
for each row begin sql = select sql_text from v$sqltext where 。怎么确定是某个用户刚才执行insert or update or delete取出执行的sql
insert into log (ora_user,sql_content) values(user,sql); end TableChange;请问这个完整的怎么写,我只知道此方法应该能行的通。谢谢了!
SELECT sys_context('USERENV','IP_ADDRESS'),SYS_CONTEXT('USERENV','HOST'),
SYS_CONTEXT('USERENV','OS_USER') FROM DUAL
使用的包:DBMS_FGA
select sql_text,LAST_LOAD_TIME from v$sql where COMMAND_TYPE=&COMMAND_TYPE order by LAST_LOAD_TIME desc;
就可以列出各种操作的sql语句和时间,但是没有用户的信息,怎么关联出sql是哪个用户执行的呢?
还是必须要在触发器里才能得到user
做个测试就知道了,偷懒你就自己做吧,仅提供思路
那就麻烦点,看看有关statspack的脚本,看看oracle是怎么做的吧,不知道可行不
select sys_context('USERENV','SESSION_USER') from dual;
可以得到当前执行这个触发器的用户的。
谢谢大家的参与!!!!!!