管理DDL审计
在虚谷数据库中,DDL审计主要是针对用户的一些高危操作进行记载,如修改表结构、删除数据库对象。可通过属性 REG_DDL 控制DDL命令审计的开启与关闭,开启/关闭操作立即生效,无需重启数据库服务。
开关DDL审计
开启/关闭DDL命令审计功能命令如下:
- 开启DDL命令审计功能。sql
SQL> SET REG_DDL ON;
- 关闭DDL命令审计功能。sql
SQL> SET REG_DDL OFF;
查看DDL审计
查看DDL命令审计功能状态命令如下:
通过会话变量查看当前DDL命令审计状态(T:DDL命令审计状态开启;F:DDL命令审计状态关闭(默认))。
sqlSQL> 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 ... | 删除安全策略 |
查询DDL审计结果
可通过查询COMMAND.LOG查看审计结果(COMMAND.LOG位于XuguLOG)。
sql[root@xugu XuguLOG]# cat COMMAND.LOG
可通过查询系统表SYS_COMMAND_LOG查看审计结果。
sqlSQL> SELECT * FROM SYS_COMMAND_LOG;
说明:
- 开启后,部分DDL记载在COMMAND.LOG中。
- 删除对象中的DDL语句执行成功后记载,失败时在ERROR.LOG中记载。
- 修改表中的DDL语句除truncate table执行成功记载外,其他均在执行之前记载。