首批通过分布式安全可靠测评,为关键业务系统打造
AUDIT
更新时间:2026-07-15 20:56:58
描述
该语句用于配置或删除对 SQL 语句的审计规则。
说明
- 配置对 SQL 语句的审计规则时,您必须拥有
AUDIT SYSTEM系统权限,且需要登录 ORAAUDITOR 用户。 - 配置对 SQL 语句的审计规则后,对所有会话立即生效。
- 需要通过系统配置项 audit_trail 开启审计功能,该语句配置的审计规则才能生效。
使用限制及注意事项
在进行审计前,需先解锁 ORAAUDITOR 用户。
将 ORAAUDITOR 用户解锁,示例如下:
ALTER USER ORAAUDITOR ACCOUNT UNLOCK;
使用审计的详细信息,参见 开启安全审计。
语法
/*语句审计*/
{AUDIT | NOAUDIT} statement_operation_clause
[auditing_by_user_clause] [whenever_option]
/*对象审计*/
{AUDIT | NOAUDIT} object_operation_clause auditing_on_clause [whenever_option]
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:
ALTER SYSTEM
| CLUSTER
| CONTEXT
| DATABASE LINK
| MATERIALIZED VIEW
| NOT EXISTS
| OUTLINE
| PROCEDURE
| PROFILE
| PUBLIC DATABASE LINK
| PUBLIC SYNONYM
| ROLE
| SEQUENCE
| SESSION
| SYNONYM
| SYSTEM AUDIT
| SYSTEM GRANT
| TABLE
| TABLESPACE
| TRIGGER
| TYPE
| USER
| VIEW
| ALTER SEQUENCE
| ALTER TABLE
| COMMENT TABLE
| DELETE TABLE
| EXECUTE PROCEDURE
| GRANT PROCEDURE
| GRANT SEQUENCE
| GRANT TABLE
| GRANT TYPE
| INSERT TABLE
| SELECT SEQUENCE
| SELECT TABLE
| UPDATE TABLE
object_operation:
ALTER
| AUDIT
| COMMENT
| DELETE
| EXECUTE
| FLASHBACK
| GRANT
| INDEX
| INSERT
| RENAME
| SELECT
| UPDATE
参数解释
| 参数 | 描述 |
|---|---|
| statement_operation | 语句审计操作类型。
|
| object_operation | 对象审计操作类型。 |
| obj_name | 被审计的对象名,支持的对象类型包括:表(Table)、视图(View)和序列(Sequence)。 |
| ON DEFAULT | 设置默认审计规则,对后续新创建的对象生效。 |
| user_name | 指定用户名。 |
| 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 语句。 |
示例
对用户
user1所有表的相关操作在执行成功的情况下进行审计。obclient> AUDIT TABLE BY user1 WHENEVER SUCCESSFUL; Query OK, 0 rows affected对用户
user2的表tbl1的所有INSERT、UPDATE和DELETE操作进行审计。obclient> AUDIT INSERT,UPDATE,DELETE ON user2.tbl1; Query OK, 0 rows affected