oracle数据库中有一张表的数据被修改了,可能是某个定时器在操作,非人为操作,但是目前找不到修改表数据的地方在哪,求解决办法!
那就直接全局搜索你的表名或者实体名,看程序中或者数据库中哪里有涉及到修改语句
该回答引用ChatGPT
在这种情况下,可以尝试使用 Oracle 数据库提供的审计功能来查找谁、何时、如何修改了表数据。具体步骤如下:
1、开启审计功能。使用系统管理员账号登录数据库,执行以下 SQL 语句:
AUDIT ALL BY ACCESS;
这将开启所有对象的审计功能,即对所有表、视图、序列等对象的访问都会被审计记录下来。
2、查找审计日志。执行以下 SQL 语句,查找目标表在指定时间范围内的审计记录:
SELECT os_username, username, obj_name, action_name, timestamp
FROM dba_audit_trail
WHERE obj_name = '目标表名'
AND action_name = 'UPDATE'
AND timestamp BETWEEN TO_DATE('开始时间', 'YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('结束时间', 'YYYY-MM-DD HH24:MI:SS')
ORDER BY timestamp;
其中,os_username 为执行操作的操作系统用户名,username 为执行操作的数据库用户名,obj_name 为被修改的表名,action_name 为执行的操作类型,timestamp 为操作的时间戳。
如果找到了审计记录,就可以根据操作系统用户名和数据库用户名来确定是哪个用户执行了修改操作。如果没有找到审计记录,可能需要重新检查定时器等非人为操作的代码,或者考虑是否存在恶意攻击等问题
不知道你这个问题是否已经解决, 如果还没有解决的话: