当前位置:首页 » 操作系统 » 数据库日志文件恢复

数据库日志文件恢复

发布时间: 2023-02-21 09:50:57

‘壹’ 日志文件已损坏,如何修复sqlSERVER2000数据库文件

具体方法有3种。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。
第二步:
1.收缩特定数据库的所有数据和日志文件,执行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。
2.收缩一次一个特定数据库中的数据或日志文件,执行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收缩的文件的标识
(id)
号,若要获得文件
id,请使用
file_id
函数或在当前数据库中搜索
sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc
shrinkfile
将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.
方法二:
第一步:
先备份整个数据库以备不测

第二步:
备份结束后,在query
analyzer中执行如下的语句:
exec
sp_detach_db
yourdbname,true
--卸除这个db在mssql中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在query
analyzer中执行如下的语句:
exec
sp_attach_single_file_db
yourdbname,'
d:\mssql\data\yourdbname_data.mdf
'
--以单文件的方式注册该db,如果成功则mssql将自动为这个db生成一个500k的日志文件。
方法三:
1.
进入企业管理器,选中数据库,比如demo
2.
所有任务->分离数据库
3.
到数据库文件的存放目录,将muonline_log.ldf文件删除,以防万一,你可以拷出去
4.
企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
5.
记得数据库重新附加后用户要重新设置一下。
如果以后,不想要它变大:
sql2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用sql语句:
alter
database
数据库名
set
recovery
simple

‘贰’ 丢失归档日志文件后数据库应当如何恢复[1]

本文主要介绍了如何从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据的具体示例 详细内容请大家参考下文

具体案例

一个磁盘损坏了并且丢失了一个数据库文件 从一周前的热备转储数据文件 可是丢失了几个归档日志文件 但是有问题的数据文件包含了最重要的表 采用什么办法才能挽救数据呢?

解决方法

每个数据库管理员都知道这是有问题的 一定会丢失数据 因为某些事务丢失了 问题是会丢失多少数据?Oracle使用硬线路位置并且由于存在完整性约束问题 因此不允许正常打开数据 但是如果使用非常规的方法让Oracle删除其硬线路属性 那么应该能够提取尽可能多的数据 而通常这会比损失全部数据要好很多

通常假如仅仅丢失了堆表的索引 或者某些能够很容易重建的数据 那么最好的方法应该是删除表空间并重建这些对象然后重新输入 但是如果丢失的数据文件包含了重要数据并且很难恢复 而且只有前一次的备份却又丢失了某些归档日志 那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间

具体步骤如下

对当前拥有的数据进行一个冷备;

转储丢失的数据库文件备份并应用可以应用的日志;

设置未文档化的初始化参数 其允许你在当前状态打开数据库;

执行exp并提取全部可以从有问题的表空间提取的数据;

从先前的冷备转储数据库;

使毁坏的数据文件offline;

执行exp并提取第 步没有提取的额外数据;

在一次从冷备转储;

删除有问题的表空间;

重建有问题的表空间;

使用第四步和第七步提取的数据重建数据;

使用案例描述 ORDTAB表空间的一个数据文件ordtab dbf毁坏 其包含很多

ORDERS表的分区 数据文件热备于July July —至今的某些归档日志丢失

第 步 备份数据库

第 步的任务是冷备当前拥有的任何数据文件 在线重做日志 和控制文件 如果丢失了一个/多个数据文件但是数据库仍然是open的 那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存

创建备份后 在关闭数据库之前 备份一下控制文件

ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;

然后打开备份的控制文件 删除第一个#之上的所有行 并删除 RECOVER DATABASE… 到文件结尾的全部

第 步 转储丢失的数据库文件备份并应用日志;

这一步应该转储备份 并应用日志到直到无法在前向滚动 此时如果尝试正常打开数据库 将会得到ORA : must use RESETLOGS or NORESETLOGS option for database open错误

如果尝试执行ALTER DATABASE OPEN RESETLOGS 将会得到ORA 错误 ORA : online backup of file %s needs more recovery to be consistent

lishixin/Article/program/SQL/201311/16189

‘叁’ 如何从数据库的完整日志模式还原误删除的数据

