oracle中为什么不能恢复到备份的时间

oracle中为什么不能恢复到备份的时间,第1张

Oracle数据库不能恢复到特定的时间是因为Oracle的redo log并不保存每一次事务 *** 作,而是将所有 *** 作放在一起,当redolog文件被重写或者被标记为inactive时,数据库就不能复原到特定时间点,只能复原到执行最后一次备份之前的数据状态。

Server2016还原时间点的方法:

发生误删时,记录删除时间,如16:23

在服务器所有程序中打开SQL Server Management Studio并连接数据库实例

选择要恢复的数据库,右键-“任务”-“备份”

在d出的备份对话框中备份类型选择“事务日志”,并添加备份文件“log.trn”

点击确定完成事务日志备份

在需要恢复数据的库上右键“任务”-“还原”-“数据库”

打开数据库还原页面,检查源数据库及目标数据库是否正确,检查完整备份及日志备份是否完整,并点击“时间线”进入时间线选择

在d出的时间线对话框中选择“特定日期和时间”,并将时间设置为误删之前时间点,如16:20

再次检查目标数据库,及备份集信息无误,点击“选项”进入选项卡,勾选“覆盖现有数据库”及“关闭现有连接”复选框,然后确定,直至还原成功

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

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

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的状态。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存