请大家帮我把幕后黑手揪出来

时间:2022-09-15 22:12:41
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T
请问有没有办法查到是谁干的??
公司用UNIX+LINUX操作系统,谢谢大家!

16 个解决方案

#1


不知道楼主有没有做归档处理,如果没有,希望很少。
如果有,用LogMiner分析日志文件。
http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml

#2


看有没有归档了,如果联机日志切换了,logminer也帮不了你了

#3


引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家!


如果开启了audit trail的话可以试试找找是那个用户做的
SQL> show parameter audit_trail
看看你的结果
如果结果为none,如下,就没有办法了。
audit_trail                          string      NONE

#4


引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家!


还有一个可能,就是你自己没有commit;

#5


呵呵  楼主运气真差

#6


引用 1 楼 welyngj 的回复:
不知道楼主有没有做归档处理,如果没有,希望很少。 
如果有,用LogMiner分析日志文件。 
http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml

学习了...关注后台黑手。。。

#7


最多能查出是哪个数据库用户,不能查出是哪个人

#8


谢谢大家的热心帮助先

#9


引用 1 楼 welyngj 的回复:
不知道楼主有没有做归档处理,如果没有,希望很少。 
如果有,用LogMiner分析日志文件。 
http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml


不好意思,我不是DBA,所以没办法看到日志文件。
而且不知道公司有没有装LogMiner.
我和DBA不熟...已经找他查过了,不过他说日志太大,很难找出是哪个用户删除的.

我用
select * from all_objects where object_name=?
看到表最后DDL的时间是7月3号凌晨4点多

PS,我竟然没有权限看 V$sqlarea

#10


引用 4 楼 inthirties 的回复:
引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家! 



还有一个可能,就是你自己没有commit;


commit是肯定有的,我用ETL工具把数据倒入数据库,整个job已经完成,我开另外一个session看到数据已经倒入

#11


oracle 哪个版的。

undo 里的数据要是还在。

可以用( as of timestamp sysdate-10/24 ) 查 10小时以前的数据。

select * from tb as of timestamp sysdate-10/24;

如果能查到就 insert into tb select * from tb as of timestamp sysdate-10/24;

如果是 truncate 就查不到了。

#12


如果开启了audit trail的话可以试试找找是那个用户做的 
SQL> show parameter audit_trail 
看看你的结果 
如果结果为none,如下,就没有办法了。 
audit_trail                          string      NONE

#13


如果是归档模式,用logminer可以查到执行操作的机器名,
很容易的,让你们DBA给查查

logminer是oracle的组件,不需要额外装的

#14


引用 3 楼 inthirties 的回复:
引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家! 



如果开启了audit trail的话可以试试找找是那个用户做的 
SQL> show parameter audit_trail 
看看你的结果 
如果结果为n…


引用 12 楼 cab1225 的回复:
如果开启了audit trail的话可以试试找找是那个用户做的 
SQL> show parameter audit_trail 
看看你的结果 
如果结果为none,如下,就没有办法了。 
audit_trail                          string      NONE


很奇怪csdn居然不允许连续回复3次,可能是防止灌水吧。
用了show parameter audit_trail 
结果是
audit_trail                          string      NONE

#15


引用 11 楼 asdf_ndsc 的回复:
oracle 哪个版的。 

undo 里的数据要是还在。 

可以用( as of timestamp sysdate-10/24 ) 查 10小时以前的数据。 

select * from tb as of timestamp sysdate-10/24; 

如果能查到就 insert into tb select * from tb as of timestamp sysdate-10/24; 

如果是 truncate 就查不到了。

版本是10g
用了您的方法,显示
ora-01466 unable to read data - table definition has changed

#16


引用 13 楼 lpc19598188 的回复:
如果是归档模式,用logminer可以查到执行操作的机器名, 
很容易的,让你们DBA给查查 

logminer是oracle的组件,不需要额外装的

select * from v$logmnr_contents显示
 ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from v$logmnr_contents
估计还没选取日志文件吧?
我找过上级了,他说DBA比较忙,不会帮了...
我是想,我自己有没有办法查到呢?
无论如何,还是谢谢你们的方法

