如,我想对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;请问这个完整的怎么写,我只知道此方法应该能行的通。谢谢了!
解决方案 »
- 安装了oracle之后,还需要做哪些工作,其它机器才能访问数据库啊,大家帮忙瞧瞧!
- 在sql里怎么把一个数值型的字段中小数点后的数值取出来?
- 关于group by 1
- help me!导库问题
- 在Oracle安装过程中发生的Home81Agent和Home81DataGather不能启动问题,请回复,谢谢
- 同时启动两个OracleService,如何知道登录的是那个Oracle Instance?
- 关于dbms_sql.parse的几点问题?
- oem问题,困扰了我很长时间
- 请问oracle中有没有Datetime类型的数据?
- procedure的调用,执行问题。
- 做了一次数据库迁移,原本正常的程序出错:invalid identifier
- 高手帮我写个oracle的出发器 在线等~~~
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;
可以得到当前执行这个触发器的用户的。
谢谢大家的参与!!!!!!