从数据库的完整日志模式还原误删除的数据的解决办法

  • SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:

  • 1. 至少有一个误删除之前的数据库完全备份。

  • 2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

  • 针对这两个前提条件,会有三种情况:

  • 情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。

  • a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY

  • b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE

  • c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY

  • 情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。

  • 情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。

  • 我现在面临的是第二种情况,需要找第三方工具。

  • 开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。

  • 后来找的是SQL Log Rescue,也不支持SQL Server 2008。

  • 接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。

  • 最终在officerecovery.com上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。

  • 下面分享一下用Recovery for SQL Server进行恢复的操作步骤:

  • 1. 运行Recovery for SQL Server

  • 2. 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)

  • 3. Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。

  • 4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。

  • 5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。

  • 6. 点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。

  • 7. Next,选择被恢复数据存放的目标数据库。

  • 8. Next, 选择 Import availiable data from both database and log files

  • 9. Next, Next, 然后就完成数据的恢复!

小刚SEO为你解答

‘肆’ 用日志文件恢复事务的过程

日志文件恢复事务前提条件:备份必须按照其创建顺序进行恢复。 在恢复特定的事务日志备份之前,必须先还原下列以前备份,而不回滚未提交的事务,即 WITH NORECOVERY。日志文件恢复事务步骤:1、连接到相应的 Microsoft SQL Server 数据库引擎实例之后,在对象资源管理器中,单击服务器名称以展开服务器树;2、展开“数据库”,然后根据数据库的不同,选择用户数据库,或展开“系统数据库”,再选择系统数据库;3、右键单击该数据库,指向“任务”,再指向“还原”,然后单击“事务日志”,这将打开“还原事务日志”对话框;4、在“常规”页上的“数据库”列表框中,选择数据库名称。 仅列出处于还原状态的数据库;5、若要指定要还原的备份集的源和位置,请单击以下选项之一:①从数据库以前的备份从下拉列表中选择要还原的数据库。 此列表仅包含已根据 msdb 备份历史记录进行备份的数据库;②从文件或磁带单击浏览 (...) 按钮以打开“选择备份设备”对话框。 在“备份介质类型”框中,从列出的设备类型中选择一种。 若要为“备份介质”框选择一个或多个设备,请单击“添加”。将所需设备添加到“备份介质”列表框后,单击“确定”返回到“常规”页;6、在“选择要还原的事务日志备份”网格中,选择要还原的备份。 此网格列出了选定数据库可以使用的事务日志备份。只有在日志备份的“第一个 LSN”大于数据库的“最后一个 LSN”时,此日志备份才可用。日志备份按照它们所包含的日志序列号 (LSN) 的顺序排列,并且也必须按照这种顺序还原;7、选择下列项之一:①时间点保留默认值(“最近状态”);或者通过单击“浏览”按钮,打开“时点还原”对话框,从中选择特定的日期和时间;②标记的事务将数据库还原为以前标记的事务。 选择此选项会启动“选择标记的事务”对话框,从而显示一个网格,列出选定事务日志备份中可以使用的标记的事务;默认情况下,将一直还原到(但不包含)标记的事务为止。 若要同时还原标记的事务,请选择“包含标记的事务”。8、对于“恢复状态”选项,请指定还原操作之后的数据库状态即可。

‘伍’ 急求!sql2005数据库数据覆盖,如何 使用日志恢复数据库


使用日志恢复数据库
是几个条件,
首先,数据库是完整恢复模式
其次,以前做过完整备份
再次,在做过完整备份后,没有清过日志
满足条件后,可以如下操作,
1、备份一个当前的数据库日志,
2、用完备恢复,with
norecovery
3、依次恢复以前备份的日志文件(不包含本次备份的)
with
norecovery
4、使用本次备份的日志文件,使用stop
at
,恢复到覆盖前的时间点。

热点内容
oracle存储过程时间 发布:2025-08-06 03:10:49 浏览:164
linux命令在哪 发布:2025-08-06 03:10:19 浏览:662
如何下载安卓版街霸5 发布:2025-08-06 03:01:20 浏览:403
名爵3存储卡怎么放车上 发布:2025-08-06 02:57:08 浏览:184
访问瑞士 发布:2025-08-06 02:38:44 浏览:128
搭路服务器怎么建 发布:2025-08-06 02:19:16 浏览:456
ram中存储的数据在断电后丢失 发布:2025-08-06 02:17:34 浏览:418
苹果4和安卓手机卡有什么区别 发布:2025-08-06 02:16:40 浏览:683
如何游戏编程 发布:2025-08-06 02:16:06 浏览:149
scala编程思想 发布:2025-08-06 01:57:01 浏览:217