使用oracle的審計后,可以從系統察看到那些sql,但不是能捕獲的。
解决方案 »
- 4000W大数据量的读取与写入的应用
- oracle存取小于1的小数,为什么是没有零
- 在oracle PL/SQL开发中遇到游标的问题
- 请大家帮忙,关系数据计算累加的问题。。。。。
- 我的job执行了一个存储过程,
- 触发器锁表的问题
- pl/sql 创建表时,提示无法识别字符集名称
- 请问如何用SQL语句删除BLOB型数据,我直接用DELETE语句,好象只把非BLOB字段数据删除了,BLOB数据仍存在.后来,我在Delete语句后面,再加一条A
- jbuilder下连接oracle数据库
- oracle中表的列名能用变量表达吗?
- 有关oracle重装的问题!急
- 再oracle开发中,什么开发工具最好那〉?
还是给你看一个参考吧。select osuser,username,sql_text
from v$session a,v$sqltext b
where a.sql_address=b.address;
重新启动数据库
DOS下执行
SVRMGRL
CONNECT INTERNAL/ORACLE
SHUTDOWN IMMEDIATE
STARTUP
然后用DBA用户登陆SQL*PLUS
CONNECT SYSTEM/MANAGER
创建一个审计:
SQL> audit create table by access whenever successful;审计已成功。
SQL> select sessionid SID,userid USID,action# ACT,obj$name OBNAME,TIMESTAMP# TIME FROM SYS.AUD$; SID USID ACT OBNAME TIME
----- ------ ---- ------- ------
202 SYSTEM 1 A 2002-08-24 00:59:01说明审计已经启动。
试试通过提取v$sqltext的sql_text字段,分析一下试试
如:
select count(1) from v$sqltext where instr(sql_text,'insert into tbname')>0 or
instr(sql_text,'update tbname')>0 or instr(sql_text,'delete from tbname')>0;
AFTER INSERT OR DELETE OR UPDATE ON "BUSINESS"."TB1" declare
str varchar2(500);
begin
select sql_text into str from sys.gv_$open_cursor
where sid in (select sid from sys.gv_$session where status='ACTIVE')
and upper(substr(sql_text,1,1))<>'S'; insert into tb2(col)values(str);
end;