暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

一文轻松搞定,达梦数据库审计

原创 陈举超 3天前
51

一:审计介绍

审计机制是 DM 数据库管理系统安全管理的重要组成部分之一。
DM 数据库除了提供数据安全保护措施外,还提供对日常事件的事后审计监督。
DM 具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。通过考察、跟踪审计信息,数据库审计员可以查看用户访问的形式以及曾试图对该系统进行的操作,从而采取积极、有效的应对措施。

二:审计级别

1.系统级:

系统的启动、关闭、部分系统事件以及一些系统过程和函数的调用,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录;

2.语句级:

导致影响特定类型数据库对象的特殊 SQL 或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句;

3.对象级:

审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句。

三:审计日志存储和查询

审计记录只存储在操作系统的物理文件中,并没有一份额外的数据同时存储在数据库表里。
通过SQL访问记录时,是数据库底层直接读取这些文件并展示,并非从某个数据表中调取。

文件路径:
文件默认存放在 SYSTEM_PATH 路径下,如果你像之前那样配置了 AUD_PATH,则会存放于你指定的目录。

查看:

SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME IN ('SYSTEM_PATH','AUD_PATH');

行号     PARA_NAME   PARA_VALUE    DEFAULT_VALUE PARA_TYPE
---------- ----------- ------------- ------------- ---------
1          SYSTEM_PATH /dm8/data/CJC NULL          READ ONLY
2          AUD_PATH    NULL          NULL          READ ONLY

已用时间: 6.183(毫秒). 执行号:602.

文件命名:
文件命名格式为 AUDIT_<创建时间>.log。其中 GUID 是系统生成的唯一标识,创建时间 则记录了文件的生成时间。这样的命名便于管理和识别。

[dmdba@cjc-db-11 ~]$ ls -lrth /dm8/data/CJC/AUDIT_CJC_*
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:09 /dm8/data/CJC/AUDIT_CJC_F2C72DB0F2C72DB07EFBFF9F7841ABD7_2026-5-28-14-8-7.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:31 /dm8/data/CJC/AUDIT_CJC_723011D9723011D99BFC6D667841ABD7_2026-5-28-14-9-8.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:34 /dm8/data/CJC/AUDIT_CJC_BBBAAB74BBBAAB74A3D091087841ABD7_2026-5-28-14-31-23.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:34 /dm8/data/CJC/AUDIT_CJC_6453E61A6453E61A7C8201087841ABD7_2026-5-28-14-34-47.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:59 /dm8/data/CJC/AUDIT_CJC_5E6571655E657165E25BC5427841ABD7_2026-5-28-14-59-48.log

不是文本格式,不能直接查看文件:

[dmdba@cjc-db-11 ~]$ file /dm8/data/CJC/AUDIT_CJC_*
/dm8/data/CJC/AUDIT_CJC_5E6571655E657165E25BC5427841ABD7_2026-5-28-14-59-48.log: data
/dm8/data/CJC/AUDIT_CJC_6453E61A6453E61A7C8201087841ABD7_2026-5-28-14-34-47.log: data
/dm8/data/CJC/AUDIT_CJC_723011D9723011D99BFC6D667841ABD7_2026-5-28-14-9-8.log:   data
/dm8/data/CJC/AUDIT_CJC_BBBAAB74BBBAAB74A3D091087841ABD7_2026-5-28-14-31-23.log: data
/dm8/data/CJC/AUDIT_CJC_F2C72DB0F2C72DB07EFBFF9F7841ABD7_2026-5-28-14-8-7.log:   data

访问方式:
文件存储于操作系统,但可以通过数据库提供的 V$AUDITRECORDS 视图来查询记录。

SQL> SELECT USERNAME,IP,OBJNAME,OPERATION,SQL_TEXT,DESCRIBTION FROM V$AUDITRECORDS;

行号     USERNAME   IP  OBJNAME OPERATION SQL_TEXT                DESCRIBTION                        
---------- ---------- --- ------- --------- ----------------------- -----------------------------------
1          SYSDBA     ::1         EXECUTE   SP_SET_ENABLE_AUDIT(1); 没有执行权限
2          SYSAUDITOR ::1         EXECUTE   SP_SET_ENABLE_AUDIT(1); 

其中审计规则,是存储在 DM 字典表 SYSAUDIT 中:
审计设置存放于 DM 字典表 SYSAUDIT 中,进行一次审计设置就在 SYSAUDIT 中增加一条对应的记录,取消审计则删除 SYSAUDIT 中相应的记录。
当使用 DM 提供的审计机制进行了审计设置后,除语句序列审计设置外的审计设置信息都记录在数据字典表 SYSAUDITOR.SYSAUDIT 中。
审计用户可通过查询 V$AUDITRECORDS 动态视图获取审计文件存放路径下审计文件中审计记录的具体信息,审计记录内容包括操作者的用户名、所在站点、所进行的操作、操作的对象、操作时间、当前审计条件等。

四:审计相关参数

SQL> show parameter AUD

行号     para_name            para_value
---------- -------------------- ----------
1          AUD_PATH             NULL
2          ENABLE_AUDIT         1
3          AUDIT_FILE_FULL_MODE 1
4          AUDIT_SPACE_LIMIT    8192
5          AUDIT_MAX_FILE_SIZE  100
6          AUDIT_IP_STYLE       0
7          AUDIT_FLUSH_LEVEL    0
SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME like '%AUD%';

行号     PARA_NAME            PARA_VALUE DEFAULT_VALUE PARA_TYPE
---------- -------------------- ---------- ------------- ---------
1          AUD_PATH             NULL       NULL          READ ONLY
2          ENABLE_AUDIT         1          0             READ ONLY
3          AUDIT_FILE_FULL_MODE 1          1             IN FILE
4          AUDIT_SPACE_LIMIT    8192       8192          IN FILE
5          AUDIT_MAX_FILE_SIZE  100        100           SYS
6          AUDIT_IP_STYLE       0          0             SYS
7          AUDIT_FLUSH_LEVEL    0          0             SYS

7 rows got

参数对应描述:

SQL> SELECT DESCRIPTION FROM V$DM_INI WHERE PARA_NAME like '%AUD%';