#1


不知道楼主有没有做归档处理,如果没有,希望很少。
如果有,用LogMiner分析日志文件。
http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml

#2


看有没有归档了,如果联机日志切换了,logminer也帮不了你了

#3


引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家!


如果开启了audit trail的话可以试试找找是那个用户做的
SQL> show parameter audit_trail
看看你的结果
如果结果为none,如下,就没有办法了。
audit_trail                          string      NONE

#4


引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家!


还有一个可能,就是你自己没有commit;

#5


呵呵  楼主运气真差

#6


引用 1 楼 welyngj 的回复:
不知道楼主有没有做归档处理,如果没有,希望很少。 
如果有,用LogMiner分析日志文件。 
http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml

学习了...关注后台黑手。。。

#7


最多能查出是哪个数据库用户,不能查出是哪个人

#8


谢谢大家的热心帮助先

#9


引用 1 楼 welyngj 的回复:
不知道楼主有没有做归档处理,如果没有,希望很少。 
如果有,用LogMiner分析日志文件。 
http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml


不好意思,我不是DBA,所以没办法看到日志文件。
而且不知道公司有没有装LogMiner.
我和DBA不熟...已经找他查过了,不过他说日志太大,很难找出是哪个用户删除的.

我用
select * from all_objects where object_name=?
看到表最后DDL的时间是7月3号凌晨4点多

PS,我竟然没有权限看 V$sqlarea

#10


引用 4 楼 inthirties 的回复:
引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家! 



还有一个可能,就是你自己没有commit;


commit是肯定有的,我用ETL工具把数据倒入数据库,整个job已经完成,我开另外一个session看到数据已经倒入

#11


oracle 哪个版的。

undo 里的数据要是还在。

可以用( as of timestamp sysdate-10/24 ) 查 10小时以前的数据。

select * from tb as of timestamp sysdate-10/24;

如果能查到就 insert into tb select * from tb as of timestamp sysdate-10/24;

如果是 truncate 就查不到了。

#12


如果开启了audit trail的话可以试试找找是那个用户做的 
SQL> show parameter audit_trail 
看看你的结果 
如果结果为none,如下,就没有办法了。 
audit_trail                          string      NONE

#13


如果是归档模式,用logminer可以查到执行操作的机器名,
很容易的,让你们DBA给查查

logminer是oracle的组件,不需要额外装的

#14


引用 3 楼 inthirties 的回复:
引用楼主 Shikoy 的帖子:
公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。 
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T 
请问有没有办法查到是谁干的?? 
公司用UNIX+LINUX操作系统,谢谢大家! 



如果开启了audit trail的话可以试试找找是那个用户做的 
SQL> show parameter audit_trail 
看看你的结果 
如果结果为n…


引用 12 楼 cab1225 的回复:
如果开启了audit trail的话可以试试找找是那个用户做的 
SQL> show parameter audit_trail 
看看你的结果 
如果结果为none,如下,就没有办法了。 
audit_trail                          string      NONE


很奇怪csdn居然不允许连续回复3次,可能是防止灌水吧。
用了show parameter audit_trail 
结果是
audit_trail                          string      NONE

#15


引用 11 楼 asdf_ndsc 的回复:
oracle 哪个版的。 

undo 里的数据要是还在。 

可以用( as of timestamp sysdate-10/24 ) 查 10小时以前的数据。 

select * from tb as of timestamp sysdate-10/24; 

如果能查到就 insert into tb select * from tb as of timestamp sysdate-10/24; 

如果是 truncate 就查不到了。

版本是10g
用了您的方法,显示
ora-01466 unable to read data - table definition has changed

#16


引用 13 楼 lpc19598188 的回复:
如果是归档模式,用logminer可以查到执行操作的机器名, 
很容易的,让你们DBA给查查 

logminer是oracle的组件,不需要额外装的

select * from v$logmnr_contents显示
 ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from v$logmnr_contents
估计还没选取日志文件吧?
我找过上级了,他说DBA比较忙,不会帮了...
我是想,我自己有没有办法查到呢?
无论如何,还是谢谢你们的方法