1.运行数据库初始化程序DIP(Database Initialization Program)脚本DIPACC,创建存储DBQL表和其他性能数据。
//查看是否dbc下有宏acclogrule,确定是否已经安装。 sel * from dbc.tablesv where tablename ='acclogrule'
2.必须对dbc.dbqlaccessmacro宏具有执行权限才能启用或关闭日志记录。默认dbc和systemFE有权限。
grant exec on DBC.DBQLAccessMacro to Sysdba with grant option;
3.使用begin query logging语句创建日志记录规则,使用replace query logging语句用新的日志规则替换现有的日志规则,使用end query logging语句关闭日志记录。
BEGIN QUERY LOGGING WITH NONE ON tacticaluser1, tacticaluser2;
replace query logging 会将规则中原有已经开启的监控关闭。end query logging 会将规则表中整条记录删除。
begin query logging with lock=10 on all; //记录日志锁 sel * from dbc.qrylocklogxmlv; //查询日志锁信息,xml格式保存 sel * from dbc.dbqlrulesv; //查询已配置的规则
4.刷新DBQL或TDWM缓存到磁盘
DBQL根据指定的规则将查询信息收集到数据缓存中,定期刷新缓存将信息写入dbql字典表。DBSControl 中参数DBQLFlushRate,可以指定多长时间收集一次,默认10分钟。
使用如下语句可将缓存信息刷新到磁盘上,立即能在数据库中查询到刚刚发生的查询。
FLUSH QUERY LOGGING WITH ALL; --刷DBQL和TDWM FLUSH QUERY LOGGING WITH ALLDBQL; --刷DBQL FLUSH QUERY LOGGING WITH ALLTDWM; --刷TDWM
DBQL:Database Query Log
TDWM:Teradata Database Workload Management
DBQL使用技巧:
1.replace可以无缝收集。避免使用end+begin。replace view道理类似,使用drop+create可能会造成访问失败,中间毕竟有间隔。
2.如果某些用户提交sql质量较高或者sql比较简单,没有必要监控,则这些用户无需开启dbql。先on all后 使用with none on这些用户。
3.先设定通用规则使用on all,然后再单独为特殊用户设定特殊收集。