Oracle的Audit功能是Oracle数据库提供的一种审计功能。这个功能可以实现对数据库的操作层面进行记录和监管,从而保障数据库的安全性和完整性。
举个例子,某个数据库管理员在某个时间点删除了某个表,导致某个程序报错了。如果此时数据库管理员无法确定是哪个人或者哪个程序删除了表,那么就没有办法查找到这个问题的根本原因。如果开启了Oracle的Audit功能,当管理员删除数据表时就会被记录下来,这样就有跟踪和解决问题的依据。
Oracle的Audit功能支持对多个对象进行记录,包括:
• 用户
• 角色
• 用户组
• 表、索引
• 视图、存储过程
• 用户定义类型、序列等
具体而言,可以对数据库的DCLS操作(包括CREATE DATABASE、DROP DATABASE、ALTER DATABASE以及CREATE TABLESPACE、DROP TABLESPACE等等)进行审计。
这里以AUDIT CREATE TABLE BY access;举例。这条命令可以将对于ACCESS用户自建表对象的创建进行审计。当AUDIT功能打开时,ACCESS用户创建一个表,这个对象的创建记录就会被写入到 AUD$ 表中。等到另一个管理员需要查看这个审计信息时,可以利用SELECT语句进行查询,如下:
SELECT os_username,username,terminal,To_char(timestamp,'HH:MI:SS MM/DD/YYYY'),obj_name,action_name
FROM sys.aud$ WHERE obj$creator='ACCESS' AND action='112'
ORDER BY timestamp;
此时就可以查询到所有的记录,包括用户名、操作行为、时间戳、对象名等信息。
除了将审计信息插入到AUD$表中外,还可以使用 Oracle自带的DBMS_FGA包进行审计。这个包的优势在于支持对SQL语句进行审计,是一个更为强大的审计工具。
综上所述,Oracle的Audit功能可以为数据库提供安全性和完整性保障。管理员可以通过这个功能来跟踪和处理问题,切实提高数据库的可靠性和安全性。