如何恢复数据库到某一时间点的数据?

如何恢复数据库到某一时间点的数据?,第1张

恢复数据库到之前的某个时间点,必须要有日志备份

下面是一个使用日志的示例:

create

database

db1

go

alter

database

db1

set

recovery

full

go

backup

database

db1

to

disk='db1.bak'

with

init--首先要对数据库进行全备份,否则checkpoint会阶段inactive的日志(类似于simple

recovery)

go

use

db1

go

create

table

t(col

int)

go

---一些数据库 *** 作

---一些数据库 *** 作

---一些数据库 *** 作

--假设你在15点15分以后删除了这个表

drop

table

t

--如果想恢复这个表,需要对数据库进行日志备份

use

master

go

backup

log

db1

to

disk='db1.trn'

with

norecovery

go

---然后执行以下 *** 作

use

master

go

restore

database

db1

from

disk='db1.bak'

with

norecovery

go

restore

log

db1

from

disk='db1.trn'

with

recovery,stopat='2009-03-08

15:15:00'--这时,数据库恢复到15:15的状态。

使用Transact-SQL。1.连接到您要还原数据库的服务器实例。2.执行使用 NORECOVERY 选项的 RESTORE DATABASE 语句。如果部分还原顺序不包括任何 FILESTREAM 文件组,则不支持时间点还原。 可以强制该还原顺序以继续执行 *** 作。 但在 RESTORE 语句中省略的 FILESTREAM 文件组将永远无法还原。 若要强制执行时点还 原,请指定 CONTINUE_AFTER_ERROR 选项以及 STOPAT、STOPATMARK 或 STOPBEFOREMARK 选项,还必须在随后的 RESTORE LOG 语句中指定后面的三个选项。 如果指定 CONTINUE_AFTER_ERROR,则部分还原顺序将成功,但 FILESTREAM 文件组将不可恢复。3.还原上次差异数据库备份(如果有),而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。4.应用每个事务日志备份中相同的顺序在其中创建了它们,指定想要停止还原日志的时间 (RESTORE DATABASE database_name FROM WITH STOPAT = time , 恢复)。

恢复的方法是RMAN数据全备+增量备份+归档日志(+联机日志),或者RMAN数据全备+归档日志(+联机日志)。

比如你要恢复到 19号中午12点的,你首先要有一个19号12点之前的一个RMAN数据库全备,比如是18号12点的,然后必须有18号12点到19号12点的归档日志和联机日志(一般恢复到某个时间点的时候联机日志可能用不到)。先做restore恢复,然后recover指定时间点。


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

原文地址:https://54852.com/sjk/6838231.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存