首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库的 SQL 审计信息淘汰机制
更新时间:2024-08-29 05:46
本文主要介绍 SQL 审计信息的淘汰机制。
适用版本
OceanBase 数据库 V2.2.30 版本
sql_audit 介绍
视图 gv$sql_audit 用于记录 OceanBase 数据库的 SQL 审计信息,SQL 审计信息按照 server 和 tenant 单独记录。当审计记录数量将要达到限制时,需要进行队列的写入覆盖和淘汰动作。淘汰最早进入淘汰队列的记录,释放的空间可以允许后续新的审计记录进入。
可以用以下语句查询是否开启 SQL 审计功能。该配置项默认为 True,表示开启 SQL 审计。有关该配置项的详细信息,请参见《OceanBase 数据库 参考指南》的 配置项 章节。
obclient> SHOW PARAMETERS LIKE '%enable_sql_audit%'\G
淘汰有两个触发条件:
内存占用比例
数据条数的限制
淘汰的规则是先按照内存占用比例进行淘汰,淘汰后,如果记录数还是很多,再按照记录数进行淘汰。
内存比例限制
当内存使用达到 avail_mem_limit * 0.8 时,开始进行 SQL 审计信息的淘汰,遵循先进先出原则。
说明
avail_mem_limit 的计算方法为 avail_mem_limit= tenant_memory*ob_sql_audit_percentage。
其中,tenant_memory 表示租户可用内存,ob_sql_audit_percentage 用于设置 SQL Audit 内存上限占当前租户内存的百分比,默认为 3,表示占比 3%,取值范围为 [0, 80]。有关该变量的详细信息,请参见《OceanBase 数据库 参考指南》的 系统变量 章节。
通过以下 SQL查看内存占比限制 sql_audit_memory_limit。
obclient> SHOW PARAMETERS LIKE 'sql_audit_memory_limit';
通过以下 SQL 查询租户内存 tenant_memory。
obclient> SELECT * FROM __all_unit_config where unit_config_id = 1002;
数据条数限制
当数据条数达到 900 万时开始淘汰,下限为 800 万。
查看 SQL 审计信息的淘汰日志
可以在日志中搜索 sql audit evict record start 关键字,检查 OceanBase 数据库的 SQL 审计信息的淘汰日志。
[root@hostname /]# cd /home/admin/oceanbase/log
[root@hostname log]# cat observer.log | grep "sql audit evict record start"