启用或停止sqltrace:
打开sqltrace:
echo 'execute function task("set sql tracing on", 5000,"4k","high","global")'|dbaccess sysadmin
关闭sqltrace:
echo 'execute function task("SET SQL TRACING OFF")' |dbaccess sysadmin
只对某个用户打开sqltrace:
EXECUTE FUNCTION task("set sql tracing on", 1000, 1,"high","username");
EXECUTE FUNCTION task("set sql tracing on", "username");
打开某个数据库的sqltrace:
EXECUTE FUNCTION task("set sql tracing database", 'demodb');
打开某个会话的sqltrace:
EXECUTE FUNCTION task("set sql user tracing on", session_id);
清除用户模式下的用户追踪列表:
EXECUTE FUNCTION task(“set sql tracing user clear”);
EXECUTE FUNCTION task(“set sql tracing user remove”,”informix”);
清除被追踪的数据库:
EXECUTE FUNCTION task("set sql tracing database clear");
sqltrace结果查看:
sqltrace的结果被记录在sysmaster数据库中,涉及的表有三个:
syssqltrace
sqltrace_iter
sqltrace_hvar
也可以通过onstat -g his来查看跟踪的结果。
开启的代价:
根据IBM提供的建议是说开启sqltrace是有代价的,而且代价还是相对较大的,我估计是与oracle的AWR相比较而言。
在实际项目中,我发现开启之后貌似没有想象中那么大的性能损耗。
所以,我的建议是:
1、在项目上线前后的一段时间建议是开启的,DBA需要根据这个结果进行性能优化和调整;
2、在系统稳定运行之后,倒是可以不用开始也行。或你认为需要的时候打开也可以。