COMMAND.LOG
📄字数 1.2K
👁️阅读量 加载中...
COMMAND.LOG是虚谷数据库提供的命令日志文件,用于记录系统中所有执行过的SQL语句,包括SELECT、INSERT、UPDATE、DELETE、DDL操作(如CREATE、DROP、ALTER)等。该日志提供了详尽的用户操作轨迹,是支持问题重现、性能分析、审计追踪等任务的重要工具。
一、 启用和禁用命令记载
虚谷数据库提供两个系统参数来启用和禁用命令记载的行为,分别是reg_command和reg_ddl,两者均默认关闭。前者开启时,用于记载所有SQL命令;后者则只记载DDL命令,均支持节点级别的控制粒度(不指定则默认所有集群节点)。语法如下:
sql
-- 启用或禁用SQL命令记载
SET reg_command TO true|false [ON ALL NODE|ON LOCAL NODE|ON NODE node_id];
-- 启用或禁用DDL命令记载
SET reg_ddl TO true|false [ON ALL NODE|ON LOCAL NODE|ON NODE node_id];
ALL NODE
:表示开启所有集群节点的SQL命令记载LOCAL NODE
:表示开启当前节点的SQL命令记载NODE node_id
:表示开启指定节点id的SQL命令记载
示例如下:
- 开启所有节点的SQL命令记载
sql
SQL> SET reg_command TO true;
- 开启某个节点的DDL命令记载,以开启2号节点为例
sql
SQL> SET reg_ddl TO true ON NODE 2;
提示
单个COMMAND.LOG文件大小可通过系统参数errlog_size控制,默认大小为100MB。当日志文件大小达到指定阈值时,系统会保存当前日志文件,追加时间为文件名后缀,重命名为COMMAND_yy_mm_dd_hh_mi_ss.LOG进行归档,并生成一个新的COMMAND.LOG文件
二、 COMMAND日志格式
记载的一行COMMAND日志如下:
sql
1 1 SYSDBA 4 127.0.0.1 2025-07-03 16:52:56 execute procedure_p1(?,?) {PN=2,GN=1 <1,S,'abc'><2,S,NULL>}
对日志进行拆解,其表示的含义如下:
1
:表示机器节点号1
:表示数据库idSYSDBA
:表示用户名4
:表示连接id127.0.0.1
:表示连接的ip信息2025-07-03 16:52:56
:表示执行命令的时间execute procedure_p1(?,?)
:表示执行的sql命令{PN=2,GN=1 <1,S,'abc'><2,S,NULL>}
:表示sql执行的命令参数。
提示
sql执行的命令参数通常出现在带参数的PREPARE
语句、存储过程等SQL中。其记载格式为:{PN=%参数个数,GN=%参数组数 <参数编号,参数类型,值> ...}
三、 使用场景
- 场景一:查找历史SQL。如查询开发过程中调试过的复杂sql语句
- 场景二:误操作排查。如执行了错误的DELETE或UPDATE,可通过日志回溯执行轨迹
- 场景三:用于分析频繁被执行的SQL语句