Skip to content

DDL审计

在虚谷数据库中,DDL审计主要是针对用户的一些高危操作进行记载,如修改表结构、删除数据库对象。可通过属性 REG_DDL 控制DDL命令审计的开启与关闭,开启/关闭操作立即生效,无需重启数据库服务。

开启/关闭DDL命令审计功能命令如下:

  • 开启DDL命令审计功能。
    sql
    SQL> SET REG_DDL ON;
  • 关闭DDL命令审计功能。
    sql
    SQL> SET REG_DDL OFF;

查看DDL命令审计功能状态命令如下:

  • 通过会话变量查看当前DDL命令审计状态(T:DDL命令审计状态开启;F:DDL命令审计状态关闭(默认))。

    sql
    SQL> SHOW REG_DDL;
    
    REG_DDL |
    ------------------------------------------------------------------------------
    F |
  • 通过数据库配置文件/SETUP/xugu.ini查看当前DDL命令审计状态(以Linux系统为例,true:DDL命令审计状态开启;false:DDL命令审计状态关闭)。

    sql
    [root@xugu SETUP]#cat xugu.ini | grep -i "REG_DDL"
      reg_ddl = false;  是否记录DDL命令?

DDL审计记载项

审计选项说明
ALTER TABLE ... ADD COLUMN ...在表上增加新列
ALTER TABLE ... DROP COLUMN ...删除表上已有列
ALTER TABLE ... MODIFY COLUMN ...修改表上已有列
ALTER TABLE ... RENAME COLUMN ... TO ... 重命名列名
ALTER TABLE ... ALTER COLUMN ... TYPE修改表中列的数据类型
ALTER TABLE ... OWNER TO ...修改表对象属主
ALTER TABLE ... ENABLE CONSTRAINT ...启用表约束
ALTER TABLE ... DISABLE CONSTRAINT ...禁用表约束
ALTER TABLE ... ADD PARTITON ...在分区表上增加新分区
ALTER TABLE ... DROP PARTITION ...删除分区表上已有分区
ALTER TABLE ... TRUNCATE PARTITION ...清空分区表上指定分区数据
ALTER TABLE ... SET ONLINE设置表状态为在线
ALTER TABLE ... SET OFFLINE设置表状态为离线
ALTER TABLE ... SET PARTITION ... ONLINE设置分区状态为在线
ALTER TABLE ... SET PARTITION ... OFFLINE设置分区状态为离线
TRUNCATE TABLE ...清空表数据
ALTER TABLE ... SET SLOW MODIFY ON/OFF开启/关闭缓变表
ALTER TABLE ... REBUILD HEAP整理表
ALTER TABLE ... RENAME TO ...重命名表
ALTER TABLE... DISABLE INSERT取消表上的插入许可
ALTER TABLE... DISABLE UPDATE取消表上的更新许可
ALTER TABLE... DISABLE DELETE取消表上的删除许可
ALTER TABLE... ENABLE INSERT设置表上的插入许可
ALTER TABLE... ENABLE UPDATE设置表上的更新许可
ALTER TABLE... ENABLE DELETE设置表上的删除许可
DROP DATABASE ...删除数据库对象
DROP SCHEMA ...删除数据库模式对象
DROP TABLE ...删除数据库表对象
DROP SEQUENCE ...删除数据库序列值对象
DROP VIEW ...删除数据库视图对象
DROP PROCEDURE ...删除数据库存储过程对象
DROP FUNCTION ...删除数据库存储函数对象
DROP INDEX ...删除数据库索引对象
DROP TRIGGER ...删除数据库触发器对象
DROP TYPE ...删除数据库自定义类型对象
DROP USER ...删除数据库用户对象
DROP ROLE ...删除数据库角色对象
DROP DB_LINK ...删除数据库链接对象
DROP SYNONYM ...删除同义词
DROP PACKAGE ...删除用户包
DROP POLICY ...删除安全策略

审计结果查询

  • 可通过查询COMMAND.LOG查看审计结果(COMMAND.LOG位于XuguLOG)。

    sql
    [root@xugu XuguLOG]# cat COMMAND.LOG
  • 可通过查询系统表SYS_COMMAND_LOG查看审计结果。

    sql
    SQL> SELECT * FROM SYS_COMMAND_LOG;

说明:

  • 开启后,部分DDL记载在COMMAND.LOG中。
  • 删除对象中的DDL语句执行成功后记载,失败时在ERROR.LOG中记载。
  • 修改表中的DDL语句除truncate table执行成功记载外,其他均在执行之前记载。