怎么使用数据库恢复程序?如何恢复数据库文件呢

本文目录
怎么使用数据库恢复程序
如果是SQL
SERVER的话两种方式:
一\数据库物理文件和日志文件都有的话,在企业管理器上单击右键--》附加数据库--》选择数据库物理文件(.mdf)文件--》设置附加后的数据库名--》确认就OK了
二\使用.bak备份文件恢复:在企业管理器下数据库上单击鼠标右键--》还原数据库--》选择备份文件--》设置恢复数据库名,单击确认就可以了.
如何恢复数据库文件呢
要还原数据库首先得后有数据库的备份文件。
如果SQLSever2000没有这个数据库,你先建立一个空数据库,记住这个数据库的数据文件路径和日子文件路径,然后右键数据库,点还原-选从设备-选择设备(就是选数据库的备份文件)-点选项-把刚才记的数据库文件路径和日志文件路径对应下面移至物理文件名弄好,选择在现有数据库库上强制还原,点确定就OK了
数据库删除数据了怎么恢复
数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:
1.删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。
2.删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件。
3.如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。
数据库恢复可以用哪些方法实现
数据库恢复的三种方式
数据库可能因为硬件或软件(或两者同时)的故障变得不可用,不同的故障情况需要不同的恢复操作。我们必须决定最适合业务环境的恢复方法。在数据库中恢复有3种类型或方法,即应急(crash)恢复、版本(version)恢复和前滚(rool forward)恢复。
应急恢复
应急恢复用于防止数据库处于不一致或不可用状态。数据库执行的事务(也称工作单元)可能被意外中断,若在作为工作单位一部分的所有更改完成和提交之前发生故障,则该数据库就会处于不一致和不可用的状态。这时,需要将该数据库转化为一致和可用的状态。
为此,需要回滚未完成的事务,并完成当发生崩溃时仍在内存中的已提交事务。如在COMMIT语句之前发生了电源故障,则在下一次重新启动并再次访问该数据库时,需要回滚到执行COMMMIT语句前的状态。回滚语句的顺序与最初执行时的顺序相反。
版本恢复
版本恢复指的是使用备份操作期间创建的映象来复原数据库的先前版本。这种恢复是通过使用一个以前建立的数据库备份恢复出一个完整的数据库。一个数据库的备份允许你把数据库恢复至和这个数据库在备份时完全一样的状态。而从备份建立后到日志文件中最后记录的所有工作事务单位将全部丢失。
前滚恢复
这种恢复技术是版本恢复的一个扩展,使用完整的数据库备份和日志相结合,可以使一个数据库或者被选择的表空间恢复到某个特定时间点。如果从备份时刻起到发生故障时的所有日志文件都可以获得的话,则可以恢复到日志上涵盖到的任意时间点。前滚恢复需要在配置中被明确激活才能生效。
mysqldump恢复数据库问题,很纠结啊
通用规律只有使用 --all-databases (-A) 会 ERROR 1356,那就看看他到底备份了什么东西。于是喊上同事一起 less 看了下,上下扫了两眼。突然发现:1. 备份 SQL 文件里 DROP 掉了 mysql.proc;2. 后CREATE了一个新的 mysql.proc;3. LOCK TABLES 和 UNLOCK TABLES 中间居然没有备份 CREATE ROUTINE 任何数据?这不就是相当于每次导入全备都给我一个没有任何 sys schema routines 的全新 mysql.proc 表?那这不就异常的尴尬?
---- Table structure for table `proc`--
---- Dumping data for table `proc`-
真相大白在官方文档【sys-schema-usage】官方文档明确的告诉我们不会备份 sys 库。但在使用 mysqldump 在执行 --all-databases 会清空 mysql.proc 导致 sys 无法正常使用;这是一个 BUG,并且只存在于 MySQL 5.7.x !
1、mysql_upgrade install or upgrade sys schema
这个方案适用于 sys 库已经因为 mysqldump 导入而损坏的情况下使用。
注意:mysql_upgrade 在修理 sys 库的同时,还修理 mysql 库和用户库表(期间加锁且速度一般),有极小可能会误伤;使用 mysql_upgrade 的时候要加上 --upgrade-system-tables,不然会扫描用户库表。
2、全备时同时备份 sys 库
这个方案适用于需要还原的数据库,sys 库也不太正常的情况下使用;在全备后额外再备份一份 sys 库用于修复。
注意:不适用于做主从时使用它。
3、使用 databases 全备
这个方案适用于所有场景的全备需求,100% 安全。
4、使用 mysql-sys 开源代码
如果你的数据库 sys 全部中招了,又是生产库。那你只能用这个方法;
mysql-sys:
如何恢复数据库
可是提交到服务器之后,一切显地都无比陌生。因为不熟悉SQL,准确来说就只会点Select,Update,Delete,Insert而已。昨天不小心误删了一张数据不多但是不在人工处理范围内的一张表内的数据。因为知道SQL Server是有日志这种东西的,事后我表现地无比淡定,在事发一个小时以内。一个小时之后,我发现我无法掌控这一事件了。上网查找了恢复数据的办法。有必要啰嗦一下。 问题1:无论是远程端还是服务器端,都无法对数据库(假设数据库叫Test)进行除‘增删查改’的其它操作,譬如分离,脱机,还原...错误提示是e.g.1 “无法分离 Test 数据库 因为它当前正在使用。”e.g.2 “因为数据库正在使用,未获得对数据的排他访问权,操作异常终止”反正嘛,就是说你丫不能阻止别人的访问。可我们就是要这样做的...只好跟它说拜拜了。 说拜拜的方法就是关掉所有访问数据库Test的进程。createproc killspid (@dbnamevarchar(20)) asbegindeclare@sqlnvarchar(500) declare@spidintset@sql=’declare getspid cursor for select spid from sysprocesses where dbid=db_id(’’’+@dbname+’’’)’exec(@sql) open getspid fetchnextfrom getspid into@spidwhile@@fetch_status《》-1beginexec(’kill ’+@spid) fetchnextfrom getspid into@spidendclose getspid deallocate getspid end--用法use master exec killspid ’数据库名’PS:代码我是这样理解的,定义一段杀死访问数据库进程的存储过程。写一段获取进程ID的代码,循环杀死每一个进程。最后调用存储过程。虽然不了解存储过程,但是意思就是这样的吧。 问题2:没有备份数据库,那该如何恢复数据呢有个软件叫做Log Explorer 这个东西可以根据数据库的日志回到过去的任何一个时刻。View Code Log Explorer for SQL Server 是个好东西,但是这根本无法解决我的问题。数据库在服务器端,学校根本不会让我安装一个软件在服务器上面。而且我证实过,这个软件必须要在服务器端装服务器端软件的。所以,这个对于我来说,是泡汤的。但是不代表这不是一个利器。 最后我用了一个很蛋疼的方法解决了。1.分离数据库,备份一个Test;2.将数据库附加回去,用自带的恢复方式恢复到一个很久以前的状态;3.将需要的那张表复制到备份的那个数据库;4.将备份的那个数据库挂回去,原数据库删了。 这是一个很蛋疼而且碰巧那张表没被改的方法。头一次知道DBA的重要性。我的方法是一个很偶然的东西,希望大家分享一下真正能解决恢复问题的办法。当然,每隔一段时间备份是绝对没有错的。 方法 另外发现一个比较有技术性的可行的方法 1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进进行一次日志备份 (如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)backuplog dbName todisk=’fileName’----注意:是日志备份! 2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢复 restoredatabase dbName fromdisk=’fileName’with norecovery 3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻 restorelog dbName fromdisk=’fileName’with stopat=’date_time’ 完整代码View Code 经过验证,这才叫有技术性!我那纯属“邓艾的屯‘田’”小孩子过家家。。。
oracle 用数据文件恢复数据库
在oracle系统中的文件名后缀被文件本身是没有什么作用的,他只是便于用户领会文件的作用/含义等,便于oracle系统更加方便的去管理文件。在创建一个文件的时候,可以任意指定一个后缀,例如:sql》
create
tablespace
test
datafile
’/oracle/oradata/hello/test.sql’
size
20mtablespace
created.这样也能成功,但是我相信没有人会这样指定一个文件名。

更多文章:
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00






