怎样解决oracle数据库恢复处于回避恢复模式

完整数据库还原(简单恢复模式)
此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
完整数据库还原(简单恢复模式)
SQL Server 2014
数据库完整还原的目的是还原整个数据库。
整个数据库在还原期间处于脱机状态。
建议您不要从未知或不可信源附加或还原数据库。
这些数据库可能包含执行非预期 Transact-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误。
本主题内容:
中的“兼容性支持”一节。
如果只使用完整数据库备份,则只需还原最近的备份,如下图所示。
如果还使用差异数据库备份,则应还原最近的完整数据库备份而不恢复数据库,然后还原最近的差异数据库备份并恢复数据库。
下图显示了这一过程。
RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]
如果还打算还原差异数据库备份,则应使用 WITH NORECOVERY。
RESTORE DATABASE database_name FROM backup_device WITH RECOVERY
然后按顺序还原这些备份。
该示例说明数据库完整还原方案的还原序列中的关键选项。
“还原序列”由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。 将省略与此目的不相关的语法和详细信息。 在恢复数据库时,尽管 RECOVERY 选项是默认值,但为清楚起见,仍建议显式指定该选项。
--Make sure the database is using the simple recovery model.
ALTER DATABASE AdventureWorks2012 SET RECOVERY SIMPLE;
-- Back up the full AdventureWorks2012 database.
BACKUP DATABASE AdventureWorks2012
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FORMAT;
--Create a differential database backup.
BACKUP DATABASE AdventureWorks2012
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH DIFFERENTIAL;
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE=1, NORECOVERY;
--Restore the differential backup (from backup set 2).
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE=2, RECOVERY;
还原完整数据库备份
还原差异数据库备份
使用 SQL Server 管理对象 (SMO) 还原备份
您对此内容的反馈非常重要。请告诉我们您的想法。
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
开发人员中心MSSQL在简单的恢复模式下,为什么日志会持续增长 - MS SQLServer - 数据库技术 -
热门搜索:
您的位置: >>>MSSQL在简单的恢复模式下,为什么日志会持续增长
MSSQL在简单的恢复模式下,为什么日志会持续增长
[摘要]本文介绍MSSQL在简单的恢复模式下,为什么日志会持续增长,并提供简单的示例代码供参考。
英文原文:说明:这篇BLOG的原文标题为:A Race Condition in the Simple Recovery Mode: Why is my log autogrowing。其中,Race Condition 的字面意思为“竞态条件”,感觉不怎么通。但是,文中确确实实是在讲由于SQL SERVER 的其它线程比较繁忙而导致CHECKPOINT线程不能被及时的唤醒和完成工作而导致了日志的增长。翻译水平有限,大家多指教,谢谢。译文:“我的数据库工作在简单的恢复模式。不,我没有任何巨大的、长时间运行后者用于复制的事务日志,并且,我有足够数量的VLFs循环使用,准确的说有250个VLFs。为什么我的事务日志会保持持续增长呢?”正如SQL SERVER 联机丛书所记载的一样,当数据库工作在简单恢复模式的时候,在SQL SEVER唤醒检查点线程并运行的时候,它的事务日志被截断(即:所有的没有包含任何活动事务记录的虚拟日志被标记为可重用),而检查点线程在以下三种情况下会被唤醒,1.恢复的时间间隔阈值被足够多的日志记录超过。2.你手工运行了CHECKPOINT命令。3.事物日志已经达到了70%满。即使没有任何大型的,长时间运行或者用于复制的事物,对于一个运行在简单恢复模式的数据库来说,当CHECKPOINT进程不能被足够快的唤醒而及时的截断日志,填满日志空间或者在自动增长被启用的情况下导致日志的增长是非常可能发生的事情。例如:即使更改没有达到恢复间隔的阈值,但是,如果更改在日志70%空间被使用以后非常快,SQL SERVER 在日志空间被用尽以前没有足够的时间来运行CHECKPOINT以完成日志的截断。从某种意义上来说,日志空间是否会被用完(或自动增长)取决于下面两个条件之间的竞争状态:1. 如果SQL SERVER能够首先截断日志,日志空间将被释放且标记为可重用,那么,将不会自动增长或失败事物。2. 但是,由于数据改变的足够快以至于在日志被截断以前而用尽了日志的空间,这种情况也是可能发生的。让我们用一个脚本来实际的阐明这种行为。首先在一个测试数据库中运行一下脚本创建一个测试表并填充一些数据。测试数据库1.已经设置为简单的恢复模式。2.日志的大小固定为100M.3.日志文件的自动增长被禁用(因为观察日志空间被用完的错误比检查自动增长要容易)set nocount on
drop table test
create table test(i int, c char(1000))
declare @i int
set @i = 1
while @i & 10000
insert test values(@i, 'abc')
set @i = @i + 1
end为了观察这种资源竞争,运行一下脚本:set nocount on
declare @change_size int
set @change_size = 100 -- adjust this value
declare @i int
set @i = 1
while @i & 100
if @i % 2 = 0
update test set c = replicate('a', @change_size)
update test set c = replicate('b', @change_size)
select @i = @i + 1
end你可能需要多次调整变量@change_size的值,首先使用一个比较小的值(比如40)使脚本能够运行至结束,然后挑一个比较大的值(比如400)使该脚本运行失败。请尽量使该脚本在运行中途失败。在我的几次测试中,当@change_size=100时,成功运行了上面的脚本并且在运行过程中日志的空间没有被填满。但是当我将@change_size改为120时,我得到了9002的错误信息非常准确的告诉我数据库的事务日志已满。当我将变量@change_size设置为116时,有时候脚本会成功结束,而有时候会失败。但这只是一个大致的阈值,在一个不稳定的测试及此测试环境下它是不精确的。实际上,在我的其它一些测试中,这个阈值低至50。这中情况说明,SQL SERVER 在有些时候能够足够快的截断日志,而有时候却不能。值得注意的是,尽管上面的两个UPDATE语句的每一个都更新了9999行,由修改而占用的日志空间控制的比较好,大约在2-3M或者总日志空间2%-3%.这并不是一个很小的事务,尽管它也不是一个大的,长时间运行的事务。对于一个工作在简单恢复模式的数据库来说,对我们有什么启示呢?首先,在事务日志中预留足够的空间。这可能意味着你必须让SQL SERVER 有机会能唤醒CHECKPOINT 进程来及时的截断事务日志。其次,你可能必须手工的发出BACKUP LOG WITH NO_LOG命令来帮助它。注意:在SQL SERVER 2008中,BACKUP LOG WITH NO_LOG 和BACKUP LOG WITH TRUNCATE_ONLY这两个命令都已经被移除。如果您确实需要手工的截断事务日志,可能您不得不发出CHECKPOINT命令,而这个命令除了截断事务日志以外,还将做很多其它事情。
相关文章:
上一篇:下一篇:
24小时排行
Copyright © 2010 - 2011 9SSSD. All Rights Reservedsql数据库损坏修复&数据库质疑&数据库处于回避恢复模式的解决办法
转载<img src="/blog7style/images/common/sg_trans.gif" real_src ="/hi/jx/j_0015.gif" STYLE="margin-bottom: 8 clear: max-width: 758 vertical-align:"
ALT="sql数据库损坏修复&数据库质疑&数据库处于回避恢复模式的解决办法"
TITLE="sql数据库损坏修复&数据库质疑&数据库处于回避恢复模式的解决办法" />
1、update sysdatabases set status =0 where name = 'fdshop'
把状态重置为0,重启库
2.修复的话,先将将数据库置为单用户模式,
sp_dboption 'fdshop','single user','true'
如果报错,可能有用户正在使用库,在进程管理里面杀掉sa用户进程,重新执行,直到成功
尝试对其进行不丢失数据的修复:DBCC CHECKDB('fdshop',REPAIR_REBUILD)
尝试对其进行可能丢失数据的修复:DBCC CHECKDB('fdshop',REPAIR_ALLOW_DATA_LOSS)
3.将数据库置为多用户模式,
sp_dboption 'fdshop','single user','false'
1.如果用户库无法启动,则打开sql server分析查询器,执行以下命令
sp_configure 'allow updates','1'
reconfigure with override
将这个数据库置为紧急模式:
update sysdatabases set status =-32768 where name = 'fdshop'
2.Zach的灵验脚本
Zach说他每次遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:
======================================================
--before running any script, run the following to set the
master database to allow updates
USE master
sp_configure @#allow updates@#, 1
RECONFIGURE WITH OVERRIDE
--Run the following script
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = @#Database_Name@#
--Run the following script
exec SP_resetstatus Database_Name
--stop and start the MSDTC at this stage
--After the procedure is created, immediately disable
updates to the system tables:
exec sp_configure @#allow updates@#, 0
RECONFIGURE WITH OVERRIDE
=====================================
从上面可以看出,处理置疑的基本步骤还是我那篇文章中说的(注意我使用的字体颜色):
执行 sp_configure 以允许对系统表进行更新,然后用 RECONFIGURE WITH OVERRIDE
语句强制实施该配置;
数据库重置紧急模式;
执行sp_resetstatus关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项(只有系统管理员才能执行)。执行该过程后,立即重启
SQL Server服务;
执行 sp_configure 以禁止对系统表进行更新,然后用 RECONFIGURE WITH OVERRIDE
语句强制实施该配置。
status ^ 256的意思就是:
Description
SQLDMODBStat_Suspect
Database integrity is suspect for the referenced database.
不同的是,有时候丢失了数据库日志文件,额外需要以下步骤:
? 把应用数据库设置为Single User模式;
? 做DBCC CHECKDB;
但是几位网友的实践结果就是这个DBCC CHECKDB执行失败。一位网友yang说:“但是 DBCC
CHECKDB就是执行不了,总是说“该数据库处于回避恢复模式”。我已经试了很多次了,就是改变不了这个状态。”
还有一位Rui执行DBCC CHECKDB时报错:“Server: Msg 943, Level 14, State 1, Line
1 Database @#his_yb@# cannot be opened because its version (539) is
later than the current server version (515).”
对于Yang,可能他没有一步一步做,。我的切身体会是,把应用数据库设置为Single User模式后就可以做DBCC
CHECKDB。之后呢,也许SQL Server重启后自动检查数据库是否正常。但是数据应该是可以读出来的,至少可以被DTS
Wizard读出来的。这时候的数据库还存在问题,比如我的组件使用数据库时,报告说:“发生错误:-,未能在数据库
@#XXX@# 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”
对于Rui,他碰到的那个错误
Server: Msg 943, Level 14, State 1, Line 2
Database @#XXXX@# cannot be opened because its version (536) is
later than
the current server version (515).
这表明Rui正试图:
从一个SQL Server 2000(version 539,536之类的)的数据库备份恢复到一个SQL Server
把一个SQL Server 2000(version 539,536之类的)的数据库attach到一个SQL Server
这是不允许的。如果你必须使用这个SQL Server 2000的数据备份,那么请您首先把这个备份倒入SQL Server
2000,最后用DTS把数据库从SQL Server 2000上transfer到SQL Server 7.0上。
--允许进行系统表的操作
use master
exec sp_configure 'allow update',1 reconfigure with override
--将数据库设置成紧急模式
update sysdatabases set status=-32768 where
dbid=DB_ID('yszt')
--创建日志文件
dbcc rebuild_log ('yszt','c:\Program Files\Microsoft SQL
Server\MSSQL\backup\yszt_log.ldf')
--恢复数据库的紧急模式
update sysdatabases set status=0 where name='yszt'
--取消数据库的置疑标识
restore database yszt with recovery
--恢复系统表操作的设置
exec sp_configure 'allow update',0 reconfigure with override
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。【什么叫“回避恢复”模式】-突袭网
12:58:19【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"什么叫“回避恢复”模式"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"什么叫“回避恢复”模式"相关的详细问题如下:RT,我想知道:什么叫“回避恢复”模式===========突袭网收集的解决方案如下===========
解决方案1:AIS13&#39;ALLOW UPDATES&#39,相当于2008的紧急状态   USE MASTER GO SP_CONFIGURE &#39,1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=&#39,数据库修复完之后; Go恢复正常状态把32768改为28,1 RECONFIGURE WITH OVERRIDE 这条语句是允许修改系统目录;ALLOW UPDATES&#39;SQL2000的。 SP_CONFIGURE &#39,确实有这个状态;
================可能对您有帮助================
管理员可以选择在运行时对系统的影响最小,同时又能满足还原要求的备份过程。管理员还根据资源要求选择数据库的恢复模式。恢复模式将针对完全恢复数据的重要程度来平...=========================================== 天秤需要慢慢相处,因为秤子是个被动的星座,慢热的星座,放不开的星座,认识时间越久对你越好。如果只是你喜欢秤子,秤子却不喜欢,频频接触的结果则是会对你越来越冷淡。...===========================================刷图学命中&& PK学命中和回避& HP回复不学&===========================================刷图就都不用加~点回避还不如点命中!还有,你不是有死亡抗拒么?!===========================================HP回复觉得就么必要咯 力量 独立 暴击 命中 移动 属强满 回避和属性强化看你喜欢满那个===========================================所以,希望你宽容一些,不要发火,我才敢告诉你。"那朋友听罢,只得说:"你有什么话就请讲... 双方重新恢复了友谊。上述两人--严子陵与孙少达,何以后世总称道他们对友谊的回避是...===========================================破坏王、弱点特效、精灵加护、砥石使用高速化、雷耐弱。打起来还是蛮轻松的。至于说躲猛冲,主要还是有个提前意识。否则轰龙那么大只,就算配出回避性能也不一定躲得掉...===========================================遇到这种问题,如果 sql 服务器正常情况下,我一般是恢复数据库。其次是更改用户。=========================================== 七、回避的救济: 《刑诉解释》第28条:被决定回避的人员对决定有异议的,可以在恢复庭审前申请复议一次;被驳回回避申请的当事人以及法定代理人对决定有异议的,可以...===========================================刷图加 智力和精神 一个加伤害一个加回蓝和蓝上限 要是精神 500以上MP恢复也可以 PK加 体力和精神 貌似加力量也有用不过貌似点不够 啊属性强化也不错===========================================
12345678910处于绕道复原模式(回避恢复模式)的数据库,如何修正为正常状态
[问题点数:100分,结帖人starfork]
处于绕道复原模式(回避恢复模式)的数据库,如何修正为正常状态
[问题点数:100分,结帖人starfork]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2011年12月 总版技术专家分月排行榜第三2011年9月 总版技术专家分月排行榜第三
2011年6月 MS-SQL Server大版内专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第三2011年9月 总版技术专家分月排行榜第三
2011年6月 MS-SQL Server大版内专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第三2011年9月 总版技术专家分月排行榜第三
2011年6月 MS-SQL Server大版内专家分月排行榜第一
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 数据库删除后恢复 的文章

 

随机推荐