---
title: 编组
description: 开始审计 本章节向您介绍如何开启 OceanBase 数据库的审计功能。OceanBase 数据库的审计相关操作是由内置的 ORAAUDITOR 用户进行设置和操作，该用户的密码固定为 ORAAUDITOR。 开启审计功能并设置审计记录存储位置 使用 sys 用户登录到 Oracle 租户解锁 ORAAUDITOR …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# 开始审计

更新时间：2023-07-19 13:03:07

本章节向您介绍如何开启 OceanBase 数据库的审计功能。OceanBase 数据库的审计相关操作是由内置的 `ORAAUDITOR` 用户进行设置和操作，该用户的密码固定为 ORAAUDITOR。

## 开启审计功能并设置审计记录存储位置

1. 使用 `sys` 用户登录到 `Oracle` 租户解锁 `ORAAUDITOR` 用户。

   ```sql
   obclient> ALTER USER ORAAUDITOR ACCOUNT UNLOCK;

   ```

   > **说明**
   >
   >  
   >
   > OceanBase 数据库默认创建了 `ORAAUDITOR` 用户。该用户默认处于锁定状态，在使用审计前需要启用该用户。

   为了便于 ORAAUDITOR 用户直接修改相关配置项的值，可通过 GRANT 语句给 ORAAUDITOR 用户授予 ALTER SYSTEM 权限。

   ```sql
   obclient> GRANT ALTER SYSTEM TO ORAAUDITOR;

   ```
 2. 使用 `ORAAUDITOR` 用户登录到 `Oracle` 租户。
 3. 启用审计功能并设置审计记录的存储位置。

   通过配置项 `audit_trail` 开启审计功能，执行成功后立即生效。该配置项的取值如下：

      - `NONE`：关闭审计，为默认值。
      - `OS`：审计记录写入本地磁盘文件。
      - `DB`：审计记录写入内部表。
      - `DB,EXTENDED / DB_EXTENDED`：审计记录写入内部表且记录包含执行的 SQL 语句。

   示例如下：

   ```sql
   obclient> ALTER SYSTEM SET audit_trail = 'DB,EXTENDED';

   ```

   有关 `audit_trail` 配置项的详细信息，请参见 [audit_trail](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356293)。

   > **说明**
   >
   >  
   >
   > 审计记录支持写入内部表和写入本地磁盘文件两种方式：
   >
   >  
   >    - 写入磁盘文件：通过异步写的方式记录在 `<安装目录>/audit/` 下，默认在 `/home/admin/oceanbase/audit/observer_xx_xxxxxx.aud`。
   >    - 写入内部表：审计信息直接写入系统表。内部表 `__all_tenant_security_audit_record`，存放审计记录；内部表 `__all_virtual_audit_operation` 或 `__all_virtual_audit_action`，存放审计相关 `ID` 和 `Name` 的映射。

## 设置审计规则

使用 `AUDIT` 语句设置审计规则。可以设置语句审计操作类型和对象审计操作类型的审计规则。有关设置审计规则的详细信息，请参见 [AUDIT](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357383)。

对用户 `user1` 的表 `tbl1` 的所有 `INSERT`、`UPDATE` 和 `DELETE` 操作进行审计。

```sql
obclient> AUDIT INSERT,UPDATE,DELETE ON user1.tbl1;

```

## 查看审计规则

设置审计规则后，您可以通过一系列 Oracle 兼容的数据字典视图查看审计规则的信息。

| 字典视图 | 功能说明 |
| --- | --- |
| [ALL_DEF_AUDIT_OPTS](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355806) | 记录任何新创建对象的默认审计规则。每列的取值如下： - `-/-`：默认不审计 - `A/-`: 只在语句执行成功时审计 - `-/A`: 只在语句执行失败时审计 - `A/A`: 语句执行无论成功还是失败时都审计 |
| [DBA_STMT_AUDIT_OPTS](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356086) | 记录语句级别审计的详细配置。 |
| [DBA_OBJ_AUDIT_OPTS](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356071) | 记录对象级别审计的详细配置。 |

查看 `ALL_DEF_AUDIT_OPTS` 中的审计规则。示例如下：

```sql
obclient> SELECT * FROM SYS.ALL_DEF_AUDIT_OPTS;

```

## 查看审计记录

- 查看磁盘文件中的审计记录。

  示例如下：

  ```shell
  $ pwd
  /home/admin/oceanbase/audit
  $ cat observer_47454_20200924144931.aud
  2020-10-04 13:48:10.635533
  LENGTH : '408'
  ACTION :[23] 'create table t1(c0 int)'
  ACTION_NUMBER:[1] '0'
  STATUS:[1] '0'
  ENTRYID:[1] '5'
  STATEMENTID:[1] '3'
  DBID:[16] '1100611139404836'
  SESSIONID:[10] '3221505515'
  PROXY SESSIONID:[4] '2816'
  TENANTID:[4] '1001'
  USERID:[16] '1100611139404786'
  DATABASE USER:[9] 'AUDITTEST'
  CLIENT TENANT:[3] 'ora'
  CLIENT USER:[9] 'AUDITTEST'
  CLIENT ADDRESS:[13] 'xx.xx.xx.xx'
  PROXY CLIENT ADDRESS:[13] 'xx.xx.xx.xx'

  ```

  > **说明**
  >
  >  
  >
  > 文件过长时，会自动截断。
 - 查看视图中的审计记录。

  可以通过 Oracle 兼容的字典视图，查看记录在内部表的审计记录。

  | 字典视图 | 功能说明 |
  | --- | --- |
  | [DBA_AUDIT_EXISTS](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355853) | 显示 `AUDIT EXISTS` 和 `AUDIT NOT EXISTS` 产生的审计跟踪条目。 |
  | [DBA_AUDIT_OBJECT](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355854) | 显示数据库中所有对象的审计跟踪条目。 |
  | [DBA_AUDIT_SESSION](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355855) | 显示所有关于 `CONNECT` 和 `DISCONNECT` 的审计跟踪条目。 |
  | [DBA_AUDIT_STATEMENT](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355856) | 显示整个数据库中关于 `GRANT`、`REVOKE`、`AUDIT`、`NOAUDIT`和 `ALTER SYSTEM`语句的审计跟踪条目。 |
  | [DBA_AUDIT_TRAIL](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355857) | 显示所有的审计跟踪条目。 |
  | [USER_AUDIT_OBJECT](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356135) | 显示当前用户可访问的对象的审计跟踪条目。 |
  | [USER_AUDIT_SESSION](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356136) | 显示关于当前用户的连接和断开的审计跟踪条目。 |
  | [USER_AUDIT_STATEMENT](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356137) | 显示当前用户发出的 `GRANT`、`REVOKE`、`AUDIT`、`NOAUDIT` 和 `ALTER SYSTEM` 语句的审计跟踪条目。 |
  | [USER_AUDIT_TRAIL](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356138) | 显示与当前用户相关的所有审计跟踪条目。 |

  查看 `DBA_AUDIT_TRAIL` 中的审计记录。示例如下：

  ```sql
  obclient> SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL;
  +----------+-------------+-----------+-----------------------------------------------------------------+
  | USERNAME | USERHOST | TIMESTAMP | SQL_TEXT |
  +----------+-------------+-----------+-----------------------------------------------------------------+
  | AUD | xx.xx.xx.xx | 29-OCT-20 | DISCONNECT |
  | AUD | xx.xx.xx.xx | 29-OCT-20 | CONNECT |
  +----------+-------------+-----------+-----------------------------------------------------------------+

  ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
