首批通过分布式安全可靠测评,为关键业务系统打造
AUDIT
更新时间:2026-06-28 17:16:22
描述
该语句用于配置或删除对 SQL 语句的审计规则。
说明
- 配置对 SQL 语句的审计规则时,您必须拥有
AUDIT SYSTEM系统权限,且需要登录 ORAAUDITOR 用户。 - 配置对 SQL 语句的审计规则后,对所有会话立即生效。
- 需要通过系统配置项 audit_trail 开启审计功能,该语句配置的审计规则才能生效。
使用限制及注意事项
在进行审计前,需先解锁 ORAAUDITOR 用户。
将 ORAAUDITOR 用户解锁,示例如下:
ALTER USER ORAAUDITOR ACCOUNT UNLOCK;
使用审计的详细信息,参见 开启安全审计。
语法
/* 语句审计 */
{AUDIT | NOAUDIT}
{ statement_operation_list | ALL | ALL STATEMENTS }
[BY user_name [, user_name]...]
[BY ACCESS]
[WHENEVER [NOT] SUCCESSFUL]
/* 对象审计 */
{AUDIT | NOAUDIT}
{ object_operation_list | ALL }
ON { obj_name | DEFAULT }
[WHENEVER [NOT] SUCCESSFUL]
statement_operation_clause:
statement_operation_list
| ALL
| ALL STATEMENTS
statement_operation_list:
statement_operation [statement_operation...]
object_operation_clause:
object_operation_list
| ALL
object_operation_list:
object_operation [object_operation...]
auditing_on_clause:
ON obj_name
| ON DEFAULT
auditing_by_user_clause:
BY user_name [user_name...]
whenever_option:
WHENEVER NOT SUCCESSFUL
| WHENEVER SUCCESSFUL
参数说明
| 参数 | 说明 |
|---|---|
| statement_operation_list | 要审计的 SQL 语句操作列表 |
| ALL | 审计所有可审计的语句 |
| ALL STATEMENTS | 审计所有语句 |
| user_name | 要审计的用户名列表,用逗号分隔 |
| BY ACCESS | 为每个审计操作生成一条记录 |
| WHENEVER NOT SUCCESSFUL | 仅审计失败的操作 |
| WHENEVER SUCCESSFUL | 仅审计成功的操作 |
| object_operation_list | 要审计的对象操作列表 |
| ALL | 审计所有可审计的对象操作 |
| obj_name | 要审计的对象名称 |
| DEFAULT | 设置默认审计选项,应用于后续创建的对象 |
| WHENEVER NOT SUCCESSFUL | 仅审计失败的操作 |
| WHENEVER SUCCESSFUL | 仅审计成功的操作 |
可以审计的 SQL 语句类型如下表所示。
审计语句说明表 1
| 审计语句 | 说明 |
|---|---|
| ALTER SYSTEM | 审计 ALTER SYSTEM 语句。 |
| CLUSTER | 审计 ADD CLUSTER 和 REMOVE CLUSTER 语句。 |
| INDEX | 审计 CREATE INDEX、DROP INDEX、FLASHBACK INDEX 和 PURGE INDEX 语句。 |
| NOT EXISTS | 审计因对象不存在导致失败的操作。 |
| OUTLINE | 审计 CREATE OUTLINE、ALTER OUTLINE 和 DROP OUTLINE 语句。 |
| PROCEDURE | 审计 CREATE PROCEDURE、DROP PROCEDURE、CREATE FUNCTION、DROP FUNCTION、CREATE PACKAGE 和 DROP PACKAGE 语句。 |
| PROFILE | 审计 CREATE PROFILE、ALTER PROFILE 和 DROP PROFILE 语句。 |
| ROLE | 审计 CREATE ROLE、ALTER ROLE、DROP ROLE 和 SET ROLE 语句。 |
| SEQUENCE | 审计 CREATE SEQUENCE 和 DROP SEQUENCE 语句。 |
| SESSION | 审计登入登出操作。 |
| SYNONYM | 审计 CREATE SYNONYM 和 DROP SYNONYM 语句。 |
| SYSTEM AUDIT | 审计 AUDIT 和 NOAUDIT 语句。 |
| SYSTEM GRANT | 审计 GRANT 和 REVOKE 语句。 |
| TABLE | 审计 CREATE TABLE、DROP TABLE 和 TRUNCATE TABLE 语句。 |
| TABLESPACE | 审计 CREATE TABLESPACE、ALTER TABLESPACE 和 DROP TABLESPACE 语句。 |
| TRIGGER | 审计 CREATE TRIGGER、ALTER TRIGGER 和 DROP TRIGGER 语句。 |
| TYPE | 审计 CREATE TYPE、DROP TYPE、CREATE TYPE BODY 和 DROP TYPE BODY 语句。 |
| USER | 审计 CREATE USER、ALTER USER 和 DROP USER 语句。 |
| VIEW | 审计 CREATE VIEW 和 DROP VIEW 语句。 |
审计语句说明表 2
| 审计语句 | 说明 |
|---|---|
| ALTER SEQUENCE | 审计 ALTER SEQUENCE 语句。 |
| ALTER TABLE | 审计 ALTER TABLE 语句。 |
| COMMENT TABLE | 审计 COMMENT ON TABLE 和 COMMENT ON VIEW 语句。 |
| DELETE TABLE | 审计 DELETE FROM TABLE 和 DELETE FROM VIEW 语句。 |
| EXECUTE PROCEDURE | 审计 CALL 语句。 |
| GRANT PROCEDURE | 审计 GRANT obj_privilege ON PROCEDURE | FUNCTION | PACKAGE 和 REVOKE obj_privilege ON PROCEDURE | FUNCTION | PACKAGE 语句。 |
| GRANT SEQUENCE | 审计 GRANT obj_privilege ON SEQUENCE 和 REVOKE obj_privilege ON SEQUENCE 语句。 |
| GRANT TABLE | 审计 GRANT obj_privilege ON TABLE | VIEW 和 REVOKE obj_privilege ON TABLE | VIEW 语句。 |
| GRANT TYPE | 审计 GRANT obj_privilege ON TYPE 和 REVOKE obj_privilege ON TYPE 语句。 |
| INSERT TABLE | 审计 INSERT INTO TABLE 和 INSERT INTO VIEW 语句。 |
| SELECT SEQUENCE | 审计所有包含 sequence.CURRVAL 或 sequence.NEXTVAL 的语句。 |
| SELECT TABLE | 审计 SELECT TABLE 和 SELECT VIEW 语句。 |
| UPDATE TABLE | 审计 UPDATE TABLE 和 UPDATE VIEW 语句。 |
示例
基本审计配置
查看用户:
obclient> SELECT username, account_status FROM dba_users ORDER BY created;返回结果:
+------------+----------------+ | USERNAME | ACCOUNT_STATUS | +------------+----------------+ | SYS | OPEN | | LBACSYS | LOCKED | | ORAAUDITOR | OPEN | +------------+----------------+ 3 rows in set (0.211 sec)审计用户
SYS的 SELECT 表操作:obclient> AUDIT SELECT TABLE BY SYS BY ACCESS;仅审计用户
SYS执行失败的表操作:obclient> AUDIT TABLE BY SYS BY ACCESS WHENEVER NOT SUCCESSFUL;
取消审计
取消对用户
SYS表操作的审计:obclient> NOAUDIT TABLE BY SYS;取消对用户
SYSSELECT 表操作的审计:obclient> NOAUDIT SELECT TABLE BY SYS;
查看审计配置
查看语句审计配置:
obclient> SELECT * FROM DBA_STMT_AUDIT_OPTS;查看对象审计配置:
obclient> SELECT * FROM DBA_OBJ_AUDIT_OPTS;
系统参数配置
启用系统操作审计:
obclient> ALTER SYSTEM SET audit_sys_operations = TRUE; -- 或 obclient> ALTER SYSTEM SET audit_sys_operations = '1';设置审计日志输出目标:
-- 输出到数据库表 obclient> ALTER SYSTEM SET audit_trail = 'DB'; -- 或输出到操作系统文件 obclient> ALTER SYSTEM SET audit_trail = 'OS';