行号     DESCRIPTION                                                                                          
---------- -----------------------------------------------------------------------------------------------------
1          audit log path
2          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit
3          operation mode when audit file is full, 1: delete old file; 2: no longer to write audit records
4          audit space limit in Megabytes
5          maximum audit file size in Megabytes
6          IP style in audit record, 0: IP, 1: IP(hostname), default 0
7          Level to flush audit record, 0: flush by statement; 1: flush by transaction; 2: flush delay. default is 0

7 rows got

参数说明:

1.ENABLE_AUDIT

审计开关
在 DM 系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。
审计开关由过程 VOID SP_SET_ENABLE_AUDIT(param int);
控制,过程执行完后会立即生效,param 有三种取值:
0:关闭审计
1:打开普通审计
2:打开普通审计和实时审计

2.AUD_PATH

审计文件存放路径,默认 NULL,存储在 SYSTEM_PATH 路径下,也就是数据文件所在目录

SQL> show parameter SYSTEM_PATH

行号     para_name   para_value   
---------- ----------- -------------
1          SYSTEM_PATH /dm8/data/CJC

[dmdba@cjc-db-11 ~]$ ls -lrth /dm8/data/CJC/AUDIT_CJC_*
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:09 /dm8/data/CJC/AUDIT_CJC_F2C72DB0F2C72DB07EFBFF9F7841ABD7_2026-5-28-14-8-7.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:31 /dm8/data/CJC/AUDIT_CJC_723011D9723011D99BFC6D667841ABD7_2026-5-28-14-9-8.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:34 /dm8/data/CJC/AUDIT_CJC_BBBAAB74BBBAAB74A3D091087841ABD7_2026-5-28-14-31-23.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:34 /dm8/data/CJC/AUDIT_CJC_6453E61A6453E61A7C8201087841ABD7_2026-5-28-14-34-47.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:59 /dm8/data/CJC/AUDIT_CJC_5E6571655E657165E25BC5427841ABD7_2026-5-28-14-59-48.log

修改参数:

[dmdba@cjc-db-11 ~]$ cat /dm8/data/CJC/dm.ini|grep -i AUD_PATH
[dmdba@cjc-db-11 ~]$ vi /dm8/data/CJC/dm.ini
### 新增参数:
                AUD_PATH                        = /dm8/audit

新建审计目录,存放审计文件:

[dmdba@cjc-db-11 ~]$ mkdir /dm8/audit

重启数据库生效

[dmdba@cjc-db-11 ~]$ DmServiceCJC stop
[dmdba@cjc-db-11 ~]$ DmServiceCJC start

检查参数

SQL> show parameter AUD_PATH

行号     para_name para_value
---------- --------- ----------
1          AUD_PATH  /dm8/audit

检查文件:

[dmdba@cjc-db-11 ~]$ ls -lrth /dm8/audit/
total 100M
-rw-r--r-- 1 dmdba dinstall 100M May 28 15:57 AUDIT_CJC_F3021903F30219036919E90E7841ABD7_2026-5-28-15-57-58.log
[dmdba@cjc-db-11 ~]$ 

3.AUDIT_FILE_FULL_MODE

operation mode when audit file is full, 1: delete old file; 2: no longer to write audit records
随着系统的运行,审计记录将会不断增加,审计文件需要更多的磁盘空间。在极限情况下,审计记录可能会因为磁盘空间不足而无法写入审计文件,最终导致系统无法正常运行。对这种情况的处理有两种策略,通过设置 DM 的 INI 参数 AUDIT_FILE_FULL_MODE 进行配置。
当将 AUDIT_FILE_FULL_MODE 置为 1 时,将删除最老的审计文件,直至有足够的空间创建新审计文件,若将所有可以删除的审计文件都删除后空间仍旧不够,则数据库会挂起不再处理任何请求,直至磁盘空间被清理出足够创建新审计文件的空间;
当将 AUDIT_FILE_FULL_MODE 置为 2 时,将不再写审计记录;
当将 AUDIT_FILE_FULL_MODE 置为 3 时,结合 1 和 2,先尝试删老审计文件,再创建审计文件,若空间仍不足则不再审计,系统会定时检测是否有空余空间,如果有则恢复审计;
缺省值为 3。(不同版本,默认值不同)
AUDIT_FILE_FULL_MODE 为静态参数,可通过系统过程 SP_SET_PARA_VALUE 进行修改,但是修改需要重新启动 DM 数据库服务器才能生效。

4.AUDIT_SPACE_LIMIT

DM 的审计文件总存储空间大小由 INI 参数 AUDIT_SPACE_LIMIT 进行限制,该参数取值范围为 204800~1024*1024M,0 表示不限制,缺省为 0。
AUDIT_SPACE_LIMIT 为静态参数,可通过系统过程 SP_SET_PARA_VALUE 进行修改,但是修改需要重新启动 DM 数据库服务器才能生效。

5.AUDIT_MAX_FILE_SIZE

单个审计文件的大小可以通过 DM 的 INI 参数 AUDIT_MAX_FILE_SIZE 指定。当单个审计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。
AUDIT_MAX_FILE_SIZE 为动态系统级参数,有效值范围为 8~4096M,缺省值为 100M,DBA 用户可通过系统过程 SP_SET_PARA_VALUE 对其进行动态修改。

6.AUDIT_IP_STYLE

审计记录中的 IP 地址的显示格式由 DM 的 INI 参数 AUDIT_IP_STYLE 进行控制,
设置为 0 时,仅显示 IP;
设置为 1 时,显示 IP 和主机名;缺省值为 0。
AUDIT_IP_STYLE 为静态参数,可通过系统过程 SP_SET_PARA_VALUE 进行修改,但是修改需要重新启动 DM 数据库服务器才能生效。

7.AUDIT_FLUSH_LEVEL

审计记录的刷盘方式由动态系统级的 INI 参数 AUDIT_FLUSH_LEVEL 进行控制。
当设置 AUDIT_FLUSH_LEVEL 为 0 时,表示设置为语句级刷盘,一条语句执行结束进行一次审计记录刷盘操作;
当设置 AUDIT_FLUSH_LEVEL 为 1 时,表示设置为事务级刷盘,一个事务执行结束执行一次审计日志刷盘操作;
当设置 AUDIT_FLUSH_LEVEL 为 2 时,表示设置为延迟刷盘,当审计记录缓存满时(缓存大小固定为 8MB)自动刷盘。
默认是0:

SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME='AUDIT_FLUSH_LEVEL';

行号     PARA_NAME         PARA_VALUE DEFAULT_VALUE PARA_TYPE
---------- ----------------- ---------- ------------- ---------
1          AUDIT_FLUSH_LEVEL 0          0             SYS

已用时间: 6.646(毫秒). 执行号:702.

五:审计开关

在 DM 系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。
审计开关由过程 VOID SP_SET_ENABLE_AUDIT(param int);
控制,过程执行完后会立即生效,param 有三种取值:
0:关闭审计
1:打开普通审计
2:打开普通审计和实时审计
实时侵害检测系统用于实时分析当前用户的操作,并查找与该操作相匹配的实时审计分析规则,如果规则存在,则判断该用户的行为是否是侵害行为,确定侵害等级,并根据侵害等级采取相应的响应措施。

查看参数值:缺省值为 0。

SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
行号     PARA_NAME    PARA_VALUE DEFAULT_VALUE PARA_TYPE
---------- ------------ ---------- ------------- ---------
1          ENABLE_AUDIT 0          0             READ ONLY

已用时间: 6.797(毫秒). 执行号:504.

查看参数描述:

SELECT DESCRIPTION FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
行号     DESCRIPTION                                                                            
---------- ---------------------------------------------------------------------------------------
1          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit

已用时间: 3.227(毫秒). 执行号:505.

打开普通审计开关:
注意
审计开关必须由具有数据库审计员权限的管理员进行设置,也就是 SYSAUDITOR 用户。
SYSDBA没有权限:

SQL> SP_SET_ENABLE_AUDIT(1);
SP_SET_ENABLE_AUDIT(1);
[-5598]:没有执行权限.
已用时间: 1.127(毫秒). 执行号:0.

需要使用 SYSAUDITOR 用户:

[dmdba@cjc-db-11 ~]$ disql SYSAUDITOR/tGP2hdeb_wRs:5238
SQL> SP_SET_ENABLE_AUDIT(1);
DMSQL 过程已成功完成
已用时间: 2.244(毫秒). 执行号:601.

再次查看参数:

SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';

行号     PARA_NAME    PARA_VALUE DEFAULT_VALUE PARA_TYPE
---------- ------------ ---------- ------------- ---------
1          ENABLE_AUDIT 1          0             READ ONLY

已用时间: 6.798(毫秒). 执行号:602.

六:审计测试

1.系统级审计:

系统的启动、关闭、部分系统事件以及一些系统过程和函数的调用,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录;

系统级审计的审计操作及对应说明:

01.数据库系统启动关闭
区分第一次启动、正常退出后启动、异常退出后启动和还原库后第一次启动

02.审计空间不足告警
系统定时检测如果审计空间不足就会生成审计记录

03.数据库版本升级
包括数据字典版本、回滚段版本等

04.主备之间 redo 日志传输故障和恢复
包括主备之间 redo 日志传输异常和恢复两种

05.SP_SET_ENABLE_AUDIT
打开/关闭审计开关

06.SP_AUDIT_STMT/SP_NOAUDIT_STMT
设置/取消语句级审计

07.SP_AUDIT_XX/SP_NOAUDIT_XX
作为系统过程,本身不触发语句级审计

08.SP_AUDIT_OBJECT/SP_NOAUDIT_OBJECT
设置对象级审计/取消对象级审计

09.SP_AUDIT_SET_ENC
设置审计加密

10.SP_AUDIT_SQLSEQ_START
审计序列设置开始

11.SP_AUDIT_SQLSEQ_ADD
审计序列添加 SQL

12.SP_AUDIT_SQLSEQ_END
审计序列设置结束

13.SP_AUDIT_SQLSEQ_DEL
删除审计序列

14.SP_DROP_AUDIT_FILE
删除审计文件

15.SP_SWITCH_AUDIT_FILE
切换审计文件

16.SP_SET_PARA_VALUE
设置 DM.INI 文件中整型的参数值

17.SP_SET_PARA_STRING_VALUE
设置 DM.INI 文件中字符型的参数值

18.SP_SET_PARA_DOUBLE_VALUE
设置 DM.INI 文件中浮点型的参数值

19.SF_SET_SYSTEM_PARA_VALUE
修改整型、double、varchar 的静态配置参数或动态配置参数

20.SF_SET_SESSION_PARA_VALUE
设置会话级 INI 参数在当前会话上的值

21.SP_RESET_SESSION_PARA_VALUE
重置会话级 INI 参数在当前会话上的值,使得当前会话的参数值和全局值一致

22.SP_SET_PARAM_IN_SESSION
设置指定会话的会话级 INI 参数的值

23.SP_SET_SQLLOG_INI
修改 SQLLOG.INI 文件的内容

24.SP_DELETE_SQLLOG_INI_MODE
删除 SQLLOG.INI 文件中的模式

重启数据库(正常重启)

SQL> shutdown immediate;
操作已执行
已用时间: 0.551(毫秒). 执行号:0.
[dmdba@cjc-db-11 ~]$ DmServiceCJC start
Starting DmServiceCJC:                                     [ OK ]

模拟异常退出

[dmdba@cjc-db-11 ~]$ ps -ef|grep dmserver|grep -v grep
dmdba     2593     1  0 14:31 pts/0    00:00:00 /dm8/dbms/bin/dmserver path=/dm8/data/CJC/dm.ini -noconsole
[dmdba@cjc-db-11 ~]$ kill 2593
[dmdba@cjc-db-11 ~]$ DmServiceCJC start

[dmdba@cjc-db-11 CJC]$ ps -ef|grep dmserver|grep -v grep
dmdba     2759     1  0 14:34 pts/0    00:00:01 /dm8/dbms/bin/dmserver path=/dm8/data/CJC/dm.ini -noconsole
[dmdba@cjc-db-11 CJC]$ DmServiceCJC start

查询审计数据:

