我已经开始审核用户对oracle 11g数据库中任何表失败的插入记录。我使用了以下命令来做同样的事情。
AUDIT INSERT ANY TABLE BY SHENA BY ACCESS WHENEVER NOT SUCCESSFUL;
我想知道每当记录插入失败时,我是否知道未能插入表中的记录是什么。
我们可以在哪里看到这样的信息。或者,如果您知道任何其他审计方式,请建议。我知道的一种方法是在插入时写一个触发器。在该触发器句柄中插入失败 EXCEPTION 并将这些值保存到某个表中。
答案 0 :(得分:0)
使用具有以下控制文件格式的SQL Loader实用程序。
options(skip=1,rows=65534,errors=65534,readsize=16777216,bindsize=16777216)
load data
infile 'c:\users\shena\desktop\1.txt'
badfile 'C:\Users\shena\Desktop\test.bad'
discardfile 'C:\Users\shena\Desktop\test.dsc'
log 'C:\Users\shena\Desktop\test.log'
append
into table ma_basic_bd
fields terminated by '|' optionally enclosed by '"' trailing nullcols
(fs_perm_sec_id,
"DATE" "to_date(:DATE,'YYYY-MM-DD')",
adjdate "to_date(:adjdate,'YYYY-MM-DD')",
currency,
p_price,
p_price_open,
p_price_high,
p_price_low,
p_volume)
要求您使用常规路径加载,以便我们可以在.bad文件中获取被拒绝(因数据类型不匹配和业务规则违规而被拒绝)记录。常规路径加载是默认选项。
以下网址可用于详细了解。
共有4个视频。非常有帮助。