Ⅰ 数据库日志中可以查看插入删除更新等操作的记录吗
使用Log Explorer查看和恢复数据
Log Explorer 4.1.可用于sql Server2005的日志查看工具
下载地址:
http://download.csdn.net/source/620271
使用方法:
打开Log Explorer -> Attach Log File -> 选择SQL Server服务器和登陆方式 -> Connect ->
在Database Name中选择数据库 -> Attach-> 左面对话框中Browse-> View Log-> 就可以看到log记录了
想恢复的话: 右键Log记录 Undo Transation-> 选择保存文件名和路径-> 然后打开该文件到查询分析器里执行
T-sql代码就可以了
例如 如果Log是delete table where ...的话,生成的文件代码就是insert table ....
然后将此insert table的代码放到查询分析器里执行.就可以恢复数据.
----------------------------------------------------------------------
--如何恢复被delete/update的数据
----------------------------------------------------------------------
1连接到被删除数据库的Db
打开log explorer 选择 "file"->"attach log file"->选择服务器和登陆方式->"connect"->选择"数据库"->"attach"
2 查看日志
在左面操作项目的对话框中选择"browse"项目->"view log"->就可以看到当前的Log记录了
3 恢复数据
右键某一条log记录,选择"undo transation"->"选择保存文件名和路径"->然后打开该文件到查询分析器里执行
T-sql代码就可以了
例如: 如果log是delete table where ...的话,生成的文件代码就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢复被drop table和truncate table后的数据
----------------------------------------------------------------------
1 连接到被删除数据库的Db
操作同上
2 恢复方法
1) 选择"salvaage dropped/truncate"菜单,在右边的对话框中选择表名,和droped/trucated的日期,
File Name中选择生成insert语句脚步的存放位置,condition选择是droped还是truncated,
最后点击"create" 就会生成insert语句,把生成的语句到查询分析器里面执行一下就可以了
2) 选择"ViewDDL Commands"菜单->选"truncate table" 操作项->点击"Salvage"->生成语句->查询分析器里执行
----------------------------------------------------------------------
--log explorer使用的几个问题
----------------------------------------------------------------------
1) 对数据库做完全/差异/日志备份
备份时如果选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,提示No log recorders found that match the filter,would you like to view unfiltered data 选择yes 就看不到刚才的记录了
如果不选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,就能看到原来的日志并做恢复
2) 修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复
3) 然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.
4) 不要用SQL的备份功能备份,搞不好你的日志就破坏了.
正确的备份方法是:
停止SQL服务,复制数据文件及日志文件进行文件备份.
然后启动SQL服务,用log explorer恢复数据
Ⅱ 如何查询 oracle 表中被删除的记录情况
可以定义一个触发器,来把删除的记录写到一个日志表中,方法如下。
测试方法:
创建原始表,插入数据:
createtabletest
(idint,
namevarchar2(10));
insertintotestvalues(1,'张三');
insertintotestvalues(2,'李四');
commit;
创建日志表:
createtabletest_log
(idint,
namevarchar2(10),
deletedatedate);
创建触发器:
createorreplacetriggert_delete_test
beforedeleteontest
foreachrow
begin
insertintotest_log(id,name,deletedate)
values(:old.id,:old.name,sysdate);
end;
执行删除操作:
deletefromtestwhereid=2;
commit;
检测test表,及test_log表:
所以,可以证明,删除成功,并且将删除的数据写入到了日志表中。
Ⅲ 如何从数据库的完整日志模式还原误删除的数据
从日志回复数据库
:自己一步一步按照说明试着看
--创建测试数据库
create
database
db
go
--对数据库进行备份
backup
database
db
to
disk='c:\db.bak'
with
format
go
--创建测试表
create
table
db.dbo.tb_test(id
int)
--延时1秒钟,再进行后面的操作(这是由于sql
server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
waitfor
delay
'00:00:01'
go
--假设我们现在误操作删除了
db.dbo.tb_test
这个表
drop
table
db.dbo.tb_test
--保存删除表的时间
select
dt=getdate()
into
#
go
--在删除操作后,发现不应该删除表
db.dbo.tb_test
--下面演示了如何恢复这个误删除的表
db.dbo.tb_test
--首先,备份事务日志(使用事务日志才能还原到指定的时间点)
backup
log
db
to
disk='c:\db_log.bak'
with
format
go
--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
restore
database
db
from
disk='c:\db.bak'
with
replace,norecovery
go
--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
declare
@dt
datetime
select
@dt=dateadd(ms,-20,dt)
from
#
--获取比表被删除的时间略早的时间
restore
log
db
from
disk='c:\db_log.bak'
with
recovery,stopat=@dt
go
--查询一下,看表是否恢复
select
*
from
db.dbo.tb_test
/*--结果:
id
-----------
(所影响的行数为
0
行)
--*/
--测试成功
go
--最后删除我们做的测试环境
drop
database
db
drop
table
#
Ⅳ oracle被删除dbs如何查看操作日志
Oracle日志文件查看方法:
1、以sysdba权限用户登录数据库。
2、执行sql语句:select*fromv$logfile;
3、结果显示即为日志路径:
4、另外还有其他的操作日志可用以下两个sql语句查询:
select*fromv$sql;--(#查看最近所作的操作)select*fromv$sqlarea;--(#查看最近所作的操作)
Oracle日志的查看方法:
SQL>select*fromv$sql(#查看最近所作的操作)
SQL>select*fromv$sqlarea(#查看最近所作的操作)
Oracle数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。