有什么办法可以在oracle 10g中记录所有失败的sql语句

问题描述:

有什么方法可以将oracle 10g中所有失败的sql语句记录到表或文件中?

is there any way to log all failed sql statements in oracle 10g to a table or file?

失败"是指格式错误的sql语句或不具有表或对象权限的sql语句.

By failed I mean bad formated sql statement or sql statements that do not have permission for a table or object.

您可能希望使用审核功能,例如:

You may want to use Auditing like:

审计选择表,插入表,删除表,执行过程 通过访问 每当无法成功时;

AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;

按访问权限用于每个语句(看起来像您想要的).通过SESSION,每个会话(高容量环境)将记录一条记录.

By ACCESS is for each statement (which seems like what you want). By SESSION would record one record per session (high volume environment).

Oracle的内置审计比触发器要少.其他答案包含一个触发器,使您可以记录所需的确切信息.审核还将仅捕获对现有对象的命中.如果有人选择了不存在的表(拼写错误或不正确的表),审核将不会捕获该表.上面的触发器将.

Oracle's built in auditing has less overhead then a trigger. A trigger, which other answers contain, allows you to log the exact information you want. Auditing will also only catch hits on existing objects. If someone selects on a non-existent table (misspelled or whatnot) auditing will not catch it. The triggers above will.

安全指南中的更多信息:

A lot more info in the security guide: http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/auditing.htm#i1011984