有一种办法,可以对表进行审计。
专注于为中小企业提供成都网站建设、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业嘉禾免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
init文件的参数必须:
audit_trail=DB
比如:
用user用户登陆.打算对表user.test的插入操作做审计.
操作如下:
audit insert on user.test;
执行你的语句:
insert into test values (....);
查询sql执行情况:
select * from sys.aud$;
1、出现异常,会自动回滚,不用为了回滚而捕获异常
2、如需要对异常进行处理,可参考以下异常捕获逻辑
begin
--代码处理逻辑。。。
exception
when no_data_found then
--no_data_found异常处理。。。
rollback;
when others then
--其他异常处理。。。
rollback;
以上。
通过如下代码:
public static String getExceptionAllinformation(Exception ex){
String sOut = "";
StackTraceElement[] trace = ex.getStackTrace();
for (StackTraceElement s : trace) {
sOut += "\tat " + s + "\r\n";
}
return sOut;
}
扩展资料:
注意事项
oracle存储过程,可以通过sqlcode 获取异常编码、通过sqlerrm获取异常信息。
例子:
create or replace procedure write2blob(p_id in number, --id
p_blob_data in blob,
p_msg out varchar2) --数据
is
v_lobloc blob; --目标blob
v_blob_data blob; --作为接受参数的字段,参数变量不能直接拿来赋值
v_amount binary_integer; --总长度
v_sub_length binary_integer; --一次读取的最大长度,不超过32766
v_sub_blob blob; --一次读取的子串
v_offset binary_integer; --游标
v_err_msg varchar2(1000);
v_id binary_integer; --要修改或新增的记录ID
v_temp binary_integer; --临时变量用于判断是否有v_id对应的记录begin
v_amount := length(p_blob_data);
v_blob_data := p_blob_data;
v_sub_length := 32767;
v_offset := 1;
v_id := p_id;
v_temp := 0; --execute immediate v_query_string into v_lobloc;
select count(1) into v_temp from a where id = v_id; --查询是否有v_id对应的记录,并且赋值给v_te/*注意:无论是修改还是新增,blob字段都需要用empty_blob()进行初始化,否则后边的blob内容,不能写进表里面。
一般写在存储过程处理异常。
exception
when others then
out_mes:=out_mes || '执行失败!因为'|| sqlcode || '错误' ;
out_mes你自己可以处理,插入日志表中 或作为输出参数。