DB2数据库中存在重复记录,只计算其中一条。

DB2数据库中存在重复记录,只计算其中一条。,第1张

select * from

(

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文件不会记录。

为了安全审计,一般借助第三方工具,记录用户在 *** 作系统上的所有行为(包括时间)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10031232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存