getAuditLog

语法

getAuditLog([userName], [startTime], [endTime], [opType])

详情

查询用户 userName 在 startTime 到 endTime 这段时间内完成的,类型为 opType 的 DDL 操作记录。

返回一个表,其结构如下:

列名 类型 含义
userId STRING 执行操作的用户名称
startTime NANOTIMESTAMP 事务的开始时间
endTime NANOTIMESTAMP 事务的结束时间
dbName STRING 数据库名
tbName STRING 表名
opType STRING 操作类型
opDetail STRING 操作细节说明
tid LONG 事务ID
cid LONG commit ID
remoteIp IPADDR 提交该操作的客户端 IP
remotePort INT 提交该操作的客户端端口

opType 的所有取值及其对应的 opDetail 示例如下:

opType

opDetail

Description

CREATE_DB 创建数据库
DROP_DB 删除数据库
CREATE_TABLE 创建维度表
CREATE_PARTITIONED_TABLE 创建分区表
DROP_TABLE 删除表
DROP_PARTITION deletedPartitions=xxx 删除分区
RENAME_TABLE tableName=[xxx], newTableName=[xxx] 给表重命名
SQL_DELETE script=[xxx], deletedRows=xxx SQL 语句 delete 数据
SQL_UPDATE script=[xxx], updatedRows=xxx SQL 语句 update 数据
UPSERT insertedRows=xxx, updatedRows=xxx 调用函数 upsert! 更新数据
ADD_COLUMN colName=[xxx], colType=[xxx] 增加列
SET_COLUMN_COMMENT colName=[xxx], colComment=[xxx] 给列添加注释
TRUNCATE_TABLE 删除表所有数据并保留表结构
RENAME_COLUMN colName=[xxx], newColName=[xxx] 给列重命名
REPLACE_COLUMN colName=[xxx], colType=[xxx], newColType=[xxx] 调用函数 replaceColumn! 替换表中的列
DROP_COLUMN columnName=[xxx] 删除列
ADD_RANGE_PARTITION 调用 addRangePartitions 增加 RANGE 类型分区
ADD_VALUE_PARTITION 调用 addValuePartitions 增加 VALUE 类型分区
APPEND appendedRows=xxx 向 atomic='TRANS’ 的库表或向 atomic='CHUNKS’ 的库里的维度表中写入数据
APPEND_CHUNK_GRANULARITY appendedRows=xxx 向 atomic='CHUNKS’ 的库里的分区表中写入数据

参数

userName 字符串标量或向量,表示要查询的用户。默认为 NULL,表示查询所有用户的 DDL 操作日志。

startTime 整数标量或者时间标量,时间标量支持DATE, MONTH, DATETIME, TIMESTAMP, DATEHOUR, NANOTIMESTAMP 类型。表示查询的起始时间点。默认值为 1970.01.01 。

endTime 整数标量或者时间标量,时间标量支持DATE, MONTH, DATETIME, TIMESTAMP, DATEHOUR, NANOTIMESTAMP 类型。表示查询的结束时间点。默认值为空,表示结束时间为当前时间。endTime 必须大于 startTime。

opType 字符串标量或向量,表示查询的操作类型。默认为 NULL,表示查询所有 DDL 操作类型。

注: startTime 和 endTime 规定的是 DDL 操作结束的时间范围。

例子

// 用户 admin 进行一系列 DDL 操作
login("admin","123456")
n = 3
id = rand(`st0001`st0002`st0003`st0004`st0005, n)
sym = rand(`A`B, n)
tradeDate = take(2022.01.01..2022.01.10, 3)
val = 1..n
dummyTb = table(id, sym,tradeDate, val)

dbPath = "dfs://auditTest"
if(existsDatabase(dbPath)){dropDatabase(dbPath)}
db = database(directory=dbPath, partitionType=VALUE, partitionScheme=2022.01.01..2022.01.05, engine='TSDB')
pt = createPartitionedTable(dbHandle=db, table=dummyTb, tableName="snap", partitionColumns=`TradeDate, sortColumns=`id`tradeDate, keepDuplicates=ALL)
pt.append!(dummyTb)

renameTable(db, `snap, `snap_2)

// 查询 DDL 操作记录
getAuditLog()

返回:

userName startTime endTime dbName tbName opType opDetail tid cid remoteIp
admin 2024.03.26 14:40:43.659196080 2024.03.26 14:40:43.676082419 dfs://auditTest CREATE_DB 1 1 192.168.0.140
admin 2024.03.26 14:40:43.676154581 2024.03.26 14:40:43.687319577 dfs://auditTest snap CREATE_PARTITIONED_TABLE 2 2 192.168.0.140
admin 2024.03.26 14:40:45.135000207 2024.03.26 14:40:45.160530442 dfs://auditTest snap RENAME_TABLE tableName=[snap], newTableName=[snap_2] 4 4 192.168.0.14