SQL> SELECT USERNAME,IP,OBJNAME,OPERATION,SQL_TEXT,DESCRIBTION FROM V$AUDITRECORDS;

行号     USERNAME   IP  OBJNAME OPERATION SQL_TEXT                DESCRIBTION                        
---------- ---------- --- ------- --------- ----------------------- -----------------------------------
1          SYSDBA     ::1         EXECUTE   SP_SET_ENABLE_AUDIT(1); 没有执行权限
2          SYSAUDITOR ::1         EXECUTE   SP_SET_ENABLE_AUDIT(1); 
3                                 SHUTDOWN  SHUTDOWN                SHUTDOWN
4                                 STARTUP   STARTUP                 Instance startup with nomral exit
5                                 SHUTDOWN  SHUTDOWN                SHUTDOWN
6                                 STARTUP   STARTUP                 Instance startup with nomral exit
7                                 STARTUP   STARTUP                 Instance startup with abnormal exit

7 rows got

已用时间: 1.459(毫秒). 执行号:501.

查看审计文件:

[dmdba@cjc-db-11 ~]$ cd /dm8/data/CJC/
[dmdba@cjc-db-11 CJC]$ ls -lrth AUDIT_CJC_*
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:09 AUDIT_CJC_F2C72DB0F2C72DB07EFBFF9F7841ABD7_2026-5-28-14-8-7.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:31 AUDIT_CJC_723011D9723011D99BFC6D667841ABD7_2026-5-28-14-9-8.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:34 AUDIT_CJC_BBBAAB74BBBAAB74A3D091087841ABD7_2026-5-28-14-31-23.log
-rw-r--r-- 1 dmdba dinstall 100M May 28 14:34 AUDIT_CJC_6453E61A6453E61A7C8201087841ABD7_2026-5-28-14-34-47.log

[dmdba@cjc-db-11 CJC]$ file AUDIT_CJC_*
AUDIT_CJC_6453E61A6453E61A7C8201087841ABD7_2026-5-28-14-34-47.log: data
AUDIT_CJC_723011D9723011D99BFC6D667841ABD7_2026-5-28-14-9-8.log:   data
AUDIT_CJC_BBBAAB74BBBAAB74A3D091087841ABD7_2026-5-28-14-31-23.log: data
AUDIT_CJC_F2C72DB0F2C72DB07EFBFF9F7841ABD7_2026-5-28-14-8-7.log:   data

2.语句级审计:

语句级审计的动作是全局的,不对应具体的数据库对象。

语法如下:

