(
select a.*,row_number() over(partition by 分组字段 order by 排序字段) rn from table
) b where rn = 1
上边的可以取一条出来,主要看你的分组字段和排序字段的设置
你是什么平台的DB2,AIX?我提供AIX上查找记录的思路:AIX上DB2 V9.5在db2diag.log日志中有记录参数调整,如:
2012-07-27-02.07.00.181980+480 I1452A307 LEVEL: Event
PID : 5046486 TID : 1 PROC : db2flacc
......
EDUID : 1
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:30
CHANGE : CFG DBM: "Sysadm_group" From: "" To: "dbadm"
当然如果要知道是谁修改了,首先在主机上必须拥有dbadm权限的用户才能修改数据库参数
那你可以根据数据库记录的参数变更时间,查找是哪个用户su到了拥有dbadm权限用户的用户
如果dbadm用户可以直接远程登录,该方法不适用。
more /var/adm/sulog
sulog记录了是谁su到dbadm
more /etc/security/lastlog
lastlog记录了用户最后登录的时间和终端地址
还有,知道了是哪个用户做的 *** 作后,可以查看该用户的history文件查看具体的命令
su - 用户
more .sh_history
上述思路希望对你查记录有帮助
db2diag.log没有两天前的记录了,应该是被删除了,默认DB2数据库不会自动清理db2diag.log日志。清理后没办法找回了,不过与db2diag.log一起的还有一个文件 <instance_name>.nfy也记录了一些日志
db2diag.log文件权限在unix上是666,好像有权登录系统的用户都可以修改,要查谁清理了比较麻烦,因为只有 *** 作系统会记录用户这种行为。
如果只是定期发生的行为,可以看看是不是有定时任务进行了备份清理
如果是偶然发生的,你可以这么做(假如是unix系统):
cat /etc/passwd|awk -F: '{print $1,$6}'|while read user home
do
cd $home
echo $user history include db2diag
cat .sh_history |grep -i db2diag
done
如果有人进行了清理,就会有类似 rm db2diag.log 或 >db2diag.log这样的命令,但具体是什么时候清理的,用户的history文件不会记录。
为了安全审计,一般借助第三方工具,记录用户在 *** 作系统上的所有行为(包括时间)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)