知识大全 无日志恢复数据库
Posted 数据库
篇首语:不读书的人,思想就会停止。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 无日志恢复数据库相关的知识,希望对你有一定的参考价值。
SQL Server:无日志恢复数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
事情的起因 昨天 系统管理员告诉我 我们一个内部应用数据库所在的磁盘空间不足了 我注意到数据库事件日志文件XXX_Data ldf文件已经增长到了 GB 于是我决意缩小这个日志文件 经过收缩数据库等操作未果后 我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道: 无论如何都要保证数据库日志文件存在 它至关重要 甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的 我真是不知道我那时候是怎么想的?! 这下子坏了!这个数据库连不上了 企业管理器在它的旁边写着 (置疑) 而且最要命的 这个数据库从来没有备份了 我唯一找得到的是迁移半年前的另外一个数据库服务器 应用倒是能用了 但是少了许多记录 表和存储过程 真希望这只是一场噩梦! 数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 新建一个同名的数据库 再停掉sql server(注意不要分离数据库) 用原数据库的数据文件覆蓋掉这个新建的数据库 再重启sql server 此时打开企业管理器时会出现置疑 先不管 执行下面的语句(注意修改其中的数据库名) 完成后一般就可以访问数据库中的数据了 这时 数据库本身一般还要问题 解决办法是 利用 数据库的脚本创建一个新的数据库 并将数据导进去就行了 USE MASTER GO SP_CONFIGURE ALLOW UPDATES RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS = WHERE NAME= 置疑的数据库名 Go sp_dboption 置疑的数据库名 single user true Go DBCC CHECKDB( 置疑的数据库名 ) Go update sysdatabases set status = where name= 置疑的数据库名 Go sp_configure allow updates reconfigure with override Go sp_dboption 置疑的数据库名 single user false Go 方法二 事情的起因 昨天 系统管理员告诉我 我们一个内部应用数据库所在的磁盘空间不足了 我注意到数据库事件日志文件XXX_Data ldf文件已经增长到了 GB 于是我决意缩小这个日志文件 经过收缩数据库等操作未果后 我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道: 无论如何都要保证数据库日志文件存在 它至关重要 甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的 我真是不知道我那时候是怎么想的?! 这下子坏了!这个数据库连不上了 企业管理器在它的旁边写着 (置疑) 而且最要命的 这个数据库从来没有备份了 我唯一找得到的是迁移半年前的另外一个数据库服务器 应用倒是能用了 但是少了许多记录 表和存储过程 真希望这只是一场噩梦! 没有效果的恢复步骤 附加数据库 _Rambo讲过被删除日志文件中不存在活动日志时 可以这么做来恢复: 分离被置疑的数据库 可以使用sp_detach_db 附加数据库 可以使用sp_attach_single_file_db 但是 很遗憾 执行之后 SQL Server质疑数据文件和日志文件不符 所以无法附加数据库数据文件 DTS数据导出 不行 无法读取XXX数据库 DTS Wizard报告说 初始化上下文发生错误 紧急模式 怡红公子讲过没有日志用于恢复时 可以这么做: 把数据库设置为emergency mode 重新建立一个log文件 把SQL Server 重新启动一下 把应用数据库设置成单用户模式 做DBCC CHECKDB 如果没有什么大问题就可以把数据库状态改回去了 记得别忘了把系统表的修改选项关掉 我实践了一下 把应用数据库的数据文件移走 重新建立一个同名的数据库XXX 然后停掉SQL服务 把原来的数据文件再覆蓋回来 之后 按照怡红公子的步骤走 但是 也很遗憾 除了第 步之外 其他步骤执行非常成功 可惜 重启SQL Server之后 这个应用数据库仍然是置疑! 不过 让我欣慰的是 这么做之后 倒是能够Select数据了 让我大出一口气 只不过 组件使用数据库时 报告说: 发生错误: 未能在数据库 XXX 中运行 BEGIN TRANSACTION 因为该数据库处于回避恢复模式 最终成功恢复的全部步骤 设置数据库为紧急模式 停掉SQL Server服务; 把应用数据库的数据文件XXX_Data mdf移走; 重新建立一个同名的数据库XXX; 停掉SQL服务; 把原来的数据文件再覆蓋回来; 运行以下语句 把该数据库设置为紧急模式; 运行 Use Master Go sp_configure allow updates reconfigure with override Go 执行结果: DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系 已将配置选项 allow updates 从 改为 请运行 RECONFIGURE 语句以安装 接着运行 update sysdatabases set status = where name = XXX 执行结果: (所影响的行数为 行) 重启SQL Server服务; 运行以下语句 把应用数据库设置为Single User模式; 运行 sp_dboption XXX single user true 执行结果: 命令已成功完成 ü 做DBCC CHECKDB; 运行 DBCC CHECKDB( XXX ) 执行结果: XXX 的 DBCC 结果 sysobjects 的 DBCC 结果 对象 sysobjects 有 行 这些行位于 页中 sysindexes 的 DBCC 结果 对象 sysindexes 有 行 这些行位于 页中 syscolumns 的 DBCC 结果 ……… ü 运行以下语句把系统表的修改选项关掉; 运行 sp_resetstatus XXX go sp_configure allow updates reconfigure with override Go 执行结果: 在 sysdatabases 中更新数据库 XXX 的条目之前 模式 = 状态 = (状态 suspect_bit = ) 没有更新 sysdatabases 中的任何行 因为已正确地重置了模式和状态 没有错误 未进行任何更改 DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系 已将配置选项 allow updates 从 改为 请运行 RECONFIGURE 语句以安装 重新建立另外一个数据库XXX Lost; DTS导出向导 运行DTS导出向导; 复制源选择EmergencyMode的数据库XXX 导入到XXX Lost; 选择 在SQL Server数据库之间复制对象和数据 试了多次 好像不行 只是复制过来了所有表结构 但是没有数据 也没有视图和存储过程 而且DTS向导最后报告复制失败; 所以最后选择 从源数据库复制表和视图 但是后来发现 这样总是只能复制一部分表记录; 于是选择 用一条查询指定要传输的数据 缺哪个表记录 就导哪个; 视图和存储过程是执行SQL语句添加的 维护Sql Server中表的索引 在使用和创建数据库索引中经常会碰到一些问题 在这里可以采用一些另类的方法解决… 第一步:查看是否需要维护 查看扫描密度/Scan Density是否为 % declare @table_id int set @table_id=object_id( 表名 ) dbcc showcontig(@table_id) 第二步:重构表索引 dbcc dbreindex( 表名 pk_索引名 ) 重做第一步 如发现扫描密度/Scan Density还是小于 %则重构表的所有索引 并不一定能达 % dbcc dbreindex( 表名 ) cha138/Article/program/SQLServer/201311/22169相关参考
系统环境 操作系统WindowsServer机器内存M 数据库 OracleiR()forNT企业版 安装路径C:\\ORACLE 模拟现象 可通过重建数据文件来恢复前提是归档日
SQL>shutdownimmediate ORA:数据库未打开 已经卸载数据库 ORACLE例程已经关闭 SQL>startup ORACLE例程已经启动 TotalSy
这里是Oracle使用其硬线路的位置由于转储的数据文件不能恢复到与其他文件一致的位置所以可能存在中断的数据并且Oracle不允许正常打开数据库 第步设置未文档化的实例参数并打开数据库 在初始化
MySql通过二进制日志文件恢复数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Mysql配
系统环境 操作系统WindowsServer机器内存M 数据库 OracleiR()forNT企业版 安装路径C:\\ORACLE 模拟现象 先将数据库设置为归档模式
系统环境 操作系统WindowsServer机器内存M 数据库 OracleiR()forNT企业版 安装路径C:\\ORACLE 模拟现象 先将数据库设置为归档模式 SQL*
本文主要介绍了如何从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据的具体示例详细内容请大家参考下文 具体案例 一个磁盘损坏了并且丢失了一个数据库文件从一周前的热
步骤 修改trc文件(或者编写)你的createcontrolfile的脚本(或sql语句) 类似下面的例如保存到aaasql CREATECONTROLFILEREUSEDATABASES
知识大全 oracle数据库备份与恢复apieceofcake(4)
oracle数据库日志备份(windows平台) 本片是接上次的数据库在线备份进行数据库全备份后需要备份归档的日志文件 建立数据库备份的脚本 在上面建立的目录下建立如下的两个脚本 建立执行
Oracle重做日志文件损坏或丢失后的恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多网