SP_AUDIT_STMT(
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

参数说明:
TYPE 语句级审计选项,即上表中的第一列
USERNAME 用户名,NULL 表示不限制
WHENEVER 审计时机,可选的取值为:

ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时

示例:审计表的创建、修改、删除和清空。

[dmdba@cjc-db-11 ~]$ disql SYSAUDITOR/tGP2hdeb_wRs:5238
SQL> SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');
DMSQL 过程已成功完成
已用时间: 6.882(毫秒). 执行号:501.

其中:TABLE 包含:
创建/修改/删除/清空基表操作
CREATE TABLE
ALTER TABLE
DROP TABLE
TRUNCATE TABLE

创建测试数据:

[dmdba@cjc-db-11 ~]$ sh conn_cjc.sh 

服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 36.283(ms)
disql V8
SQL> create table t0601(id int,name varchar(10));
操作已执行
已用时间: 14.152(毫秒). 执行号:601.
SQL> insert into t0601 values(1,'x'),(2,'y'),(3,'z');
影响行数 3

已用时间: 0.962(毫秒). 执行号:602.
SQL> commit;
操作已执行
已用时间: 1.567(毫秒). 执行号:603.
SQL> alter table t0601 add column age int;
操作已执行
已用时间: 74.814(毫秒). 执行号:604.
SQL> truncate table t0601;
操作已执行
已用时间: 11.530(毫秒). 执行号:605.
SQL> drop table t0601;
操作已执行
已用时间: 101.349(毫秒). 执行号:606.

查看审计数据:

SQL> SELECT USERNAME,IP,OPTIME,OBJNAME,OPERATION,SQL_TEXT FROM V$AUDITRECORDS;

行号     USERNAME   IP  OPTIME                     OBJNAME OPERATION      SQL_TEXT                                    
---------- ---------- --- -------------------------- ------- -------------- --------------------------------------------
1                         2026-05-28 15:57:58.000000         STARTUP        STARTUP
2                         2026-05-28 18:07:14.000000         SHUTDOWN       SHUTDOWN
3                         2026-06-01 10:47:57.000000         STARTUP        STARTUP
4          SYSAUDITOR ::1 2026-06-01 10:49:35.000000         EXECUTE        SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');
5          CJC        ::1 2026-06-01 10:56:37.000000         CREATE TABLE   create table t0601(id int,name varchar(10));
6          CJC        ::1 2026-06-01 10:57:12.000000         ALTER TABLE    alter table t0601 add column age int;
7          CJC        ::1 2026-06-01 10:57:25.000000         TRUNCATE TABLE truncate table t0601;
8          CJC        ::1 2026-06-01 10:57:29.000000         DROP TABLE     drop table t0601;

8 rows got

已用时间: 1.031(毫秒). 执行号:508.

例 2 对 SYSDBA 创建、修改、删除用户成功进行审计。

SQL> SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');
DMSQL 过程已成功完成
已用时间: 2.602(毫秒). 执行号:509.

其中:USER 包含:
创建/修改/删除用户操作
CREATE USER
ALTER USER
DROP USER

创建测试数据:

[dmdba@cjc-db-11 ~]$ sh conn.sh 

服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 3.210(ms)
disql V8
SQL> create user cjc0601 identified by "eMhUtbs6e_BSx";
操作已执行
已用时间: 14.503(毫秒). 执行号:701.

SQL> ALTER USER cjc0601 identified by "eMhUtbs6e_BSx123";
操作已执行
已用时间: 4.561(毫秒). 执行号:702.

SQL> drop user cjc0601;
操作已执行
已用时间: 69.393(毫秒). 执行号:703.

查看审计数据:不显示创建用户的口令信息

SQL> set pagesize 100
SQL> SELECT USERNAME,IP,OPTIME,OBJNAME,OPERATION,SQL_TEXT FROM V$AUDITRECORDS;

行号     USERNAME   IP  OPTIME                     OBJNAME OPERATION      SQL_TEXT                                      
---------- ---------- --- -------------------------- ------- -------------- ----------------------------------------------
1                         2026-05-28 15:57:58.000000         STARTUP        STARTUP
2                         2026-05-28 18:07:14.000000         SHUTDOWN       SHUTDOWN
3                         2026-06-01 10:47:57.000000         STARTUP        STARTUP
4          SYSAUDITOR ::1 2026-06-01 10:49:35.000000         EXECUTE        SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');
5          CJC        ::1 2026-06-01 10:56:37.000000         CREATE TABLE   create table t0601(id int,name varchar(10));
6          CJC        ::1 2026-06-01 10:57:12.000000         ALTER TABLE    alter table t0601 add column age int;
7          CJC        ::1 2026-06-01 10:57:25.000000         TRUNCATE TABLE truncate table t0601;
8          CJC        ::1 2026-06-01 10:57:29.000000         DROP TABLE     drop table t0601;
9          SYSAUDITOR ::1 2026-06-01 11:18:38.000000         EXECUTE        SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');
10         SYSDBA     ::1 2026-06-01 11:19:32.000000         CREATE USER    create user cjc0601 identified by ******;
11         SYSDBA     ::1 2026-06-01 11:20:06.000000         ALTER USER     ALTER USER cjc0601 identified by ******;
12         SYSDBA     ::1 2026-06-01 11:20:11.000000         DROP USER      drop user cjc0601;

12 rows got

已用时间: 0.617(毫秒). 执行号:511.

对用户 CJC 用户进行的表的修改和删除进行审计,不管失败和成功。

SQL> SP_AUDIT_STMT('UPDATE TABLE', 'CJC', 'ALL');
DMSQL 过程已成功完成
已用时间: 1.731(毫秒). 执行号:512.

SQL> SP_AUDIT_STMT('DELETE TABLE', 'CJC', 'ALL');
DMSQL 过程已成功完成
已用时间: 2.006(毫秒). 执行号:513.

创建测试数据:

[dmdba@cjc-db-11 ~]$ sh conn_cjc.sh 

服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 4.327(ms)
disql V8
SQL> create table t0601(id int,name varchar(5));
操作已执行
已用时间: 5.440(毫秒). 执行号:901.

SQL> insert into t0601 values(1,'x'),(2,'y'),(3,'z');
影响行数 3

已用时间: 0.731(毫秒). 执行号:902.
SQL> commit;
操作已执行
已用时间: 1.307(毫秒). 执行号:903.

SQL> update t0601 set id=300 where name='z';
影响行数 1

已用时间: 1.030(毫秒). 执行号:904.

SQL> commit;
操作已执行
已用时间: 1.226(毫秒). 执行号:905.

SQL> update t0601 set id=100 where name='a';
影响行数 0

已用时间: 1.115(毫秒). 执行号:906.

SQL> commit;
操作已执行
已用时间: 0.302(毫秒). 执行号:907.

SQL> delete from t0601 where id=2;
影响行数 1

已用时间: 1.100(毫秒). 执行号:908.
SQL> commit;    
操作已执行
已用时间: 1.290(毫秒). 执行号:909.

SQL> delete from t0601 where id=2000;
影响行数 0

已用时间: 1.016(毫秒). 执行号:910.

SQL> commit;
操作已执行
已用时间: 0.511(毫秒). 执行号:911.


SQL> delete from t0601 where abc=1;
delete from t0601 where abc=1;
第1 行附近出现错误[-2111]:无效的列名[abc].
已用时间: 0.512(毫秒). 执行号:0.

SQL> commit;
操作已执行
已用时间: 0.605(毫秒). 执行号:912

查看审计数据:执行失败的语句,也会被审计。

SQL> SELECT USERNAME,IP,OPTIME,OBJNAME,OPERATION,SQL_TEXT,SUCC_FLAG FROM V$AUDITRECORDS;
行号     USERNAME   IP  OPTIME                     OBJNAME OPERATION      SQL_TEXT                                       SUCC_FLAG
---------- ---------- --- -------------------------- ------- -------------- ---------------------------------------------- ---------
1                         2026-05-28 15:57:58.000000         STARTUP        STARTUP                                        Y
2                         2026-05-28 18:07:14.000000         SHUTDOWN       SHUTDOWN                                       Y
3                         2026-06-01 10:47:57.000000         STARTUP        STARTUP                                        Y
4          SYSAUDITOR ::1 2026-06-01 10:49:35.000000         EXECUTE        SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');         Y
5          CJC        ::1 2026-06-01 10:56:37.000000         CREATE TABLE   create table t0601(id int,name varchar(10));   Y
6          CJC        ::1 2026-06-01 10:57:12.000000         ALTER TABLE    alter table t0601 add column age int;          Y
7          CJC        ::1 2026-06-01 10:57:25.000000         TRUNCATE TABLE truncate table t0601;                          Y
8          CJC        ::1 2026-06-01 10:57:29.000000         DROP TABLE     drop table t0601;                              Y
9          SYSAUDITOR ::1 2026-06-01 11:18:38.000000         EXECUTE        SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL'); Y
10         SYSDBA     ::1 2026-06-01 11:19:32.000000         CREATE USER    create user cjc0601 identified by ******;      Y
11         SYSDBA     ::1 2026-06-01 11:20:06.000000         ALTER USER     ALTER USER cjc0601 identified by ******;       Y
12         SYSDBA     ::1 2026-06-01 11:20:11.000000         DROP USER      drop user cjc0601;                             Y
13         SYSAUDITOR ::1 2026-06-01 13:53:08.000000         EXECUTE        SP_AUDIT_STMT('UPDATE TABLE', 'CJC', 'ALL');   Y
14         SYSAUDITOR ::1 2026-06-01 13:53:13.000000         EXECUTE        SP_AUDIT_STMT('DELETE TABLE', 'CJC', 'ALL');   Y
15         CJC        ::1 2026-06-01 13:54:55.000000         CREATE TABLE   create table t0601(id int,name varcahr(5));    N
16         CJC        ::1 2026-06-01 13:55:06.000000         CREATE TABLE   create table t0601(id int,name varchar(5));    Y
17         CJC        ::1 2026-06-01 13:55:48.000000 t0601   UPDATE         update t0601 set id=300 where name='z';        Y
18         CJC        ::1 2026-06-01 13:56:04.000000 t0601   UPDATE         update t0601 set id=100 where name='a';        Y
19         CJC        ::1 2026-06-01 13:56:15.000000 t0601   DELETE         delete from t0601 where id=2;                  Y
20         CJC        ::1 2026-06-01 13:56:27.000000 t0601   DELETE         delete from t0601 where id=2000;               Y
21         CJC        ::1 2026-06-01 14:00:08.000000 t0601   DELETE         delete from t0601 where abc=1;                 N

21 rows got

已用时间: 0.725(毫秒). 执行号:517.

3.对象审计:

对象级审计发生在具体的对象上,需要指定模式名以及对象名。

image.png

语法如下:

VOID
SP_AUDIT_OBJECT (
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    SCHNAME VARCHAR (128),
    TVNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

VOID
SP_AUDIT_OBJECT (
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    SCHNAME VARCHAR (128),
    TVNAME VARCHAR (128),
    COLNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

参数说明:
TYPE 对象级审计选项,即上表中的第一列
USERNAME 用户名。为空串或 NULL 时表示不限定用户
SCHNAME 模式名。为空串或 NULL 时表示不限定模式
TVNAME 表名、视图名、存储过程名。不支持取值为空串或 NULL
COLNAME 列名。为空串或 NULL 时表示不限定列
WHENEVER 审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时

其中,对于 UPDATE 和 DELETE 操作,因为也需要做 SELECT 操作,所以只要设置审计 SELECT 操作时,UPDATE 和 DELETE 也会作为 SELECT 操作被审计。

添加审计,审计 CJC 用户,表 T0601 表NAME列 的 INSERT操作:

SQL> SP_AUDIT_OBJECT('INSERT', 'CJC','CJC','T0601', 'NAME', 'SUCCESSFUL');
DMSQL 过程已成功完成
已用时间: 3.141(毫秒). 执行号:519.

测试数据:

SQL> insert into cjc.t0601(id) values(100);
影响行数 1

已用时间: 0.772(毫秒). 执行号:915.
SQL> commit; 
操作已执行
已用时间: 1.302(毫秒). 执行号:916.
SQL> insert into cjc.t0601(name) values('a'),('b'),('c');
影响行数 3

已用时间: 0.898(毫秒). 执行号:917.
SQL> commit;
操作已执行
已用时间: 1.245(毫秒). 执行号:918.

查看审计数据:

SQL> SELECT USERNAME,IP,OPTIME,OBJNAME,OPERATION,SQL_TEXT,SUCC_FLAG FROM V$AUDITRECORDS;

行号     USERNAME   IP  OPTIME                     OBJNAME OPERATION      SQL_TEXT                                                              SUCC_FLAG
---------- ---------- --- -------------------------- ------- -------------- --------------------------------------------------------------------- ---------
1                         2026-05-28 15:57:58.000000         STARTUP        STARTUP                                                               Y
2                         2026-05-28 18:07:14.000000         SHUTDOWN       SHUTDOWN                                                              Y
3                         2026-06-01 10:47:57.000000         STARTUP        STARTUP                                                               Y
4          SYSAUDITOR ::1 2026-06-01 10:49:35.000000         EXECUTE        SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');                                Y
5          CJC        ::1 2026-06-01 10:56:37.000000         CREATE TABLE   create table t0601(id int,name varchar(10));                          Y
6          CJC        ::1 2026-06-01 10:57:12.000000         ALTER TABLE    alter table t0601 add column age int;                                 Y
7          CJC        ::1 2026-06-01 10:57:25.000000         TRUNCATE TABLE truncate table t0601;                                                 Y
8          CJC        ::1 2026-06-01 10:57:29.000000         DROP TABLE     drop table t0601;                                                     Y
9          SYSAUDITOR ::1 2026-06-01 11:18:38.000000         EXECUTE        SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');                        Y
10         SYSDBA     ::1 2026-06-01 11:19:32.000000         CREATE USER    create user cjc0601 identified by ******;                             Y
11         SYSDBA     ::1 2026-06-01 11:20:06.000000         ALTER USER     ALTER USER cjc0601 identified by ******;                              Y
12         SYSDBA     ::1 2026-06-01 11:20:11.000000         DROP USER      drop user cjc0601;                                                    Y
13         SYSAUDITOR ::1 2026-06-01 13:53:08.000000         EXECUTE        SP_AUDIT_STMT('UPDATE TABLE', 'CJC', 'ALL');                          Y
14         SYSAUDITOR ::1 2026-06-01 13:53:13.000000         EXECUTE        SP_AUDIT_STMT('DELETE TABLE', 'CJC', 'ALL');                          Y
15         CJC        ::1 2026-06-01 13:54:55.000000         CREATE TABLE   create table t0601(id int,name varcahr(5));                           N
16         CJC        ::1 2026-06-01 13:55:06.000000         CREATE TABLE   create table t0601(id int,name varchar(5));                           Y
17         CJC        ::1 2026-06-01 13:55:48.000000 t0601   UPDATE         update t0601 set id=300 where name='z';                               Y
18         CJC        ::1 2026-06-01 13:56:04.000000 t0601   UPDATE         update t0601 set id=100 where name='a';                               Y
19         CJC        ::1 2026-06-01 13:56:15.000000 t0601   DELETE         delete from t0601 where id=2;                                         Y
20         CJC        ::1 2026-06-01 13:56:27.000000 t0601   DELETE         delete from t0601 where id=2000;                                      Y
21         CJC        ::1 2026-06-01 14:00:08.000000 t0601   DELETE         delete from t0601 where abc=1;                                        N
22         SYSAUDITOR ::1 2026-06-01 14:09:12.000000         EXECUTE        SP_AUDIT_OBJECT('INSERT', 'CJC', 'T0601', 'NAME', 'SUCCESSFUL');      N
23         SYSAUDITOR ::1 2026-06-01 14:10:16.000000         EXECUTE        SP_AUDIT_OBJECT('INSERT', 'CJC','CJC','T0601', 'NAME', 'SUCCESSFUL'); Y
24         CJC        ::1 2026-06-01 14:11:36.000000 t0601   INSERT         insert into cjc.t0601(id) values(100);                                Y
25         CJC        ::1 2026-06-01 14:12:00.000000 t0601   INSERT         insert into cjc.t0601(name) values('a'),('b'),('c');                  Y

25 rows got

已用时间: 0.595(毫秒). 执行号:522.

七:审计相关表

审计表查询权限:

SYSDBA 用户没有查询权限:

SQL> select * from SYSAUDIT;
select * from SYSAUDIT;
[-5504]:没有[SYSAUDITOR.SYSAUDIT]对象的查询权限.
已用时间: 0.772(毫秒). 执行号:0.

需要使用 SYSAUDITOR 用户:

SQL> select * from SYSAUDIT;
未选定行

已用时间: 3.689(毫秒). 执行号:605.

当使用 DM 提供的审计机制进行了审计设置后,除语句序列审计设置外的审计设置信息都记录在数据字典表 SYSAUDITOR.SYSAUDIT 中

表1 SYSAUDITOR.SYSAUDIT表结构

序号	列	数据类型	说明
1	LEVEL	SMALLINT	审计级别
2	UID	INTEGER	用户 ID
3	TVPID	INTEGER	表/视图/触发器/存储过程函数 ID
4	COLID	SMALLINT	列 ID
5	TYPE	SMALLINT	审计类型
6	WHENEVER	SMALLINT	审计情况

测试数据如下:

SQL> select * from SYSAUDITOR.SYSAUDIT;

行号     LEVEL       UID         TVPID       COLID       TYPE        WHENEVER   
---------- ----------- ----------- ----------- ----------- ----------- -----------
1          1           -1          -1          -1          15          3
2          1           50331649    -1          -1          12          1
3          1           50331748    -1          -1          33          3
4          1           50331748    -1          -1          32          3
5          2           50331748    1049        1           50          1

已用时间: 0.658(毫秒). 执行号:527.

语句序列审计设置信息记录在数据字典表 SYSAUDITOR.SYSAUDITSQLSEQ 中,结构如下表所示:

表2 SYSAUDITOR. SYSAUDITSQLSEQ表结构

序号	列	数据类型	说明
1	NAME	VARCHAR(128)	语句序列审计规则名
2	SQLSEQ	INTEGER	语句序列中的 SQL 语句序号
3	SQLSTR	VARCHAR(8188)	语句序列中的 SQL 语句

审计类型用户可以查询上述数据字典表查看审计设置信息。
只要 DM 系统处于审计活动状态,系统按审计设置进行审计活动,并将审计信息写入审计文件。审计用户可通过查询 V$AUDIT_SPACE 动态视图获取审计文件存储空间的相关信息,动态视图的结构如下表所示:

表3 V$AUDIT_SPACE视图结构

序号	列	数据类型	说明
1	AUD_PATH	VARCHAR(256)	审计文件存放路径
2	AUDIT_FILE_FULL_MODE	INTEGER	剩余空间不足时的处理方式:1:审计文件创建失败,卡住; 2:审计文件创建失败,不再审计; 3:结合 1 和 2,先尝试删老审计文件,再创建审计文件失败则不再审计
3	AUDIT_MAX_FILE_SIZE	INTEGER	单个审计文件的最大大小,单位 MB
4	AUD_SPACE_LIMIT	INTEGER	审计文件总存储空间大小限制,单位 MB
5	AUD_SPACE_FREE	INTEGER	可用审计文件存储空间大小,单位 MB
6	AUDIT_IS_NORMAL	CHAR(1)	审计是否正常。Y:是;N:否,不再审计

审计用户可通过查询 V$AUDIT_FILE 动态视图获取审计文件存放路径下审计文件的具体信息,动态视图的结构如下表所示:

测试数据如下:

SQL> select * from V$AUDIT_SPACE;

行号     AUD_PATH   AUDIT_FILE_FULL_MODE AUDIT_MAX_FILE_SIZE AUD_SPACE_LIMIT AUD_SPACE_FREE
---------- ---------- -------------------- ------------------- --------------- --------------
1          /dm8/audit 1                    100                 8192            8191

已用时间: 0.460(毫秒). 执行号:529.

表4 V$AUDIT_FILE视图结构

序号	列	数据类型	说明
1	FILEPATH	VARCHAR(256)	审计文件的完整路径
2	SGUID	INTEGER	服务器的唯一标识,仅用于判断审计文件与库是否匹配
3	RT_FLAG	INTEGER	是否实时审计
4	HPC_SEQNO	INTEGER	DSC 节点号
5	VERSION	INTEGER	版本号
6	DBNAME	VARCHAR(128)	库名称
7	IS_FULL	INTEGER	审计文件是否已满。1:已满,0:未满。
8	BEGIN_TIME	DATETIME(6)	审计文件的创建时间
9	LENGTH	BIGINT	审计文件的长度,单位 BYTE

审计用户可通过查询 V$AUDITRECORDS 动态视图获取审计文件存放路径下审计文件中审计记录的具体信息,审计记录内容包括操作者的用户名、所在站点、所进行的操作、操作的对象、操作时间、当前审计条件等。动态视图的结构如下表所示:

测试数据如下:

SQL> select FILEPATH from V$AUDIT_FILE;

行号     FILEPATH                                                                    
---------- ----------------------------------------------------------------------------
1          /dm8/audit/AUDIT_CJC_F3021903F30219036919E90E7841ABD7_2026-5-28-15-57-58.log
2          /dm8/audit/AUDIT_CJC_02C0502102C0502155732BE07841ABD7_2026-6-1-10-47-57.log

已用时间: 0.878(毫秒). 执行号:532.
[dmdba@cjc-db-11 ~]$ ls -lrth /dm8/audit/
total 200M
-rw-r--r-- 1 dmdba dinstall 100M May 28 18:07 AUDIT_CJC_F3021903F30219036919E90E7841ABD7_2026-5-28-15-57-58.log
-rw-r--r-- 1 dmdba dinstall 100M Jun  1 14:12 AUDIT_CJC_02C0502102C0502155732BE07841ABD7_2026-6-1-10-47-57.log

表5 V$AUDITRECORDS 结构

序号	列	数据类型	说明
1	USERID	INTEGER	用户 ID
2	USERNAME	VARCHAR(128)	用户名
3	ROLEID	INTEGER	角色 ID。 没有具体角色的用户和 SQL 序列审计,没用角色信息。
4	ROLENAME	VARCHAR(128)	角色名。 没有具体角色的用户和 SQL 序列审计,没用角色信息。
5	IP	VARCHAR(64)	IP 地址
6	SCHID	INTEGER	模式 ID
7	SCHNAME	VARCHAR(128)	模式名
8	OBJID	INTEGER	对象 ID
9	OBJNAME	VARCHAR(128)	对象名
10	OPERATION	VARCHAR(128)	操作类型名
11	SUCC_FLAG	CHAR(1)	成功标记
12	SQL_TEXT	VARCHAR(8188)	SQL 文本
13	DESCRIPTION	VARCHAR(8188)	描述信息
14	OPTIME	DATETIME(6)	操作时间
15	MAC	VARCHAR(25)	操作对应的 MAC 地址
16	SEQNO	TINYINT	DMDSC 环境下表示生成审计记录的节点号,非 DMDSC 环境下始终 0
17	BIND_INFO	VARCHAR(8188)	绑定参数具体值,如果绑定参数是复杂类型,仅记录类型名,不记录具体值

其中审计记录中的 IP 地址的显示格式由 DM 的 INI 参数 AUDIT_IP_STYLE 进行控制,设置为 0 时,仅显示 IP;设置为 1 时,显示 IP 和主机名;缺省值为 0。AUDIT_IP_STYLE 为静态参数,可通过系统过程 SP_SET_PARA_VALUE 进行修改,但是修改需要重新启动 DM 数据库服务器才能生效。

测试数据如下:

SQL> SELECT USERNAME,IP,OPTIME,OBJNAME,OPERATION,SQL_TEXT,SUCC_FLAG FROM V$AUDITRECORDS;

行号     USERNAME   IP  OPTIME                     OBJNAME OPERATION      SQL_TEXT                                                              SUCC_FLAG
---------- ---------- --- -------------------------- ------- -------------- --------------------------------------------------------------------- ---------
1                         2026-05-28 15:57:58.000000         STARTUP        STARTUP                                                               Y
2                         2026-05-28 18:07:14.000000         SHUTDOWN       SHUTDOWN                                                              Y
3                         2026-06-01 10:47:57.000000         STARTUP        STARTUP                                                               Y
4          SYSAUDITOR ::1 2026-06-01 10:49:35.000000         EXECUTE        SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');                                Y
5          CJC        ::1 2026-06-01 10:56:37.000000         CREATE TABLE   create table t0601(id int,name varchar(10));                          Y
6          CJC        ::1 2026-06-01 10:57:12.000000         ALTER TABLE    alter table t0601 add column age int;                                 Y
7          CJC        ::1 2026-06-01 10:57:25.000000         TRUNCATE TABLE truncate table t0601;                                                 Y
8          CJC        ::1 2026-06-01 10:57:29.000000         DROP TABLE     drop table t0601;                                                     Y
9          SYSAUDITOR ::1 2026-06-01 11:18:38.000000         EXECUTE        SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');                        Y
10         SYSDBA     ::1 2026-06-01 11:19:32.000000         CREATE USER    create user cjc0601 identified by ******;                             Y
11         SYSDBA     ::1 2026-06-01 11:20:06.000000         ALTER USER     ALTER USER cjc0601 identified by ******;                              Y
12         SYSDBA     ::1 2026-06-01 11:20:11.000000         DROP USER      drop user cjc0601;                                                    Y
13         SYSAUDITOR ::1 2026-06-01 13:53:08.000000         EXECUTE        SP_AUDIT_STMT('UPDATE TABLE', 'CJC', 'ALL');                          Y
14         SYSAUDITOR ::1 2026-06-01 13:53:13.000000         EXECUTE        SP_AUDIT_STMT('DELETE TABLE', 'CJC', 'ALL');                          Y
15         CJC        ::1 2026-06-01 13:54:55.000000         CREATE TABLE   create table t0601(id int,name varcahr(5));                           N
16         CJC        ::1 2026-06-01 13:55:06.000000         CREATE TABLE   create table t0601(id int,name varchar(5));                           Y
17         CJC        ::1 2026-06-01 13:55:48.000000 t0601   UPDATE         update t0601 set id=300 where name='z';                               Y
18         CJC        ::1 2026-06-01 13:56:04.000000 t0601   UPDATE         update t0601 set id=100 where name='a';                               Y
19         CJC        ::1 2026-06-01 13:56:15.000000 t0601   DELETE         delete from t0601 where id=2;                                         Y
20         CJC        ::1 2026-06-01 13:56:27.000000 t0601   DELETE         delete from t0601 where id=2000;                                      Y
21         CJC        ::1 2026-06-01 14:00:08.000000 t0601   DELETE         delete from t0601 where abc=1;                                        N
22         SYSAUDITOR ::1 2026-06-01 14:09:12.000000         EXECUTE        SP_AUDIT_OBJECT('INSERT', 'CJC', 'T0601', 'NAME', 'SUCCESSFUL');      N
23         SYSAUDITOR ::1 2026-06-01 14:10:16.000000         EXECUTE        SP_AUDIT_OBJECT('INSERT', 'CJC','CJC','T0601', 'NAME', 'SUCCESSFUL'); Y
24         CJC        ::1 2026-06-01 14:11:36.000000 t0601   INSERT         insert into cjc.t0601(id) values(100);                                Y
25         CJC        ::1 2026-06-01 14:12:00.000000 t0601   INSERT         insert into cjc.t0601(name) values('a'),('b'),('c');                  Y

25 rows got

已用时间: 0.595(毫秒). 执行号:522.

参考:

https://eco.dameng.com/document/dm/zh-cn/pm/audit.html

欢迎关注我的公众号《IT小Chen

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论